/*
DLlib.js : A library of useful Javascript-functions. 
Copyright (c) 2005, Daniel Löfquist <daniel@kingsofcode.net>
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------
General functions: 
setFocus, emailVal, getQueryString, makeGMT, setCookie, getCookie, delCookie, formValidator, preLoader 
Shoppingcart-functions:
addItem, editItem, removeItem, emptyCart, itemsInCart, checkCart
*/
 
function setFocus(setWhatObj) 
{ 
	//function used to give a field in a form focus 
	//use <body onLoad="setFocus(obj)"> 
	document.getElementById(setWhatObj).focus(); 
} 
 
function emailVal(emailStr) 
{ 
	//returns true if emailStr follows syntax x@x.x 
	//otherwise function returns false 
	var snabelpos=emailStr.indexOf("@"); 
	var revsnabelpos=emailStr.lastIndexOf("@"); 
	var revpunktpos=emailStr.lastIndexOf("."); 
	if((snabelpos<1)||((revpunktpos-revsnabelpos)<2)) 
	{return false;}else{return true;} 
} 
 
function getQueryString(key) 
{ 
	//returns value of key 
	var valueStr; 
	var searchStr; 
	key=(key+"="); 
	var fullQString=window.location.search.substring(1); 
	var fullQLengthInt=fullQString.length; 
	var keyLengthInt=key.length; 
	var keyPosInt=fullQString.indexOf(key); 
	if(!(keyPosInt==-1)) 
	{ 
		var startLengthInt=(keyPosInt+keyLengthInt); 
		searchStr=fullQString.substring(startLengthInt); 
		andPosInt=searchStr.indexOf("&"); 
		if(andPosInt==-1) 
		{ 
			valueStr=searchStr; 
		}else{ 
			valueStr=searchStr.substring(0, (andPosInt)); 
		} 
	}else{ 
		valueStr="**Requested key not found in querystring**"; 
	} 
	return(valueStr); 
} 
 
function makeGMT(datum) 
{ 
	//datum = 'YYYY-MM-DD HH:mm:ss' 
	//returns a correct GMT-date 
	var newDate=new Date(); 
	var dateStr, timeStr; 
	var firstSplit=datum.split(' '); 
	dateStr=firstSplit[0];timeStr=firstSplit[1]; 
	var dateArr=dateStr.split('-');var timeArr=timeStr.split(':'); 
	newDate.setYear(dateArr[0]);newDate.setMonth(dateArr[1]-1); 
	newDate.setDate(dateArr[2]);newDate.setHours(timeArr[0]); 
	newDate.setMinutes(timeArr[1]);newDate.setSeconds(timeArr[2]); 
	return(newDate.toGMTString());	 
} 
 
function setCookie(name, value, expires) 
{ 
	//sets a cookie named 'name' with the value of 'value' and expiry-date 'expires' 
	//'expires' must be a correct GMT-date, use makeGMT()-function 
	var cookieStr; 
	cookieStr=name+"="+escape(value)+"; expires="+expires; 
	document.cookie=cookieStr; 
} 
 
function getCookie(name) 
{ 
	//returns value of cookie 'name' 
	var valueStr; 
	var cookieStr=document.cookie; 
	name=name+"=";nameLength=name.length; 
	var valuePos=cookieStr.indexOf(name); 
	if(!(valuePos==-1)) 
	{ 
		var startLength=(valuePos+nameLength); 
		searchStr=cookieStr.substring(startLength); 
		semicPos=searchStr.indexOf(";"); 
		if(semicPos==-1) 
		{ 
			valueStr=searchStr; 
		}else{ 
			valueStr=searchStr.substring(0, (semicPos)); 
		} 
	}else{ 
		valueStr="FALSE"; 
	} 
	return(unescape(valueStr)); 
} 
 
function delCookie(name) 
{ 
	//deletes cookie 'name' 
	var cookieStr; 
	cookieStr=name+"="+"; expires=Thu, 1 Jan 1970 11:00:00 UTC;"; 
	document.cookie=cookieStr; 
} 

function formValidator()
{
	//Validates form-input.
	//If any field in the form is empty the form will not be submitted.
	//If the first argument is a field named 'email' that field will be validated
	//with the emailVal()-function.
	
	if(formValidator.arguments.length>0)
	{
		var argArr=formValidator.arguments;
		var argc=argArr.length;
		var inputOK=true;
		var argStr;
		//alert(argc);
		for(var i=0;i<argc;i++)
		{
			argStr=document.getElementById(argArr[i]).value;
			if(argStr.length==0){inputOK=false;}//alert(inputOK);}
		}
		if(argArr[0]='email')
		{
			inputOK=emailVal(document.getElementById(argArr[0]).value);
		}
		if(!inputOK){alert("The form is not filled out correctly!");}
		return inputOK;			
	}
}

function preLoader() 
{ 
	if(preLoader.arguments.length==0) 
	{ 
		//preload images for onMouseOver-functions 
		//filename="x_on.x" / "x_off.x" 
		var imgArr=document.images; 
		var imgNum=imgArr.length; 
		for(var i=0;i<imgNum;i++) 
		{ 
			if((imgArr[i].src).indexOf("_off")!=-1) 
			{ 
				imgArr[imgNum+i]=new Image(); 
				imgArr[imgNum+i].src=(imgArr[i].src).replace("_off", "_on"); 
				self.status="Loading: "+imgArr[imgNum+i].src+"..."; 
			} 
		}	self.status=""; 
	}else{ 
		//preload images supplied as arguments to function 
		var argArr=preLoader.arguments; 
		var argc=argArr.length; 
		var imgA=document.images; 
		var imgN=imgA.length; 
		for(var j=0;j<argc;j++) 
		{ 
			imgA[imgN+j]=new Image(); 
			imgA[imgN+j].src=argArr[j]; 
			self.status="Loading: "+argArr[j]+"..."; 
		}	self.status=""; 
	} 
}

//Shoppingcart-functions:

function addItem(artnr, quantity)
{
	var cart=getCookie('myCart');
	var cartArr, numOfItems, i;
	var newItem=1;
	var d=new Date();
	var dateStr;
	dateStr=d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()+" "+(d.getHours()+2)+":"+d.getMinutes()+":"+d.getSeconds();
	if(cart=="FALSE")
	{
		cart=artnr+"||"+quantity+"||";
	}else{
		cartArr=cart.split("||");
		for(i=0;i<cartArr.length;i=i+2)
		{
			if(cartArr[i]==artnr)
			{
				//alert("!!!");
				cartArr[i+1]=(parseInt(cartArr[i+1])+quantity);
				newItem=0;
				break;
			}
		}
		cart=cartArr.join("||");
		if(newItem==1)
		{
			cart=cart+artnr+"||"+quantity+"||";
		}
	}
	setCookie('myCart', cart, makeGMT(dateStr));
	//alert("Item was added to shoppingcart.");
	//location.reload();
	redirURL="viewcart.php";
	self.setTimeout("self.location.href = redirURL;",0);
}

function editItem(artnr, size, color, quantity)
{
	var cart=getCookie('myCart');
	var cartArr=cart.split("||");
	var d=new Date();
	var dateStr;
	dateStr=d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()+" "+(d.getHours()+2)+":"+d.getMinutes()+":"+d.getSeconds();
	for(i=0;i<cartArr.length;i=i+4)
	{
		if(cartArr[i]==artnr&&cartArr[i+1]==size&&cartArr[i+2]==color)
		{
			cartArr[i+3]=quantity;
			break;
		}
	}
	cart=cartArr.join("||");
	setCookie('myCart', cart, makeGMT(dateStr));
	if(quantity==0){removeItem(artnr, size, color);}
	location.reload();
}

function removeItem(artnr)
{
	var cart=getCookie('myCart')
	var cartArr=cart.split("||");
	var i, j, newLength;
	var newCart="";
	var d=new Date();
	var dateStr;
	dateStr=d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()+" "+(d.getHours()+2)+":"+d.getMinutes()+":"+d.getSeconds();
	for(i=0;i<cartArr.length;i=i+2)
	{
		if(cartArr[i]==artnr)
		{
			for(j=i;j<(cartArr.length-2);j++)
			{
				cartArr[j]=cartArr[j+2];
			}
		}
	}
	newLength=cartArr.length-2;
	cartArr.length=newLength;
	cart=cartArr.join("||");
	setCookie('myCart', cart, makeGMT(dateStr));
	location.reload();
}

function emptyCart()
{
	delCookie('myCart');
	//location.reload();
	redirURL="index.php";
	self.setTimeout("self.location.href = redirURL;",0);
}

function diffItemsInCart()
{
	var cart=getCookie("myCart");
	var cartArr=cart.split("||");
	var numOfItems=parseInt(((cartArr.length-1)/2));
	return (numOfItems);
}

function itemsInCart() 
{ 
	var cart=getCookie('myCart'); 
	var cartArr=cart.split("||"); 
	var numOfItems=0; 
	for(i=1;i<cartArr.length;i=i+2) 
	{ 
		numOfItems=numOfItems+parseInt(cartArr[i]); 
	} 
	return (numOfItems); 
}

function checkCart(where)
{
	var numOfItems=itemsInCart();
	if(numOfItems>0)
	{
		redirURL=where;
		self.setTimeout("self.location.href = redirURL;",0);
	}else{
		alert("The shopping cart is empty!");
	}
}

