//*************************************************************************************************
//Geert Dekkers Web Studio 2007
//_do.js
//*************************************************************************************************



function reportError(request) 

	//generic prototype helpers
	// error message in an alert
	
	{
		alert('Er heeft zich een fout voorgedaan.');
	}


var myGlobalHandlers = {
	onCreate: function(){
		Element.show('systemWorking');
	},

	onComplete: function() {
		if(Ajax.activeRequestCount == 0){
			Element.hide('systemWorking');
		}
	}
};

function appendURLWithTimeString(){
	
	//generates an argument / value pair
	// usage: add to url
	// this is used to overcome persistent IE caching
	
	var mytime= '&ms='+new Date().getTime();
	
	return mytime;
	
	
}

function findPos(obj) { 
	
	//http://www.quirksmode.org/js/findpos.html
	// finds the position of an element
	// used to position elements such as menus and pop-up text blocks
	
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}



function showTextBlock(posx,posy,childElementIdentifier, parentElementIdentifier, textBlockIdentifier){ 
	
	//slide down text blocks on index.html
	
	var parentElement = $(parentElementIdentifier);
	var textBlock = $(textBlockIdentifier);

	
	if (!($(childElementIdentifier))){
		
		//create a dummy element
		var d = document.createElement("div");
		d.style.display = "none";
		d.id = childElementIdentifier;
		parentElement.appendChild(d);
		
		//textBlock.style.display = "block";
		textBlock.style.position = "absolute";
		textBlock.style.top = posy + "px";
		textBlock.style.left = posx + "px";
		

		Effect.BlindDown(textBlock);
		
	
	}else{
		
		Effect.BlindUp(textBlock);
		parentElement.removeChild($(childElementIdentifier));
	}
	
}


function doOrder(item){ 
	
	//creates a client id or reads the client id from a cookie
	
	if (!readCookie('dd_item')){
		var cName = 'ddbase_' + Math.floor(Math.random()*10000);
		createCookie('dd_item', cName, 365);
		createEntry(cName, item);
	}else{
		createEntry(readCookie('dd_item'),item);
	}
	
}

function createEntry(client,item){ 
	
	//triggers doCreateEntry.php to create an entry in the Items table
	
	var url = "doCreateEntry.php";
	var pars = "client=" + client + "&item=" + item + appendURLWithTimeString();
	
	var mAjax = new Ajax.Updater(
		{success: 'placeholder'}, 
		url,
		{
			method: 'get', 
			parameters: pars,
			onFailure: reportError
		});

		setTimeout("doShow('" + client + "','Basket')", 500);	
}

function doRemoveFromBasket(client,item,view){ 
	
	//triggers doRemoveFormBasket.php to remove the product from the basket
	//triggers doShow to regenerate the basket
	//takes item to execute the removal
	//passes client and view on to doShow()
	
	var url = "doRemoveFromBasket.php";
	var pars = "item=" + item + appendURLWithTimeString();
	
	var mAjax = new Ajax.Updater(
		{success: 'placeholder'}, 
		url,
		{
			method: 'get', 
			parameters: pars,
			onFailure: reportError
		});
	
	
	setTimeout("doShow('" + client + "','" + view + "')", 500);
	
}


function doShow(client, view){ 
	
	//triggers doShow.php to show the products in the clients basket
	// takes client and view args.
	// the view arg handles the visibility of the delete button
	
	var url = "doShow.php";
	var pars = "client=" + client + "&view=" + view + appendURLWithTimeString();
	
	var mAjax = new Ajax.Updater(
		{success: 'placeholder'}, 
		url,
		{
			method: 'get', 
			parameters: pars,
			onFailure: reportError
		});


}



function createCookie(name,value,days) {
	
	// http://www.quirksmode.org/js/cookies.html
	// creates client cookie
	
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) { 
	
	//http://www.quirksmode.org/js/cookies.html
	// reads client cookie
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) { 
	
	//http://www.quirksmode.org/js/cookies.html
	// deletes client cookie
	
	
	createCookie(name,"",-1);
}


function doSendOrder(client){ 
	
	// triggers worker file to read order data from table
	// takes the client argument
	
	var url = "doShowOrder.php";
	var pars = "client=" + client + appendURLWithTimeString();
	
	var mAjax = new Ajax.Updater(
		{success: 'placeholder'}, 
		url,
		{
			method: 'get', 
			parameters: pars,
			onFailure: reportError
		});
	
	
}

function doConfirm(client, action){
	
	// triggers worker file to update orders table
	// takes client and action arguments
	
	var url = "doConfirm.php";
	var pars = "client=" + client + "&action=" + action + appendURLWithTimeString();
	
	var mAjax = new Ajax.Updater(
		{success: 'confirmButtonContainer'}, 
		url,
		{
			method: 'get', 
			parameters: pars,
			onFailure: reportError
		});
	
//	setTimeout('doSendEmail("' + client + '","send")',1000);
	
}


function doSendEmail(client, action){
	
	// sends HTML of text email to client
	// takes client and action arguments
	
	var url = "doSendEmail.php";
	var pars = "client=" + client + "&action=" + action + appendURLWithTimeString();
	
	var mAjax = new Ajax.Updater(
		{success: 'confirmButtonContainer'}, 
		url,
		{
			method: 'get', 
			parameters: pars,
			onFailure: reportError
		});
		
	setTimeout('doConfirm("' + client + '","confirm")',1000);
}

function checkForm(){ 
	
	//checks form fields, returns alert if field is left empty
	
	if ($F('termsandconditions') ==  1 && $F('cEmail') && $F('cAddress') && $F('cPostalCode') && $F('cCity')){
		document.form1.submit();
	}else if ($F('termsandconditions') !=  1){
		alert("Je hebt de leveringsvoorwaarden niet aangevinkt");
		
	}else if (!$F('cEmail')){
		changeBGColor('cEmail');
		alert("Je moet een geldige emailadres invullen");
	}else if (!$F('cAddress')){
		alert("Wil je nog een straat en huisnummer ingeven?");
	}else if (!$F('cPostalCode')){
		alert("Wil je aub je postcode vermelden?");
	}else if (!$F('cCity')){
		alert("Wil je aub een woonplaats ingeven?");
	}
	
}

function changeBGColor(element){
	$(element).style.backgroundColor = "#e49263";
}

var fc = 0; //see showHideBox

function showHideBox(posx, posy, boxName){ 
	
	// show/hides a text box
	// positions text box
	// depends on a position:absolute
	
	fc += 1;
	$(boxName).style.top = posx + "px";
	$(boxName).style.left = posy + "px";

	if (fc == 0 || fc % 2 == 1){
		$(boxName).style.display = "block";
	
	}else{
		$(boxName).style.display = "none";
	}
	
}

function printpage() {
	// generic print function
	window.print();  
	}
