/* Simple AJAX Code-Kit (SACK) v1.6.1 */
/* ©2005 Gregory Wild-Smith */
/* www.twilightuniverse.com */
/* Software licenced under a modified X11 licence,
   see documentation or authors website for more details */

function sack(file) {
	this.xmlhttp = null;

	this.resetData = function() {
		this.method = "POST";
  		this.queryStringSeparator = "?";
		this.argumentSeparator = "&";
		this.URLString = "";
		this.encodeURIString = true;
  		this.execute = false;
  		this.element = null;
		this.elementObj = null;
		this.requestFile = file;
		this.vars = new Object();
		this.responseStatus = new Array(2);
  	};

	this.resetFunctions = function() {
  		this.onLoading = function() { };
  		this.onLoaded = function() { };
  		this.onInteractive = function() { };
  		this.onCompletion = function() { };
  		this.onError = function() { };
		this.onFail = function() { };
	};

	this.reset = function() {
		this.resetFunctions();
		this.resetData();
	};

	this.createAJAX = function() {
		try {
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e1) {
			try {
				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				this.xmlhttp = null;
			}
		}

		if (! this.xmlhttp) {
			if (typeof XMLHttpRequest != "undefined") {
				this.xmlhttp = new XMLHttpRequest();
			} else {
				this.failed = true;
			}
		}
	};

	this.setVar = function(name, value){
		this.vars[name] = Array(value, false);
	};

	this.encVar = function(name, value, returnvars) {
		if (true == returnvars) {
			return Array(encodeURIComponent(name), encodeURIComponent(value));
		} else {
			this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
		}
	}

	this.processURLString = function(string, encode) {
		encoded = encodeURIComponent(this.argumentSeparator);
		regexp = new RegExp(this.argumentSeparator + "|" + encoded);
		varArray = string.split(regexp);
		for (i = 0; i < varArray.length; i++){
			urlVars = varArray[i].split("=");
			if (true == encode){
				this.encVar(urlVars[0], urlVars[1]);
			} else {
				this.setVar(urlVars[0], urlVars[1]);
			}
		}
	}

	this.createURLString = function(urlstring) {
		if (this.encodeURIString && this.URLString.length) {
			this.processURLString(this.URLString, true);
		}

		if (urlstring) {
			if (this.URLString.length) {
				this.URLString += this.argumentSeparator + urlstring;
			} else {
				this.URLString = urlstring;
			}
		}

		// prevents caching of URLString
		this.setVar("rndval", new Date().getTime());

		urlstringtemp = new Array();
		for (key in this.vars) {
			if (false == this.vars[key][1] && true == this.encodeURIString) {
				encoded = this.encVar(key, this.vars[key][0], true);
				delete this.vars[key];
				this.vars[encoded[0]] = Array(encoded[1], true);
				key = encoded[0];
			}

			urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
		}
		if (urlstring){
			this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
		} else {
			this.URLString += urlstringtemp.join(this.argumentSeparator);
		}
	}

	this.runResponse = function() {
		eval(this.response);
	}

	this.runAJAX = function(urlstring) {
		if (this.failed) {
			this.onFail();
		} else {
			this.createURLString(urlstring);
			if (this.element) {
				this.elementObj = document.getElementById(this.element);
			}
			if (this.xmlhttp) {
				var self = this;
				if (this.method == "GET") {
					totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
					this.xmlhttp.open(this.method, totalurlstring, true);
				} else {
					this.xmlhttp.open(this.method, this.requestFile, true);
					try {
						this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
					} catch (e) { }
				}

				this.xmlhttp.onreadystatechange = function() {
					switch (self.xmlhttp.readyState) {
						case 1:
							self.onLoading();
							break;
						case 2:
							self.onLoaded();
							break;
						case 3:
							self.onInteractive();
							break;
						case 4:
							self.response = self.xmlhttp.responseText;
							self.responseXML = self.xmlhttp.responseXML;
							self.responseStatus[0] = self.xmlhttp.status;
							self.responseStatus[1] = self.xmlhttp.statusText;

							if (self.execute) {
								self.runResponse();
							}

							if (self.elementObj) {
								elemNodeName = self.elementObj.nodeName;
								elemNodeName.toLowerCase();
								if (elemNodeName == "input"
								|| elemNodeName == "select"
								|| elemNodeName == "option"
								|| elemNodeName == "textarea") {
									self.elementObj.value = self.response;
								} else {
									self.elementObj.innerHTML = self.response;
								}
							}
							if (self.responseStatus[0] == "200") {
								self.onCompletion();
							} else {
								self.onError();
							}

							self.URLString = "";
							break;
					}
				};

				this.xmlhttp.send(this.URLString);
			}
		}
	};

	this.reset();
	this.createAJAX();
}
//ajax tooltip
var x_offset_tooltip=5;var y_offset_tooltip=0;var ajax_tooltipObj=false;var ajax_tooltipObj_iframe=false;var ajax_tooltip_MSIE=false;if(navigator.userAgent.indexOf('MSIE')>=0)ajax_tooltip_MSIE=true;var tmpfen="";function ajax_showTooltip(externalFile,inputObj)
{if(tmpfen!="")
{if(ajax_tooltipObj.style.display!='none')
{if(tmpfen==externalFile)
return;}}
tmpfen=externalFile;if(!ajax_tooltipObj)
{ajax_tooltipObj=document.createElement('DIV');ajax_tooltipObj.style.position='absolute';ajax_tooltipObj.id='ajax_tooltipObj';document.body.appendChild(ajax_tooltipObj);var leftDiv=document.createElement('DIV');leftDiv.className='ajax_tooltip_arrow';leftDiv.id='ajax_tooltip_arrow';ajax_tooltipObj.appendChild(leftDiv);var contentDiv=document.createElement('DIV');contentDiv.className='ajax_tooltip_content';ajax_tooltipObj.appendChild(contentDiv);contentDiv.id='ajax_tooltip_content';if(ajax_tooltip_MSIE){ajax_tooltipObj_iframe=document.createElement('<IFRAME frameborder="0">');ajax_tooltipObj_iframe.style.position='absolute';ajax_tooltipObj_iframe.border='0';ajax_tooltipObj_iframe.frameborder=0;ajax_tooltipObj_iframe.style.backgroundColor='#FFF';ajax_tooltipObj_iframe.src='about:blank';contentDiv.appendChild(ajax_tooltipObj_iframe);ajax_tooltipObj_iframe.style.left='0px';ajax_tooltipObj_iframe.style.top='0px';}}
ajax_tooltipObj.style.display='block';ajax_loadContent('ajax_tooltip_content',externalFile);if(ajax_tooltip_MSIE){ajax_tooltipObj_iframe.style.width=ajax_tooltipObj.clientWidth+'px';ajax_tooltipObj_iframe.style.height=ajax_tooltipObj.clientHeight+'px';}
ajax_positionTooltip(inputObj);}
function ajax_positionTooltip(inputObj)
{var leftPos=(ajaxTooltip_getLeftPos(inputObj)+inputObj.offsetWidth);var topPos=ajaxTooltip_getTopPos(inputObj);var tooltipWidth=document.getElementById('ajax_tooltip_content').offsetWidth+document.getElementById('ajax_tooltip_arrow').offsetWidth;ajax_tooltipObj.style.left=leftPos+'px';ajax_tooltipObj.style.top=topPos+'px';}
function ajax_hideTooltip()
{ajax_tooltipObj.style.display='none';}
function ajaxTooltip_getTopPos(inputObj)
{var returnValue=inputObj.offsetTop;while((inputObj=inputObj.offsetParent)!=null){if(inputObj.tagName!='HTML')returnValue+=inputObj.offsetTop;}
return returnValue;}
function ajaxTooltip_getLeftPos(inputObj)
{var returnValue=inputObj.offsetLeft;while((inputObj=inputObj.offsetParent)!=null){if(inputObj.tagName!='HTML')returnValue+=inputObj.offsetLeft;}
return returnValue;}
//modal-message
DHTML_modalMessage=function()
{var url;var htmlOfModalMessage;var divs_transparentDiv;var divs_content;var iframe;var layoutCss;var width;var height;var existingBodyOverFlowStyle;var dynContentObj;var cssClassOfMessageBox;var shadowDivVisible;var shadowOffset;var MSIE;this.url='';this.htmlOfModalMessage='';this.layoutCss='modal-message.css';this.height=200;this.width=400;this.cssClassOfMessageBox=false;this.shadowDivVisible=true;this.shadowOffset=5;this.MSIE=false;if(navigator.userAgent.indexOf('MSIE')>=0)this.MSIE=true;}
DHTML_modalMessage.prototype={setSource:function(urlOfSource)
{this.url=urlOfSource;},setHtmlContent:function(newHtmlContent)
{this.htmlOfModalMessage=newHtmlContent;},setSize:function(width,height)
{if(width)this.width=width;if(height)this.height=height;},setCssClassMessageBox:function(newCssClass)
{this.cssClassOfMessageBox=newCssClass;if(this.divs_content){if(this.cssClassOfMessageBox)
this.divs_content.className=this.cssClassOfMessageBox;else
this.divs_content.className='modalDialog_contentDiv';}},setShadowOffset:function(newShadowOffset)
{this.shadowOffset=newShadowOffset},display:function()
{if(!this.divs_transparentDiv){this.__createDivs();}
this.divs_transparentDiv.style.display='block';this.divs_content.style.display='block';this.divs_shadow.style.display='block';if(this.MSIE)this.iframe.style.display='block';this.__resizeDivs();window.refToThisModalBoxObj=this;setTimeout('window.refToThisModalBoxObj.__resizeDivs()',150);this.__insertContent();},setShadowDivVisible:function(visible)
{this.shadowDivVisible=visible;},close:function()
{this.divs_transparentDiv.style.display='none';this.divs_content.style.display='none';this.divs_shadow.style.display='none';if(this.MSIE)this.iframe.style.display='none';},addEvent:function(whichObject,eventType,functionName,suffix)
{if(!suffix)suffix='';if(whichObject.attachEvent){whichObject['e'+eventType+functionName+suffix]=functionName;whichObject[eventType+functionName+suffix]=function(){whichObject['e'+eventType+functionName+suffix](window.event);}
whichObject.attachEvent('on'+eventType,whichObject[eventType+functionName+suffix]);}else
whichObject.addEventListener(eventType,functionName,false);},__createDivs:function()
{this.divs_transparentDiv=document.createElement('DIV');this.divs_transparentDiv.className='modalDialog_transparentDivs';this.divs_transparentDiv.style.left='0px';this.divs_transparentDiv.style.top='0px';document.body.appendChild(this.divs_transparentDiv);this.divs_content=document.createElement('DIV');this.divs_content.className='modalDialog_contentDiv';this.divs_content.id='DHTMLSuite_modalBox_contentDiv';this.divs_content.style.zIndex=100000;if(this.MSIE){this.iframe=document.createElement('<IFRAME src="about:blank" frameborder=0>');this.iframe.style.zIndex=90000;this.iframe.style.position='absolute';document.body.appendChild(this.iframe);}
document.body.appendChild(this.divs_content);this.divs_shadow=document.createElement('DIV');this.divs_shadow.className='modalDialog_contentDiv_shadow';this.divs_shadow.style.zIndex=95000;document.body.appendChild(this.divs_shadow);window.refToModMessage=this;this.addEvent(window,'scroll',function(e){window.refToModMessage.__repositionTransparentDiv()});this.addEvent(window,'resize',function(e){window.refToModMessage.__repositionTransparentDiv()});},__getBrowserSize:function()
{var bodyWidth=document.documentElement.clientWidth;var bodyHeight=document.documentElement.clientHeight;var bodyWidth,bodyHeight;if(self.innerHeight){bodyWidth=self.innerWidth;bodyHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){bodyWidth=document.documentElement.clientWidth;bodyHeight=document.documentElement.clientHeight;}else if(document.body){bodyWidth=document.body.clientWidth;bodyHeight=document.body.clientHeight;}
return[bodyWidth,bodyHeight];},__resizeDivs:function()
{var topOffset=Math.max(document.body.scrollTop,document.documentElement.scrollTop);if(this.cssClassOfMessageBox)
this.divs_content.className=this.cssClassOfMessageBox;else
this.divs_content.className='modalDialog_contentDiv';if(!this.divs_transparentDiv)return;var st=Math.max(document.body.scrollTop,document.documentElement.scrollTop);var sl=Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);window.scrollTo(sl,st);setTimeout('window.scrollTo('+sl+','+st+');',10);this.__repositionTransparentDiv();var brSize=this.__getBrowserSize();var bodyWidth=brSize[0];var bodyHeight=brSize[1];this.divs_content.style.width=this.width+'px';this.divs_content.style.height=this.height+'px';var tmpWidth=this.divs_content.offsetWidth;var tmpHeight=this.divs_content.offsetHeight;this.divs_content.style.left=Math.ceil((bodyWidth-tmpWidth)/2)+'px';;this.divs_content.style.top=(Math.ceil((bodyHeight-tmpHeight)/2)+topOffset)+'px';if(this.MSIE){this.iframe.style.left=this.divs_content.style.left;this.iframe.style.top=this.divs_content.style.top;this.iframe.style.width=this.divs_content.style.width;this.iframe.style.height=this.divs_content.style.height;}
this.divs_shadow.style.left=(this.divs_content.style.left.replace('px','')/1+this.shadowOffset)+'px';this.divs_shadow.style.top=(this.divs_content.style.top.replace('px','')/1+this.shadowOffset)+'px';this.divs_shadow.style.height=tmpHeight+'px';this.divs_shadow.style.width=tmpWidth+'px';if(!this.shadowDivVisible)this.divs_shadow.style.display='none';},__repositionTransparentDiv:function()
{this.divs_transparentDiv.style.top=Math.max(document.body.scrollTop,document.documentElement.scrollTop)+'px';this.divs_transparentDiv.style.left=Math.max(document.body.scrollLeft,document.documentElement.scrollLeft)+'px';var brSize=this.__getBrowserSize();var bodyWidth=brSize[0];var bodyHeight=brSize[1];this.divs_transparentDiv.style.width=bodyWidth+'px';this.divs_transparentDiv.style.height=bodyHeight+'px';},__insertContent:function()
{if(this.url){ajax_loadContent('DHTMLSuite_modalBox_contentDiv',this.url);}else{this.divs_content.innerHTML=this.htmlOfModalMessage;}}}
//fly
var flyingSpeed=25;var url_addProductToBasket='addProduct.php';var url_removeProductFromBasket='removeProduct.php';var txt_totalPrice='Total: ';var shopping_cart_div=false;var flyingDiv=false;var currentProductDiv=false;var shopping_cart_x=false;var shopping_cart_y=false;var slide_xFactor=false;var slide_yFactor=false;var diffX=false;var diffY=false;var currentXPos=false;var currentYPos=false;var ajaxObjects=new Array();function shoppingCart_getTopPos(inputObj)
{var returnValue=inputObj.offsetTop;while((inputObj=inputObj.offsetParent)!=null){if(inputObj.tagName!='HTML')returnValue+=inputObj.offsetTop;}
return returnValue;}
function shoppingCart_getLeftPos(inputObj)
{var returnValue=inputObj.offsetLeft;while((inputObj=inputObj.offsetParent)!=null){if(inputObj.tagName!='HTML')returnValue+=inputObj.offsetLeft;}
return returnValue;}
function addToBasket(productId)
{if(!shopping_cart_div)shopping_cart_div=document.getElementById('shopping_cart');if(!flyingDiv){flyingDiv=document.createElement('DIV');flyingDiv.style.position='absolute';document.body.appendChild(flyingDiv);}
shopping_cart_x=shoppingCart_getLeftPos(shopping_cart_div);shopping_cart_y=shoppingCart_getTopPos(shopping_cart_div);currentProductDiv=document.getElementById('slidingProduct'+productId);currentXPos=shoppingCart_getLeftPos(currentProductDiv);currentYPos=shoppingCart_getTopPos(currentProductDiv);diffX=shopping_cart_x-currentXPos;diffY=shopping_cart_y-currentYPos;var shoppingContentCopy=currentProductDiv.cloneNode(true);shoppingContentCopy.id='';flyingDiv.innerHTML='';flyingDiv.style.left=currentXPos+'px';flyingDiv.style.top=currentYPos+'px';flyingDiv.appendChild(shoppingContentCopy);flyingDiv.style.display='block';flyingDiv.style.width=currentProductDiv.offsetWidth+'px';flyToBasket(productId);}
function flyToBasket(productId)
{var maxDiff=Math.max(Math.abs(diffX),Math.abs(diffY));var moveX=(diffX/maxDiff)*flyingSpeed;;var moveY=(diffY/maxDiff)*flyingSpeed;currentXPos=currentXPos+moveX;currentYPos=currentYPos+moveY;flyingDiv.style.left=Math.round(currentXPos)+'px';flyingDiv.style.top=Math.round(currentYPos)+'px';if(moveX>0&&currentXPos>shopping_cart_x){flyingDiv.style.display='none';}
if(moveX<0&&currentXPos<shopping_cart_x){flyingDiv.style.display='none';}
if(flyingDiv.style.display=='block')setTimeout('flyToBasket("'+productId+'")',10);else ajaxAddProduct(productId);}
function showAjaxBasketContent(ajaxIndex)
{var itemBox=document.getElementById('shopping_cart_items');if(ajaxObjects[ajaxIndex].response=="")
return;var productItems=ajaxObjects[ajaxIndex].response.split('|||');if(document.getElementById('shopping_cart_items_product'+productItems[0])){var row=document.getElementById('shopping_cart_items_product'+productItems[0]);var items=row.cells[0].innerHTML/1;items=items+1;row.cells[0].innerHTML=items;}else{var tr=itemBox.insertRow(-1);tr.id='shopping_cart_items_product'+productItems[0]
var td=tr.insertCell(-1);td.innerHTML='1';var td=tr.insertCell(-1);td.innerHTML=productItems[1];var td=tr.insertCell(-1);td.style.textAlign='right';td.innerHTML=productItems[2];var td=tr.insertCell(-1);var a=document.createElement('A');td.appendChild(a);a.href='#';a.onclick=function(){removeProductFromBasket(productItems[0]);return false};var img=document.createElement('IMG');img.src='img/interface/remove.gif';a.appendChild(img);}
updateTotalPrice();ajaxObjects[ajaxIndex]=false;}
function updateTotalPrice()
{var itemBox=document.getElementById('shopping_cart_items');var totalPrice=0;if(document.getElementById('shopping_cart_totalprice')){for(var no=1;no<itemBox.rows.length;no++){totalPrice=totalPrice+(itemBox.rows[no].cells[0].innerHTML.replace(/[^0-9]/g)*itemBox.rows[no].cells[2].innerHTML);}
document.getElementById('shopping_cart_totalprice').innerHTML=txt_totalPrice+totalPrice.toFixed(2);}}
function removeProductFromBasket(productId)
{var productRow=document.getElementById('shopping_cart_items_product'+productId);var numberOfItemCell=productRow.cells[0];if(numberOfItemCell.innerHTML=='1'){productRow.parentNode.removeChild(productRow);}else{numberOfItemCell.innerHTML=numberOfItemCell.innerHTML/1-1;}
updateTotalPrice();ajaxRemoveProduct(productId);}
function ajaxValidateRemovedProduct(ajaxIndex)
{if(ajaxObjects[ajaxIndex].response!='OK'){alert('Error while removing product from the database')};}
function ajaxRemoveProduct(productId)
{var ajaxIndex=ajaxObjects.length;ajaxObjects[ajaxIndex]=new sack();ajaxObjects[ajaxIndex].requestFile=url_removeProductFromBasket;ajaxObjects[ajaxIndex].setVar('productIdToRemove',productId);ajaxObjects[ajaxIndex].onCompletion=function(){ajaxValidateRemovedProduct(ajaxIndex);};ajaxObjects[ajaxIndex].runAJAX();}
function ajaxAddProduct(productId)
{var ajaxIndex=ajaxObjects.length;ajaxObjects[ajaxIndex]=new sack();ajaxObjects[ajaxIndex].requestFile=url_addProductToBasket;ajaxObjects[ajaxIndex].setVar('productId',productId);ajaxObjects[ajaxIndex].onCompletion=function(){showAjaxBasketContent(ajaxIndex);};ajaxObjects[ajaxIndex].runAJAX();}
//ajax dyna
var enableCache=false;var jsCache=new Array();var dynamicContent_ajaxObjects=new Array();function ajax_showContent(divId,ajaxIndex,url)
{var targetObj=document.getElementById(divId);targetObj.innerHTML=dynamicContent_ajaxObjects[ajaxIndex].response;if(enableCache){jsCache[url]=dynamicContent_ajaxObjects[ajaxIndex].response;}
dynamicContent_ajaxObjects[ajaxIndex]=false;ajax_parseJs(targetObj)}
function ajax_loadContent(divId,url)
{if(enableCache&&jsCache[url]){document.getElementById(divId).innerHTML=jsCache[url];return;}
var ajaxIndex=dynamicContent_ajaxObjects.length;document.getElementById(divId).innerHTML='Loading content - please wait';dynamicContent_ajaxObjects[ajaxIndex]=new sack();dynamicContent_ajaxObjects[ajaxIndex].requestFile=url;dynamicContent_ajaxObjects[ajaxIndex].onCompletion=function(){ajax_showContent(divId,ajaxIndex,url);};dynamicContent_ajaxObjects[ajaxIndex].runAJAX();}
function ajax_parseJs(obj)
{var scriptTags=obj.getElementsByTagName('SCRIPT');var string='';var jsCode='';for(var no=0;no<scriptTags.length;no++){if(scriptTags[no].src){var head=document.getElementsByTagName("head")[0];var scriptObj=document.createElement("script");scriptObj.setAttribute("type","text/javascript");scriptObj.setAttribute("src",scriptTags[no].src);}else{if(navigator.userAgent.indexOf('Opera')>=0){jsCode=jsCode+scriptTags[no].text+'\n';}
else
jsCode=jsCode+scriptTags[no].innerHTML;}}
if(jsCode)ajax_installScript(jsCode);}
function ajax_installScript(script)
{if(!script)
return;if(window.execScript){window.execScript(script)}else if(window.jQuery&&jQuery.browser.safari){window.setTimeout(script,0);}else{window.setTimeout(script,0);}}