
document.writeln('<script type="text/javascript" charset="shift_jis" src="js/jkl-parsexml.js"></script>');
//document.writeln('<script type="text/javascript" charset="shift_jis" src="js/uAgent.js"></script>');
document.writeln('<script type="text/javascript" charset="shift_jis" src="js/extension.js"></script>');
document.writeln('<script type="text/javascript" charset="shift_jis" src="js/elemProperty.js"></script>');
document.writeln('<script type="text/javascript" charset="shift_jis" src="js/SetHttpRequest.js"></script>');


nameArray = new Array();
nameArray = {'div' : "itemlist_", 'cart' : "blind_cartitem", 'popup' : "blind_popup", 'a' : "itemlista_", 'img' : "itemlistimg_", 'form' : "itemlistform_", 'button' : "itemlistbutton_"};


config = new Array();
processValue = 0;
startflag = 0;
scrollFlag = 0;

timerIdArray = new Array();

	itemsArray['ContentOfProcessing']['details'] = null;

//maxitemid=0;
itemIdArray = new Array('clickedItemId', 'clonePageItem', 'cloneCartItem', 'clickedCartItem');

cartPageElemIdArray = new Array('newPage', 'newCart', 'delCart');
cartPageElemIdArray['newPage'] = new Array();
cartPageElemIdArray['newCart'] = new Array();
cartPageElemIdArray['delCart'] = new Array();


defaultCartItem =0;
check = 0;
if (defaultCartItem) {
	itemsArray['cart'][0] = {'id' : "aaa", 'image' : "images/nowprinting.jpg", 'name' : "あああ", 'price' : "100", 'num' : "1", 'info' : "テスト１"};
	itemsArray['cart'][1] = {'id' : "bbb", 'image' : "images/nowprinting.jpg", 'name' : "いいい", 'price' : "200", 'num' : "2", 'info' : "テスト２"};
	itemsArray['cart'][2] = {'id' : "ccc", 'image' : "images/nowprinting.jpg", 'name' : "ううう", 'price' : "300", 'num' : "3", 'info' : "テスト３"};
}

window.onscroll = function() { judgeDoScroll(document.documentElement.scrollTop); }

	function DoLoad() {
		document.getElementById('cartitems').style.borderBottom = "0px solid #009900";
		xmlRequest("js/config.xml", setParameter);
		elemProp = new elemProperty();
		
		hReq= new SetHttpRequest();
		
		setStyle();
		
		addEvent();
	}
	
	function DoResize() {
		//カートの高さ変更
		elemProp.fixedTime(requestInfoOfCartSizeChange(1));
	}
	function xmlRequest(argUrl, argCallBack) {
		http = new JKL.ParseXML(argUrl);
		http.async(argCallBack);
		http.parse();
	}
	function setParameter(argXml) {
		config = argXml['millet']['config'];
		scrollFlag = 1;
		judgeDoScroll(document.documentElement.scrollTop);
		
		if (itemsArray['cart'].length > 0) {
			var myStr = "";
			
			//カート合計の再計算
			cartDataManagement("sample", "regulatedValue");
			
			//itemsArray['cart']に入っているデータをカートに入れる
			for (var i=0; i<itemsArray['cart'].length; i++) {
				cartPageElemIdArray['newCart'][itemsArray['cart'][i]['id']] = 0;
				myStr += "i = " + i + "\nid = " + itemsArray['cart'][i]['id'] + "\n\n";
			}
			exitAnimation('new');
		} else {
			//カート合計の再計算
			cartDataManagement("sample", "regulatedValue");
			exitAnimation('new');
		}
	}
	
	
	/**************************************************************************************************
		エレメントにスタイルを指定
	**************************************************************************************************/
	function setStyle() {
			//購入ボタンのスタイル設定
		for (var i=0; i<itemsArray['page'].length; i++) {
			var myName = 'itemlistbutton_' + itemsArray['page'][i]['id'];
			document.getElementById(myName).style['cursor'] = 'hand';
		}
	}
	
	
	/**************************************************************************************************
		エレメントにイベントを指定
	**************************************************************************************************/
	function addEvent() {
		for (var i=0; i<itemsArray['page'].length; i++) {
			var myId = itemsArray['page'][i]['id'];
			var myName = nameArray["button"] + myId;
			document.getElementById(myName).onclick = function (){ startRoutine(this.id, 'new'); }
		}
	}
	
	
	/**************************************************************************************************
		購入・削除・追加・個数変更処理の開始
	**************************************************************************************************/
	function startRoutine(argId, argType, argFlag) {
		if (itemsArray['ContentOfProcessing']['details'] != null) {
			if (argFlag != 1) {
			var myCount = 0;
			for (var key in timerIdArray) {
				if (key != "start") {
				clearTimeout(timerIdArray[key]);	//アニメーション停止
				}
			}
			processValue = 0;
			exitAnimation(itemsArray['ContentOfProcessing']['details']);	//アニメーション強制終了処理
			}
			timerIdArray['start'] = setTimeout(function () { startRoutine(argId, argType, 1); }, 10);
			
		} else {
			fixCart();
			clearTimeout(timerIdArray['start']);
			
			if (argType == 'new') {
				argId = argId.replace(nameArray["button"], "");
				itemIdArray['clickedItemId'] = argId.replace(nameArray["button"], "");
				
			} else if (argType == 'del') {
				argId = argId.parentNode.parentNode.id;
				argId = argId.replace(nameArray["cart"]+"_copy", "");
				itemIdArray['clickedItemId'] = argId.replace(nameArray["cart"]+"_copy", "");
				
			} else if (argType == 'changeNum') {
				var myId = argId;
				argId = argId.replace(nameArray["cart"]+"_copy", "");
				var myElem = document.getElementById(myId).childNodes[4].firstChild.childNodes[6];
				if (isNaN(myElem.value) || !(myElem.value) || myElem.value == 0 || myElem.value.match(/^0/)) {
					var myNum = parseInt(checkCart(argId));
					myElem.value = itemsArray['cart'][myNum].num;
				}
			}
			
			//カートのデータを再計算
			var myArray = cartDataManagement(argId, argType);
			var myType = myArray[0];
			var myCount = myArray[1];
			
			if (myType == "none" || argType == 'changeNum') {
				return;
			}
			
			if (myType == 'new') {
				document.getElementById('cartitems').style.borderBottom = "2px solid #009900";
				//購入ボタンをクリックした商品IDを取っておく
				cartPageElemIdArray['newPage'][argId] = 0;
				cartPageElemIdArray['newCart'][argId] = 0;
				itemsArray['ContentOfProcessing']['details'] = 'new';
				newPurchase(argId, 0);	//新規購入処理
				
			} else if (myType == 'add') {
				document.getElementById('cartitems').style.borderBottom = "2px solid #009900";
				itemsArray['ContentOfProcessing']['details'] = 'add';
				addPurchase(argId, myCount, 0);	//追加購入処理
				
			} else if (myType == 'changeNum') {
				myElem.setAttribute('value', myElem.value);
				exitAnimation(itemsArray['ContentOfProcessing']['details']);	//アニメーション強制終了処理
				
			} else if (myType == "del") {
				//削除ボタンをクリックした商品IDを取っておく
				cartPageElemIdArray['delCart'][argId] = 1;
				itemsArray['ContentOfProcessing']['details'] = 'del';
				deleteItemFromCart(argId, 0);
			
			}
			
			
			
			if (check && argType != "del") {
				argId = parseInt(argId);
				var myTimer = 0;
				if (myType == 'new') {
					myTimer = 500;
				} else if (myType == "del") {
					myTimer = 500;
				}
				
				if (argId < itemsArray['page'].length -1) {
					argId ++;
					if (argType == 'new') {
						argId = nameArray["button"] + argId;
					} else if (argType == 'del') {
						argId = nameArray["cart"] + "_copy" + argId;
						argId = document.getElementById(argId).childNodes[4].childNodes[1];
					}
					timerIdArray['start'] = setTimeout(function () { startRoutine(argId, argType); }, myTimer);
				} else {
					clearTimeout(timerIdArray['start']);
				}
			}
		}
	}
	
	
	/**************************************************************************************************
		追加購入処理
	**************************************************************************************************/
	function addPurchase(argId, argCount, argFlag) {
		if (!argFlag) {
			processValue = 0;
			fixCartArray(argCount);
			elemProp.resetBool();
				//購入ボタンが押された商品DIVをコピー
			itemIdArray['clonePageItem'] = elemProp.copyElement(requestInfoOfPageItemCopy(argId));
			cartPageElemIdArray['newPage'][argId] = 1;
				//コピーした商品DIVを画面外に移動するアニメーション(一定時間内に)
			elemProp.fixedTime(requestInfoOfPageItemMoveToOutOfWindow());
			
			timerIdArray['add'] = setTimeout(function () { addPurchase(argId, argCount, 1); }, 10);
		
		} else if (argFlag == 1) {
			if (elemProp.bool["PageItemMoveToOutOfWindow"] == 1 && processValue == 1) {
				elemProp.resetBool();
				deleteCartItems();
				processValue = 0;
				
				for (var i=0; i<itemsArray['cart'].length; i++) {
					itemIdArray['cloneCartItem'] = elemProp.copyElement(requestInfoOfCartItemCopy(itemsArray['cart'][i].id));
					reWriteCartItemInfo("new", itemIdArray['cloneCartItem']);
				}
				fixCart();
				timerIdArray['add'] = setTimeout(function () { addPurchase(argId, argCount, 2); }, 10);
			} else {
				timerIdArray['add'] = setTimeout(function () { addPurchase(argId, argCount, 1); }, 10);
			}
		
		} else if (argFlag == 2) {
				if (elemProp.bool["CartItemsMove"] == 1 && elemProp.bool["CartSizeChange"] == 1) {
				elemProp.resetBool();
				document.getElementById(nameArray["cart"]+"_copy"+itemsArray['cart'][itemsArray['cart'].length-1].id).style['position'] = "relative";
				//コピーした商品DIVをかごの中で跳ねさせるアニメーション
				elemProp.fixedTimePluralOrder(requestInfoOfCartItemHop(nameArray["cart"]+"_copy"+itemsArray['cart'][itemsArray['cart'].length-1].id));
				
				timerIdArray['add'] = setTimeout(function () { addPurchase(argId, argCount, 3); }, 10);
				} else {
					timerIdArray['add'] = setTimeout(function () { addPurchase(argId, argCount, 2); }, 10);
				}
			
		} else if (argFlag == 3) {
			if (elemProp.bool["CartItemHop"] == 1) {
				exitAnimation('new');
			} else {
				timerIdArray['add'] = setTimeout(function () { addPurchase(argId, argCount, 3); }, 10);
			}
		}
	}
	
	
	/**************************************************************************************************
		新規購入処理
	**************************************************************************************************/
	function newPurchase(argId, argFlag) {
		if (!argFlag) {
			elemProp.resetBool();
			
			var myStyleObj = new Array();
			var myElem = document.getElementById("cartitems");
			
				//カート内の商品エレメントのpositionを一度relativeにして位置を調整し、
				//その後positionをstaticにして再度位置を調整
			for (var i=0; i<myElem.childNodes.length; i++) {
				if (myElem.nodeType != 3) {
					myElem.childNodes[i].style['position'] = "relative";
					myElem.childNodes[i].style['position'] = "static";
				}
			}
			
				//カート内に表示する商品DIVをコピー
			itemIdArray['cloneCartItem'] = elemProp.copyElement(requestInfoOfCartItemCopy(argId));
			reWriteCartItemInfo("new", itemIdArray['cloneCartItem']);
			cartPageElemIdArray['newCart'][argId] = 1;
		
				//コピーした商品DIVをかごの中に入れる領域を設けるため、かごを下に拡張させるアニメーション(一定時間内に)
			elemProp.fixedTime(requestInfoOfCartSizeChange());
			
			
				//購入ボタンが押された商品IMGをコピー
			itemIdArray['clonePageItem'] = elemProp.copyElement(requestInfoOfPageItemCopy(argId));
			cartPageElemIdArray['newPage'][argId] = 1;
			
				//コピーした商品DIVを画面外に移動するアニメーション(一定時間内に)
			elemProp.fixedTime(requestInfoOfPageItemMoveToOutOfWindow());
			
			timerIdArray['new'] = setTimeout(function () { newPurchase(argId, 1); }, 10);
		
		} else if (argFlag == 1) {
			if (elemProp.bool["CartSizeChange"] == 1 && elemProp.bool["PageItemMoveToOutOfWindow"] == 1) {
				elemProp.resetBool();
				
					//コピーした商品IMGを削除
				document.getElementById('body').removeChild(itemIdArray['clonePageItem']);
				cartPageElemIdArray['newPage'][argId] = 0;
				
					//コピーした商品DIVをかごの中に入れるアニメーション(変化量一定)
				elemProp.velocity(requestInfoOfCartItemMoveInToCart());
				
				timerIdArray['new'] = setTimeout(function () { newPurchase(argId, 2); }, 10);
			
			} else {
				timerIdArray['new'] = setTimeout(function () { newPurchase(argId, 1); }, 10);
			}
		} else if (argFlag == 2) {
			if (elemProp.bool["PageItemMoveInToCart"] == 1) {
				elemProp.resetBool();
				//コピーした商品DIVをかごの中で跳ねさせるアニメーション
				elemProp.fixedTimePluralOrder(requestInfoOfCartItemHop());
				
				timerIdArray['new'] = setTimeout(function () { newPurchase(argId, 3); }, 10);
			
			} else {
				timerIdArray['new'] = setTimeout(function () { newPurchase(argId, 2); }, 10);
			}
		} else if (argFlag == 3) {
			if (elemProp.bool["CartItemHop"] == 1) {
				exitAnimation('new');
			
			} else {
				timerIdArray['new'] = setTimeout(function () { newPurchase(argId, 3); }, 10);
			}
		}
	}
	
	
	/**************************************************************************************************
		カート内の商品を削除する処理
	**************************************************************************************************/
	function deleteItemFromCart(argId, argFlag) {
		if (argFlag == 0) {
			elemProp.resetBool();
			var myId = nameArray["cart"] + "_copy" + argId;
				//削除ボタンがクリックされた商品エレメントを取得
			itemIdArray['clickedCartItem'] = document.getElementById(myId);
			
				//削除ボタンが押された商品のポップアップを非表示
			document.getElementById(myId).onmouseover = null;
			document.getElementById(myId).onmouseout = null;
			document.getElementById(myId).childNodes[5].style['display'] = "none";
			
				//カート内の商品エレメントのpositionを一度relativeにして位置を調整し、
				//その後positionをstaticにして再度位置を調整
			var myElem = document.getElementById('cartItems');
			for (var i=0; i<myElem.childNodes.length; i++) {
				if (myElem.childNodes[i].id == myId) {
					myElem.childNodes[i].style['position'] = "static";
					myElem.childNodes[i].style['position'] = "relative";
				}
			}
				//削除ボタンが押された商品を画面外に移動
			elemProp.fixedTime(requestInfoOfCartItemPutOutFromCart());
			
			timerIdArray['del'] = setTimeout(function () { deleteItemFromCart(argId, 1); }, 10);
		
		} else if (argFlag == 1) {
		//	window.status = elemProp.bool["CartItemPutOutFromCart"];
			if (elemProp.bool["CartItemPutOutFromCart"] == 1) {
				processValue = 0;
			elemProp.resetBool();
				
			var myElem = document.getElementById(nameArray["cart"] + "_copy" + argId).childNodes[5];
			myElem.parentNode.removeChild(myElem);
					//カート内の商品を移動
				elemProp.fixedTimePlural(requestInfoOfCartItemsMove());
				
					//カートの高さを縮小
				elemProp.fixedTime(requestInfoOfCartSizeChange());
				
				timerIdArray['del'] = setTimeout(function () { deleteItemFromCart(argId, 2); }, 10);
				
			} else {
				timerIdArray['del'] = setTimeout(function () { deleteItemFromCart(argId, 1); }, 10);
			}
			
		} else if (argFlag == 2) {
			var myObj = requestInfoOfCartSizeChange();
			if (elemProp.bool["CartItemsMove"] == 1 && elemProp.bool["CartSizeChange"] == 1) {
				elemProp.resetBool();
				exitAnimation('del');
			} else {
				timerIdArray['del'] = setTimeout(function () { deleteItemFromCart(argId, 2); }, 10);
			}
		}
	}
	
	
	/**************************************************************************************************
		カート内の商品にロールオーバー・アウトしたときの処理
	**************************************************************************************************/
	function controllPopUpDiv(argElem) {
		var myElem = argElem;
		var myY = elemProp.totalOffsetTop(myElem.parentNode);
		var myY = event.y -50;
		var myX = elemProp.totalOffsetLeft(myElem.parentNode) + myElem.parentNode.offsetWidth;
		
		if (myElem.style['display'] != "block") {
			myElem.style['top'] = myY + "px";
			myElem.style['display'] = "block";
		} else {
			myElem.style['display'] = "none";
		}
	}
	
	
	/**************************************************************************************************
		渡された商品IDがページ配列の何番目の商品か調べる
	**************************************************************************************************/
	function requestPageArrayNum(argId) {
		if (itemsArray['page'].length == 0) {
			return "none";
		
		} else {
			for (var i=0; i<itemsArray['page'].length; i++) {
				if (itemsArray['page'][i]['id'] == argId) {
					return i;
				}
			}
		}
		return "none";
	}
	
	
	/**************************************************************************************************
		渡された商品IDがカート配列の何番目の商品か調べる
	**************************************************************************************************/
	function checkCart(argId) {
		if (itemsArray['cart'].length == 0) {
			return "none";
		
		} else {
			for (var i=0; i<itemsArray['cart'].length; i++) {
				if (itemsArray['cart'][i]['id'] == argId) {
					return i;
				}
			}
		}
		return "none";
	}
	
	
	/**************************************************************************************************
		渡された商品IDがカート配列の何番目の商品か調べる
	**************************************************************************************************/
	function fixCartArray(argCount) {
		var myCount = 0;
		var myNewArray = new Array();
		var myFirstArray = new Array();
		for (var i=0; i<itemsArray['cart'].length; i++) {
			if (i == argCount) {
				myFirstArray = itemsArray['cart'][i];
			} else {
				myNewArray[myCount] = itemsArray['cart'][i];
				myCount ++;
			}
		}
		myNewArray[myNewArray.length] = myFirstArray;
		itemsArray['cart'] = myNewArray;
		
		processValue = 1;
	}
	
	
	/**************************************************************************************************
		カート内商品を削除する
	**************************************************************************************************/
	function deleteCartItems() {
		var myElem = document.getElementById('cartitems');
		
		for (var i=0; i<itemsArray['cart'].length; i++) {
			var myDelElem = document.getElementById(nameArray["cart"] + "_copy"+itemsArray['cart'][i].id);
			myElem.removeChild(myDelElem);
		}
	}
	
	
	
	function spopupdisp(id,id2) { 
		if(document.all){
			OBJ = document.all(id).style; 
		}else if(document.getElementById){
			OBJ = document.getElementById(id).style;
		}
		var t=0; 
		var l=0;
		if(document.all){
			ob2 = document.all(id2).style; 
			t = parseInt(ob2.top); 
			l = parseInt(ob2.left); 
		}else if(document.getElementById){
			ob2 = document.getElementById(id2).style;
			t = parseInt(ob2.top); 
			l = parseInt(ob2.left ); 
		}
				
		if(OBJ) {
			if (OBJ.display=='none'){
				OBJ.display='';
			}else{
				OBJ.display='none';
			}
		}
	}	
	