function makeRequest(ajaxRequestURL, receiptionFunctionName, postParameters)
{
	ajaxRequestURL = ajaxRequestURL + '?XMLHttpRequest=1' + '&timestamp='+ (new Date()).getTime();

	if(!(ajaxRequestResource = initAjaxObject()))
	{
		alert("XmlHttpRequest failure");
	}
	else
	{
		ajaxRequestResource.open("POST", ajaxRequestURL, true);
		ajaxRequestResource.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajaxRequestResource.setRequestHeader("Content-length", postParameters.length);
		ajaxRequestResource.setRequestHeader("Connection", "close");
		
		ajaxRequestResource.onreadystatechange = function() 
		{
			receiveResponse(ajaxRequestResource, receiptionFunctionName);
		}
		ajaxRequestResource.send(postParameters); 
	}
}
function initAjaxObject() 
{
	if (window.XMLHttpRequest) 
	{
		return new XMLHttpRequest();
	}
	else if (window.ActiveXObject) 
	{
		try 
		{
			return new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try 
			{
				return new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (E) 
			{
				return null;
			}
		}
	}
	else 
	{
		return null;
	}
}
function receiveResponse(ajaxRequestResource, receiptionFunctionName)
{
	if(ajaxRequestResource.readyState == 4 && ajaxRequestResource.status == 200)
	{
		if (typeof(eval(receiptionFunctionName)) != "undefined")
		{
			eval(receiptionFunctionName)(ajaxRequestResource.responseText);
		}
	}
}
//**************************************************************************
//SHOPPING BASKET FUNCTIONS
//**************************************************************************

function basket_removeProduct(elementID)
{
	var postParameters = "action=removeProducts&productID="+elementID;
	postParameters = basket_gatherFormValues(postParameters);
	var ajaxRequestResource = makeRequest(webSiteURL, 'basket_refreshContent', postParameters);
}

function basket_removeSelectionProduct(elementID, parameter)
{
	var postParameters = "action=removeProducts&productID="+elementID+"&parameter="+parameter;
	postParameters = basket_gatherFormValues(postParameters);
	var ajaxRequestResource = makeRequest(webSiteURL, 'basket_refreshContent', postParameters);
}

function basket_refreshContent(responseText)
{
	if (basketContentElement = document.getElementById("shopping_basket_container"))
	{
		basketContentElement.innerHTML = responseText;
		if(typeof sIFR == "function")
		{
			sIFR.replaceElement("span.sifr_folder_active", named({sFlashSrc: "/flash/InterstateBoldCondensed.swf",  sColor: "#FFFFFF", sCase: "upper", sWmode: "transparent", sFlashVars: "textalign=center"}));
			sIFR.replaceElement("span.resellers_folder_sifr_active", named({sFlashSrc: "/flash/InterstateBoldCondensed.swf",  sColor: "#cc0033", sCase: "upper", sBgColor: "#000000",sWmode: "transparent",  sFlashVars: "textalign=left"}));
		}
	}
	postParameters = "action=receiveStatus";
	var ajaxRequestResource = makeRequest(webSiteURL, 'basket_getStatus', postParameters);
}

function basket_addProducts(elementID)
{
	if (basketControlsElement = document.getElementById("basketControl"+elementID))
	{
		basketControlsValue = basketControlsElement.value;
		if (parseInt(basketControlsValue)>0)
		{
			postParameters = "action=addProducts&productID="+elementID+"&amount="+basketControlsValue;
			var ajaxRequestResource = makeRequest(webSiteURL, 'basket_refreshStatus', postParameters);
		}
		else
		{
			basketControlsElement.value = '1';
			postParameters = "action=addProducts&productID="+elementID+"&amount=1";
			var ajaxRequestResource = makeRequest(webSiteURL, 'basket_refreshStatus', postParameters);
		}
		
		if(typeof sIFR == "function"){
			sIFR.replaceElement("span.sifr_product_function_active", named({sFlashSrc: "/flash/InterstateBoldCondensed.swf",  sColor: "#cc0033", sCase: "upper", sBgColor: "#000000", sFlashVars: "textalign=left"}));
		}else{
			obj_buttonholder = getNode('product_functions_select');
			obj_buttonholder.innerHTML = "<span class=\"sifr_product_function_active\">" + select_inner + "</span>";
		}
	}
}

function basket_getStatus(elementID)
{
	postParameters = "action=receiveStatus";
	var ajaxRequestResource = makeRequest(webSiteURL, 'basket_refreshStatus', postParameters);
}

function basket_refreshStatus(responseText)
{
	if (basketControlsElement = document.getElementById("shopping_basket"))
	{
		basketControlsElement.style.visibility = 'visible';
		basketControlsElement.innerHTML = responseText;
		if(typeof sIFR == "function")
		{
			sIFR.replaceElement("span.sifr_folder_active", named({sFlashSrc: "/flash/InterstateBoldCondensed.swf",  sColor: "#FFFFFF", sCase: "upper", sWmode: "transparent", sFlashVars: "textalign=center"}));
		}
	}
}

function basketControls_increment(elementID)
{
	if (basketControlsElement = document.getElementById("basketControl"+elementID))
	{
		if (basketControlsElement.value=="") basketControlsElement.value = 1;
		else
		{
			if (parseInt(basketControlsElement.value)>0)
			{
				basketControlsElement.value = parseInt(basketControlsElement.value)+1;
			}
			else
			{
				basketControlsElement.value = 1;
			}
		}
	}
}

function basket_sendNewAmount(elementID)
{
	if (basketControlsElement = document.getElementById("basketControl"+elementID))
	{
		basketControlsValue = parseInt(basketControlsElement.value);
		if (basketControlsValue>0)
		{
			postParameters = "action=newAmount&productID="+elementID+"&amount="+basketControlsValue;
			postParameters = basket_gatherFormValues(postParameters);
			var ajaxRequestResource = makeRequest(webSiteURL, 'basket_refreshContent', postParameters);
		}
		else basketControlsElement.value = 1;
		
	}
}

function basketControls_sendIncrement(elementID)
{
	basketControls_increment(elementID);
	basket_sendNewAmount(elementID);
}
function basketControls_sendDecrement(elementID)
{
	if (basketControlsElement = document.getElementById("basketControl"+elementID))
	{
		if (basketControlsElement.value!="") 
		{
			if (parseInt(basketControlsElement.value)>1)
			{
				basketControlsElement.value = parseInt(basketControlsElement.value)-1;
			}
			else
			{
				basketControlsElement.value = "1";
			}
		}
	}
	basket_sendNewAmount(elementID);
}

function basketControls_decrement(elementID)
{
	if (basketControlsElement = document.getElementById("basketControl"+elementID))
	{
		if (basketControlsElement.value!="") 
		{
			if (parseInt(basketControlsElement.value)>0)
			{
				basketControlsElement.value = parseInt(basketControlsElement.value)-1;
			}
			else
			{
				basketControlsElement.value = "";
			}
		}

		if (basketControlsElement.value=="0") basketControlsElement.value = "";
	}
}

function basket_sendValues()
{
	var postParameters = "action=receiveValues";
	postParameters = basket_gatherFormValues(postParameters);
	var ajaxRequestResource = makeRequest(webSiteURL, 'basket_refreshContent', postParameters);
}
function basket_gatherFormValues(postParameters)
{
	if (document.getElementById("shoppingBasketProducts"))
	{
		if (document.getElementById("activeTab"))
		{
			var activeTab = parseInt(document.getElementById("activeTab").value);
			if (activeTab)
			{
				postParameters = postParameters + '&activeTab='+activeTab;
			}
			else
				postParameters = postParameters + '&activeTab=1';
		}
		
		if (document.getElementById("f_friends_email"))
		{
			var f_friends_email = document.getElementById("f_friends_email").value;
			if (f_friends_email)
			{
				postParameters = postParameters + '&f_friends_email='+f_friends_email;
			}
		}
		
		if (document.getElementById("f_name"))
		{
			var shoppingBasket_Company = document.getElementById("f_name").value;
			if (shoppingBasket_Company != "")
			{
				postParameters = postParameters + '&f_name='+shoppingBasket_Company;
			}
		}
		if (document.getElementById("f_email"))
		{
			var shoppingBasket_Email = document.getElementById("f_email").value;
			if (shoppingBasket_Email != "")
			{
				postParameters = postParameters + '&f_email='+shoppingBasket_Email;
			}
		}
		if (document.getElementById("f_phone"))
		{
			var shoppingBasket_Phone = document.getElementById("f_phone").value;
			if (shoppingBasket_Phone != "")
			{
				postParameters = postParameters + '&f_phone='+shoppingBasket_Phone;
			}
		}
		var shoppingBasket_OrdererAddress = document.getElementById("f_address").value;
		if (shoppingBasket_OrdererAddress != "")
		{
			postParameters = postParameters + '&f_address='+shoppingBasket_OrdererAddress;
		}
		
		var shoppingBasket_OrdererCity = document.getElementById("f_city");
		if (shoppingBasket_OrdererCity)
		{
			if (shoppingBasket_OrdererCity.value != "")
				postParameters = postParameters + '&f_city='+shoppingBasket_OrdererCity.value;
		}
		
		var shoppingBasket_OrdererMessage = document.getElementById("f_message");
		if (shoppingBasket_OrdererMessage)
		{
			if (shoppingBasket_OrdererMessage.value != "")
				postParameters = postParameters + '&f_message='+shoppingBasket_OrdererMessage.value;
		}
	}
	return postParameters;
}
function basket_sendFormValues(paymentMethod)
{
	if (paymentMethodObject = document.getElementById("paymentMethod"))
	{
		
		paymentMethodObject.value = paymentMethod;
		document.shoppingBasketContact.submit();
	}
}
function basket_showBankSelector()
{
	if (bankSelector = document.getElementById("bank_selector"))
	{
		bankSelector.className = "";
	}
}

var framesCount = 30;
var AnimationSpeed = 25;
function moveToBasketAnimation(elementID)
{
	if ((pictureObject = document.getElementById(elementID)) && (basketStatusObject = document.getElementById('shopping_basket')))
	{
		resetFrameState(elementID)
		
		picturePosition = findPos(pictureObject);
		basketPosition = findPos(basketStatusObject);
				
		pictureObject.style.left = pictureObject.offsetLeft+'px';
		pictureObject.style.top = pictureObject.offsetTop+'px';
		
		
		var xStartCoordinate = pictureObject.offsetLeft;
		var yStartCoordinate = pictureObject.offsetTop;
		
		var xEndCoordinate = basketPosition[0] - picturePosition[0];
		var yEndCoordinate = basketPosition[1] - picturePosition[1];

		xAcceleration = calcAcceleration (xStartCoordinate, xEndCoordinate, framesCount);
		yAcceleration = calcAcceleration (yStartCoordinate, yEndCoordinate, framesCount);
		
		drawFrameState(xStartCoordinate, yStartCoordinate, xEndCoordinate, yEndCoordinate, elementID, 0);
		opacity(elementID, 100, 0, framesCount*AnimationSpeed*1.5);
	}
}

function drawFrameState(xStartCoordinate, yStartCoordinate, xEndCoordinate, yEndCoordinate, elementID, frameNumber)
{
	if (pictureObject = document.getElementById(elementID))
	{
		frameNumber = parseInt(frameNumber);
		xStartCoordinate = parseInt(xStartCoordinate);
		yStartCoordinate = parseInt(yStartCoordinate);
		xEndCoordinate = parseInt(xEndCoordinate);
		yEndCoordinate = parseInt(yEndCoordinate);
		
		xCoordinate = calcFrameCoordinate(xStartCoordinate, frameNumber, xAcceleration);
		yCoordinate = calcFrameCoordinate(yStartCoordinate, frameNumber, yAcceleration);

		pictureObject.style.left = xCoordinate + 'px';
		pictureObject.style.top = yCoordinate + 'px';
		
		if (frameNumber < framesCount)
		{
			pictureObject.timeoutID = setTimeout("drawFrameState('" + xStartCoordinate + "','" + yStartCoordinate + "','" + xEndCoordinate + "','" + yEndCoordinate + "','" + elementID + "','" + (frameNumber+1) + "')", AnimationSpeed);
		}
		else
		{
			resetFrameState(elementID);
		}
	}
}
function resetFrameState(elementID)
{
	if (pictureObject = document.getElementById(elementID))
	{
		clearTimeout(pictureObject.timeoutID);
		pictureObject.style.left = '0px';
		pictureObject.style.top = '0px';
		changeOpac(100, elementID);
	}
}

function calcFrameCoordinate(startPosition, frameNumber, acceleration)
{
	var coordinate = startPosition + (acceleration*frameNumber*frameNumber)/2
	return coordinate;
}
function calcAcceleration(startPosition, endPosition, framesCount)
{
	var acceleration = 2*(endPosition - startPosition)/(framesCount*framesCount);
	return acceleration;
}

function findPos(obj) 
{
	var curleft = curtop = 0;
	if (obj.offsetParent) 
	{
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		//~ alert(obj.tagName+'#'+obj.id+' left:'+obj.offsetLeft+' sum:'+curleft);
		while (obj = obj.offsetParent) 
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
			//~ alert(obj.tagName+'#'+obj.id+' left:'+obj.offsetLeft+' sum:'+curleft);
		}
	}
	return [curleft,curtop];
}

function opacity(id, opacStart, opacEnd, millisec) 
{
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) 
{
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}
