function addEvent(elm, evType, fn, useCapture)
// cross-browser event handling for IE5+, NS6+ and Mozilla 
// By Scott Andrew 
{
  if (elm.addEventListener) { 
    elm.addEventListener(evType, fn, useCapture); 
    return true; 
  } else if (elm.attachEvent) { 
    var r = elm.attachEvent('on' + evType, fn); 
    return r; 
  } else {
    elm['on' + evType] = fn;
  }
}

function dropEvent(elm, evType, fn, useCapture)
// cross-browser event handling for IE5+, NS6+ and Mozilla 
// By Greg Robbins :P 
{
  if (elm.removeEventListener) { 
    elm.removeEventListener(evType, fn, useCapture); 
    return true; 
  } else if (elm.detachEvent) { 
    var r = elm.detachEvent('on' + evType, fn); 
    return r; 
  } else {
    elm['on' + evType] = null;
  }
}

// climb up the tree to the supplied tag.
function ascendDOM(e, target) {
  while (e.nodeName.toLowerCase() != target && e.nodeName.toLowerCase() != 'html')
  {
  	e = e.parentNode;
  	//alert(e);
  }
  return (e.nodeName.toLowerCase() == 'html') ? null : e;
}

function fetchTarget(e)
{
	if(window.event && window.event.srcElement)
	{
		return window.event.srcElement;
	}
	else if(e && e.target)
	{
		return e.target;
	}
	else
	{
		return;
	}
}

document.removeChildNodes = function(node) {
    while (node.childNodes.length > 0) {
        node.removeChild(node.childNodes[0]);
    }
}


//ajaxObj.method = "TEXT";

var verticalpos = "fromtop";

function JSFX_FloatTopDiv(initialYPos)
{
	var startX = 5;
	var startY = initialYPos;
	var ns = (navigator.appName.indexOf("Netscape") != -1);
	var d = document;
	function ml(id)
	{
		var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
		if(d.layers)el.style=el;
		el.sP=function(x,y){this.style.left=x;this.style.top=y;};
		el.x = startX;
		if (verticalpos=="fromtop")
		el.y = startY;
		else{
		el.y = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
		el.y -= startY;
		}
		return el;
	}
	window.stayTopLeft=function()
	{
		if (verticalpos=="fromtop"){
		var pY = ns ? pageYOffset : document.body.scrollTop;
		ftlObj.y += (pY + startY - ftlObj.y)/6;
		}
		else{
		var pY = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
		ftlObj.y += (pY - startY - ftlObj.y)/6;
		}
		ftlObj.sP(ftlObj.x, ftlObj.y);
		setTimeout("stayTopLeft()", 10);
	}
	ftlObj = ml("cart");
	stayTopLeft();
}


function getTotalOffset(el)
{
	o_el = document.getElementById(el);
	
	var totalOffset = 0;
	var element = o_el;
	var i = 0;
	
	while(element.offsetParent && i < 5)
	{
		totalOffset += element.offsetTop;
		element = element.offsetParent;
		i++;
	}
	
	//alert(totalOffset);
	return totalOffset;
}

function checkFloatCart(totalOffset)
{
	o_body = document.getElementById('theBody');
	o_cart = document.getElementById('cart');
	cartBottomOffset = totalOffset + o_cart.offsetHeight;
	
	//alert("body h: " + o_body.clientHeight + "\ncart top offset: " + totalOffset + "\ncart height: " + o_cart.offsetHeight + "\ncart bottom offset: " + cartBottomOffset);
	
	if(cartBottomOffset > o_body.clientHeight) return false;
	
	return true;
}


function add_cart(id_item)
{
	loading_form = document.forms["item_" + id_item];
	
	id_item = loading_form.id_item.value;
	qty = loading_form.qty.value;
	
	var ajaxCallStr = "action=ajaxCart&id_item=" + id_item + "&qty=" + qty + "&cartAction=add_cart";
	//var ajaxCallStr = "action=addCart";
	
	//alert(ajaxCallStr);
	
	ajaxObj.call(ajaxCallStr, ajaxCartResponse);
}

function setForm(id_item, qty)
{
	if(qty == 0)
	{
		cartAction = "drop_item";
	}
	else
	{
		cartAction = "set_qty";
	}
	
	var ajaxCallStr = "action=ajaxCart&id_item=" + id_item + "&qty=" + qty + "&cartAction=" + cartAction;
	
	ajaxObj.call(ajaxCallStr, ajaxCartResponse);
}

function drop_cart()
{
	if(!confirm(dropCartString)) return;
	
	var ajaxCallStr = "action=ajaxCart&id_item=0&qty=0&cartAction=drop_cart";
	
	ajaxObj.call(ajaxCallStr, ajaxCartResponse);
}

function load_cart()
{
	var ajaxCallStr = "action=ajaxCart&id_item=0&qty=0&cartAction=load_cart";
	
	//alert(ajaxCallStr);
	
	ajaxObj.call(ajaxCallStr, ajaxCartResponse);
}
function ajaxCartResponse(response)
{
	//alert(response.cart);
	if(!response) return;
	
	var o_cartContent = document.getElementById("cartContent");
	var o_cartTotal = document.getElementById("cartTotal");
	var o_cartOrderButton = document.getElementById("cartOrderButton");
	
	//alert(o_cartContent);
	o_cartContent.innerHTML = response.cart;
	o_cartTotal.innerHTML = "TOTAL: " + response.sum + " €";
	
	if(response.evalSum >= minimumOrder)
	{
		//if(o_cartOrderButton != null) o_cartOrderButton.style.display = "block";
		if(o_cartOrderButton != null) o_cartOrderButton.style.visibility = "visible";
	}
	else
	{
		//if(o_cartOrderButton != null) o_cartOrderButton.style.display = "none";
		if(o_cartOrderButton != null) o_cartOrderButton.style.visibility = "hidden";
	}
}

function selectCity()
{
	cityObj = document.getElementById("city");
	city = cityObj.value;
	escapedCity = escape(city);
	
	deliveryBlockWarnObj = document.getElementById("deliveryBlockWarn");
	deliveryBlockObj = document.getElementById("deliveryBlock");
	
	if(escapedCity == "")
	{	
		deliveryBlockWarnObj.style.display = "block";	
		deliveryBlockObj.style.display = "none";
		return;
	}
	else
	{
		deliveryBlockWarnObj.style.display = "none";
		deliveryBlockObj.style.display = "block";
	}
	
	var ajaxCallStr = "action=ajaxDelivery&deliveryCity=" + escapedCity + "&lang=" + lang;
	
	ajaxObj.call(ajaxCallStr, ajaxSelectCityResponse);
	
	return;
}

function ajaxSelectCityResponse(response)
{
	if(!response) return;
	
	newDates = response.dates;
	newTimes = response.times;
	
	//<li><input type="radio" name="delivery_date" id="1179180000" value="1179180000"><label for="1179180000">dimarts, 15 de maig de 2007</label></li>
	
	targetUl = document.getElementById("deliveryDatesUl");
	document.removeChildNodes(targetUl);
	
	for(i = 0; i < newDates.length; i++)
	{
		newLabel = document.createElement("LABEL");
		newLabel.htmlFor = "d_" + newDates[i][0];
		newLabel.innerHTML = newDates[i][1];
		
		if(!document.all)
		{
			newInput = document.createElement("INPUT");
			newInput.type = "radio";
			newInput.name = "delivery_date";
			newInput.id = "d_" + newDates[i][0];
			newInput.value = newDates[i][0];
			if(selectedDeliveryDate == newDates[i][0])
			{
				newInput.checked = true;
			}
		}
		else
		{
			if(selectedDeliveryDate == newDates[i][0])
			{
				newInput = document.createElement('<input type="radio" name="delivery_date" id="d_' + newDates[i][0] + '" value="' + newDates[i][0] + '" checked>');
			}
			else
			{
				newInput = document.createElement('<input type="radio" name="delivery_date" id="d_' + newDates[i][0] + '" value="' + newDates[i][0] + '">');
			}
		}
		
		
		
		newLi = document.createElement("LI");
		newLi.appendChild(newInput);
		newLi.appendChild(newLabel);
		
		targetUl.appendChild(newLi);
	}
	
	targetUl = document.getElementById("deliveryTimesUl");
	document.removeChildNodes(targetUl);
	
	for(i = 0; i < newTimes.length; i++)
	{
		newLabel = document.createElement("LABEL");
		newLabel.htmlFor = "t_" + i;
		newLabel.innerHTML = newTimes[i][1];
		
		if(!document.all)
		{
			newInput = document.createElement("INPUT");
			newInput.type = "radio";
			newInput.name = "delivery_time";
			newInput.id = "t_" + i;
			newInput.value = newTimes[i][0];
			if(selectedDeliveryTime == newTimes[i][0])
			{
				newInput.checked = true;
			}
		}
		else
		{
			if(selectedDeliveryTime == newTimes[i][0])
			{
				newInput = document.createElement('<input type="radio" name="delivery_time" value="' + newTimes[i][0] + '" id="t_' + i + '" checked>');
			}
			else
			{
				newInput = document.createElement('<input type="radio" name="delivery_time" value="' + newTimes[i][0] + '" id="t_' + i + '">');
			}
		}
		
		
		
		newLi = document.createElement("LI");
		newLi.appendChild(newInput);
		newLi.appendChild(newLabel);
		
		targetUl.appendChild(newLi);
	}

	//<li><input type="radio" name="delivery_time" value="16.00h-19.00h" id="16h-19h"><label for="16h-19h">de 16.00 h a 19.00 h</label></li>
}

function alertClick(e)
{
	target = fetchTarget(e);
	alert(target.id);
}

function launch(newURL, newName, newFeatures, orgName)
{
	self.name = orgName;
	
	remote = open(newURL, newName, newFeatures);
	
	return remote;
}

function signup()
{
	URL = "signup.php";
	
	launch(URL, "popup", "resizable,width=580,height=400,left=50,top=50,scrollbars", "opener");
}

function recover()
{
	URL = "recover.php";
	
	launch(URL, "popup", "resizable,width=580,height=400,left=50,top=50,scrollbars", "opener");
}

var myimages = new Array();

function preloadimages()
{
	for (i=0; i<preloadimages.arguments.length; i++)
	{
		myimages[i] = new Image();
		myimages[i].src = preloadimages.arguments[i];
	}
}


function loadDateMod()
{
	allAnchors = document.getElementsByTagName("A");
	for(i = 0; i < allAnchors.length; i++)
	{
		
		if(allAnchors[i].id.match(/changeDate_/))
		{
			addEvent(allAnchors[i], "click", loadDateModCell, false);
		}
	}
}

function loadDateModCell(e)
{
	target = fetchTarget(e);
	//alert(target.id);
	orderNumber = target.id.match(/changeDate_(.*)/)[1]; 
	
	var ajaxCallStr = "action=ajaxDateMod&orderNumber=" + orderNumber;
	ajaxObj.call(ajaxCallStr, loadDateModCellResp);
	return;
}

function loadDateModCellResp(resp)
{
	if(!resp) return;
	
	dateModCellObj = document.getElementById(resp.orderNumber);
	
	dateObj = document.getElementById("date_" + resp.orderNumber);
	origDate = dateObj.innerHTML;
	
	selectObj = document.createElement("SELECT");
	selectObj.id = "newDate_" + resp.orderNumber;
	
	for(i = 0; i < resp.dates.length; i++)
	{
		optObj = document.createElement("OPTION");
		optObj.value = resp.dates[i][0];
		optObj.innerHTML = resp.dates[i][1];
		if(resp.dates[i][0] == origDate)
		{
			optObj.selected = true;
			optObj.style.backgroundColor = "#ccf";
		}
		selectObj.appendChild(optObj);
	}
	
	dateModCellObj.replaceChild(selectObj, dateObj);
	
	controlButton = document.getElementById("changeDate_" + resp.orderNumber);
	dropEvent(controlButton, "click", loadDateModCell, false);
	addEvent(controlButton, "click", sendNewDate, false);
	controlButton.innerHTML = "Guardar";
	
}

function sendNewDate(e)
{
	target = fetchTarget(e);
	orderNumber = target.id.match(/changeDate_(.*)/)[1];
	
	selectObj = document.getElementById("newDate_" + orderNumber);
	newDate = selectObj.value;
	
	var ajaxCallStr = "action=ajaxDateSet&orderNumber=" + orderNumber + "&newDate=" + newDate;
	ajaxObj.call(ajaxCallStr, sendNewDateResp);
	return;
}

function sendNewDateResp(resp)
{
	orderNumber = resp.orderNumber;
	newDate = resp.newDate;
	
	dateObj = document.createElement("SPAN");
	dateObj.innerHTML = newDate;
	dateObj.id = "date_" + orderNumber;
	
	dateModCellObj = document.getElementById(orderNumber);
	selectObj = document.getElementById("newDate_" + orderNumber);
	
	dateModCellObj.replaceChild(dateObj, selectObj);
	
	controlButton = document.getElementById("changeDate_" + resp.orderNumber);
	dropEvent(controlButton, "click", sendNewDate, false);
	addEvent(controlButton, "click", loadDateModCell, false);
	controlButton.innerHTML = "Canviar";
}





























