var int_from = 1;

var int_Timer, int_Steps;
var obj_MoveObject, obj_MoveObjectStyle;
var str_MoveObj;


/* itmp = antal
 * strID = artikelnummer
 * iName = namn som skall listas i selectbox..
 */
function fnIEUpdateCart(obj, price){
	var bExist = false;
	var objfrm = parent.cart.document.cartfrm;
	
	for (i=0;i<objfrm.cart.options.length;i++) {
		if ('art'+objfrm.cart.options[i].value == obj) {
			bExist = true;
		}
	}
	parent.cart.cartfrm.BtnCart.disabled = false;
	parent.cart.cartfrm.BtnCashbox.disabled = false;
	objfrm.exist.value = bExist;
	objfrm.pris.value = price;
	objfrm.add.value = obj;
	objfrm.submit();
}

function fnNSUpdateCart(obj, price){
	var bExist = false;
	var objfrm = parent.cart.document.cartfrm;
	
	for (i=0;i<objfrm.cart.options.length;i++) {
		if ('art'+objfrm.cart.options[i].value == obj) {
			bExist = true;
		}
	}
	
	objfrm.exist.value = bExist;
	objfrm.pris.value = price;
	objfrm.add.value = obj;
	objfrm.submit();
}

function fnVoid() {
}


/* ----DIV MOVING---- */
function fnMoveObject(oObj, price, iStep, iStage){
	/*
	if (window.navigator.javaEnabled() == false) {
		alert('Din browser stöder inte javascript!');
		return false;
	}
	
	if((navigator.appVersion.search("MSIE 5.5") == -1) && (navigator.appVersion.search("MSIE 6.0") == -1)) {
		fnNSUpdateCart(oObj, price);
	} else {
		fnMoveObject2(eval(oObj), price, iStep, iStage)
	}
	*/
	
	fnNSUpdateCart(oObj, price);
	
	/*
	if((navigator.appVersion.search("MSIE 5.5") == -1) && (navigator.appVersion.search("MSIE 6.0") == -1)) {
		fnNSUpdateCart(oObj, price);
	} else {
		fnIEUpdateCart(oObj, price);
	}
	*/
}


function fnMoveObject2(oObj, price, iStep, iStage){
	var conTravelTime = 225;

	var iStartLeft, iStartTop, iStartWidth, iStartHeight, iDistance, iSteps;
	var iFinishLeft, iFinishTop, iFinishWidth, iFinishHeight;
	var oDocBody, iTop, iLeft, iWidth, iHeight;
	var oSourceObject, iSourceObjectTop, iSourceObjectLeft, oMoveObj;
	var iLeftDistance, iTopDistance, iWidthDistance, iHeightDistance, iLeftInc, iTopInc, iWidthInc, iHeightInc;

	if("object" == typeof(eMoveObj)) fnEndMove(true);

	oDocBody = document.body;
	int_Steps = iStage;

	try{
		/*	detta är för att få tillbakagången att börja högst upp till höger på sidan
		oberoende på scrolling	*/
		iTop2 = document.body.scrollTop;
		/*	som ovan fast litet annorlunda, förstår inte varför den ovan inte fungerar :(	*/
		iTop = fnGetDistance(oObj, true) - oObj.parentElement.scrollTop;
		iLeft = fnGetDistance(oObj, false);
		iWidth = oObj.offsetWidth;
		iHeight = oObj.offsetHeight;
		
		
		if (iHeight < 45) {
			iHeight = 45;
		}

		oMoveObj = oObj.cloneNode(true);
		oMoveObj.style.border = '1px solid #000000';
		oMoveObj.style.background = '';
		oDocBody.insertBefore(oMoveObj);
		oMoveObj.id = "eMoveObj";
		oMoveObj.className = "update";

		obj_MoveObject = oObj;
	}catch(e){
		return false;
	}
	
	/*	objektet till vilket elementet skall skala ner sig mot.	*/
	oSourceObject = scaleTO;
	iSourceObjectTop = fnGetDistance(oSourceObject, true) + parseInt(oSourceObject.offsetHeight/2);
	iSourceObjectLeft = fnGetDistance(oSourceObject, false) + parseInt(oSourceObject.offsetWidth/2);
	
	if(iStep == int_from){
		iStartTop = iTop;
		iStartLeft = !parent.conRTL ? iLeft : oDocBody.offsetWidth - iWidth - 10;
		iStartWidth = iWidth + 2;
		iStartHeight = iHeight + 1;

		iFinishTop = (iStage == parent.cart) ? fnGetDistance(parent.cart.cartDrop, true) : iSourceObjectTop;
		iFinishLeft = (iStage == parent.cart) ? 0 : iSourceObjectLeft;
		
		iFinishTop += document.body.scrollTop
		iFinishWidth = 0;
		iFinishHeight = 0;
		
	}else{
		iStartTop = iTop2;
		iStartLeft = iSourceObjectLeft;
		iStartWidth = 0;
		iStartHeight = 0;

		iFinishTop = iTop;
		iFinishLeft = !parent.conRTL ? iLeft : oDocBody.offsetWidth - iWidth - 10;
		iFinishWidth = iWidth;
		iFinishHeight = iHeight;
	}

	iTopDistance = iFinishTop - iStartTop;
	iLeftDistance = iFinishLeft - iStartLeft;
	iWidthDistance = iFinishWidth - iStartWidth;
	iHeightDistance = iFinishHeight - iStartHeight;

	iDistance = Math.sqrt(Math.pow(iLeftDistance, 2) + Math.pow(iTopDistance, 2));
	iSteps = parseInt(iDistance/20);
	iSpeed = parseInt(conTravelTime/iSteps);

	iTopInc = parseInt(iTopDistance/iSteps);
	iLeftInc = parseInt(iLeftDistance/iSteps);
	iWidthInc = parseInt(iWidthDistance/iSteps);
	iHeightInc = parseInt(iHeightDistance/iSteps);

	// make up for remainder pixels \\
	if(iStep = int_from){
		iStartTop += (iTopDistance % iSteps);
		iStartLeft += (iLeftDistance % iSteps);
		iStartWidth += (iWidthDistance % iSteps) + 2;
		iStartHeight += (iHeightDistance % iSteps);
	}


	if(iStartHeight == 0) iStartHeight = 1; /* IE5.5 BUG */

	/*	sätt startposition för objektet!	*/
	obj_MoveObjectStyle = eMoveObj.style;
	obj_MoveObjectStyle.top = iStartTop;
	obj_MoveObjectStyle.left = iStartLeft;
	obj_MoveObjectStyle.width = iStartWidth;
	obj_MoveObjectStyle.height = iStartHeight;
	
	/*	variabler som skall skickas med till
			funktion för att flytta objectet!	*/
	str_MoveObj = ", " + iWidthInc + ", " + iHeightInc + ", " + iLeftInc + ", " + iTopInc + ", " + iSteps + ", " + iSpeed;
	int_Timer = window.setTimeout("fnMove(" + 0 + str_MoveObj + ");", 0);
	
	fnIEUpdateCart(oObj.id, price);
}

/*	denna funktion ropar på sig själv, 0 till iSteps
		för att flytta ett object	*/
function fnMove(i, iWidthInc, iHeightInc, iLeftInc, iTopInc, iMax, iSpeed){
	try{
		obj_MoveObjectStyle.posWidth += iWidthInc;
		obj_MoveObjectStyle.posHeight += iHeightInc;
		obj_MoveObjectStyle.posLeft += iLeftInc;
		obj_MoveObjectStyle.posTop += iTopInc;
		if(obj_MoveObjectStyle.posHeight == 0) obj_MoveObjectStyle.posHeight = -1; /* IE5.5 BUG */

		if(++i < iMax){
		// ifall i+1 inte är större än max, fortsätt!
			int_Timer = window.setTimeout("fnMove(" + i + str_MoveObj + ");", iSpeed);
		}else{
		// annars, kör funktion för att avsluta rörelsen!
			window.setTimeout("fnEndMove();", 0);
		}
	}catch(e){}
}


/*	funktion för att avsluta en "setTimeout"
		samt för att rensa objekten som skapas!	*/
function fnEndMove(bInterrupted){
	window.clearTimeout(int_Timer);
	if("object" != typeof(eMoveObj)) return false;
	eMoveObj.removeNode(true);
}

/*	funktion för att ta reda på avstånd
		oFromObj = vilket objekt.
		bFromTop = true lr false, top lr left	*/
function fnGetDistance(oFromObj, bFromTop){
	var bFromTop, i;

	oParent = document.body;
	i = 0;

	try{
		while(oFromObj != oParent){
			i += bFromTop ? oFromObj.offsetTop : oFromObj.offsetLeft;
			oFromObj = oFromObj.offsetParent;
		}
	}catch(e){}

	return Math.abs(i);
}

/*	funktion för att kontrollera antal..	*/
function fnChkNaN(obj,itmp) {
	var exReg = /[.]/;
	if (obj.value.search(exReg) != -1)	{
		obj.value = parseInt(itmp);
		return false;	
	}

	if (isNaN(obj.value) || obj.value == '' || obj.value == 0) {
		obj.value = parseInt(itmp);
	}else{
		obj.value = parseFloat(obj.value);
	}
}

function fnMouseOv(oObj) {
	for (i=0;i<parent.cart.cartfrm.cartDrop.options.length;i++)	{
		//alert(parent.cart.cartfrm.cartDrop.options[i].value + ', ' + oObj.id);
		if (parent.cart.cartfrm.cartDrop.options[i].value == oObj.id)	{
			parent.cart.cartfrm.cartDrop.options[i].selected = true;
		}
	}
}

