/*
 *  Javascript functions for AfterDawn.com hardware pages
 *  (c) 2006-2007 Jari Ketola, AfterDawn Oy
 *
 */

function createCookie(name,value,days) {
	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=/; domain=afterdawn.com;";
	document.cookie = name+"=;expires=Fri, 02 Nov 2007 00:00:01 GMT; path=/;"
}

// Parses domain cookie for requested cookie

function readCookie(name) {
	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;
}


// Erases cookie

function eraseCookie(name) {
	createCookie(name,"",-1);
}

// Adds removes cookie as checkbox is ticked

function doSelection(deviceid,product) {
	var value = ((readCookie(cookieName) != null) ? readCookie(cookieName) : "");

	for (i=0; i < document.compare.device.length ; i++) {
		if(document.compare.device[i].value == deviceid)
			var boxchecked = document.compare.device[i].checked;
	}

	var count = value.split('$$$').length;
	if(boxchecked && count == 4) {
		alert('You have already selected 3 devices, which is the maximum');
		for (i=0; i < document.compare.device.length ; i++) {
			if(document.compare.device[i].value == deviceid)
				document.compare.device[i].checked = false;
		}
		return false;
	}
	else if(boxchecked && count < 4) {
		newselection = deviceid+'|'+product+'$$$'+value;
		createCookie(cookieName,newselection,1);
	}
	else {
		removed = deviceid+'|'+product+'$$$';
		newselection = value.replace(removed,"");
		createCookie(cookieName,newselection,1);
	}
	updateCheckBoxes();
	updateBox();
}

function updateCheckBoxes() {
	var value = ((readCookie(cookieName) != null) ? readCookie(cookieName) : "");
	var count = value.split('$$$').length;
	if(count == 4) {
		for (i=0; i < document.compare.device.length ; i++) {
			if(document.compare.device[i].checked == false)
				document.compare.device[i].disabled=true;
		}
	}
	else if(typeof document.compare.device != 'undefined') {
		for (i=0; i < document.compare.device.length ; i++) {
			document.compare.device[i].disabled=false;
		}
	}

}

// Check boxes for devices listed in cookie cookieName

function checkSelectedBoxes() {
	document.compare.reset();
	var value = ((readCookie(cookieName) != null) ? readCookie(cookieName) : "");
	var devices = value.split('$$$');
	for(var i=0;i < devices.length-1;i++) {
		var current = devices[i].split('|');
		for (j=0; j < document.compare.device.length ; j++) {
			if(document.compare.device[j].value == current[0])
				document.compare.device[j].checked=true;
		}
	}
}

// Update the box that shows the selected devices (from cookieName)

	function updateBox() {
		var value = ((readCookie(cookieName) !== null) ? readCookie(cookieName) : "");
		var devices = value.split('$$$');
			var newText = '<form action=\"'+compareFormAction+'\" method=\"get\"><h3>'+compareTitle+'</h3>';
		for(var i=0;i < devices.length-1;i++) {
			var current = devices[i].split('|');
			newText = newText+'<input type=\"checkbox\" name=\"id\" value=\"'+current[0]+'\" checked=\"checked\" onclick=\"javascript:unselect('+current[0]+',\''+current[1]+'\')\" /><a href=\"'+compareHardwareLink+current[0]+'\">'+current[1]+'</a></br>';
		}
		if (devices.length > 1) {
			newText = newText+'<p><input type=\"submit\" value=\"'+compareButton+'\"';
			if (devices.length == 2) {
				newText = newText+' disabled=\"disabled\"';
			}
			newText = newText+'></form><a href=\"javascript:clearList();\">'+compareClear+'</a><br><img src=\"http://i.afterdawn.com/v3/spacer.gif\" width=\"200\" height=\"1\" alt=\"\">';
			document.getElementById('textBox').innerHTML = newText;
		}
		else {
			newText = newText+compareTwoOrThree+'<br><img src=\"http://i.afterdawn.com/v3/spacer.gif\" width=\"200\" height=\"1\" alt=\"\">';
			document.getElementById('textBox').innerHTML = newText;
		}
		document.getElementById('textBox').innerHTML = newText;
	}

// Removes the cookie, re-enables all the checkboxes and resets the form

function clearList() {
	eraseCookie(cookieName);
	for (var i=0; i < document.compare.device.length ; i++) {
		document.compare.device[i].disabled = false;
	}
	document.compare.reset();
	updateBox();
}

//

function unselect(deviceid,product) {
	var value = ((readCookie(cookieName) != null) ? readCookie(cookieName) : "");
	var removed = deviceid+'|'+product+'$$$';
	var newselection = value.replace(removed,"");
	createCookie(cookieName,newselection,1);
	checkSelectedBoxes();
	updateCheckBoxes();
	updateBox();

}

// Adds product to basket or increments count if already in basket

function addToBasket(deviceid,product) {
	var value = ((readCookie(basketCookie) != null) ? readCookie(basketCookie) : "");
	var newselection="";
	var devices = value.split('$$$');
	var incremented=false;
	for(var i=0;i < devices.length-1;i++) {
		var current = devices[i].split('|');
		if(current[0] == deviceid) {
			current[2] = (current[2]*1)+1; // cast as number and increment
			devices[i]=current[0]+'|'+current[1]+'|'+current[2];
			incremented=true; // not a new product, just an incrementation
		}
	}
	for(var i=0;i < devices.length-1;i++) {
		var current = devices[i].split('|');
		newselection = newselection + current[0]+'|'+current[1]+'|'+current[2]+'$$$';
	}
	if(incremented) {
		// We are happy, no need to add the device
	}
	else {
		newselection = deviceid + '|' + product + '|1$$$' + newselection;

	}
	createCookie(basketCookie,newselection,7);
	updateBasket();
}


// Update the product basket (from basketCookie)

	function updateBasket() {
		var value = ((readCookie(basketCookie) !== null) ? readCookie(basketCookie) : "");
		var url = "";
		var devices = value.split('$$$');
		var newText = '<h1>'+basketTitle+'</h1>';
		if (devices.length > 1) {
			newText = newText+'<table>';
		}
		var row = 1;
		for(var i=0;i < devices.length-1;i++) {
			var current = devices[i].split('|');
			newText = newText+'<tr class="row_'+row+'"><td>'+current[2]+'* <a href=\"'+basketHardwareLink+current[0]+'\">'+current[1]+'</a></td><td class="remove"><a href=\"javascript:removeFromBasket(\''+current[0]+'|'+current[1]+'|'+current[2]+'\');\"><img src="http://i.afterdawn.com/v3/hardware/hw_minus.gif" alt="'+basketRemoveTitle+'" /></a></td></tr>';
			url = url +current[0]+((current[2] > 1) ? ';'+current[2] : "");
			if(i < devices.length -2) {
				url = url + ',';
			}
			if (row==1) row=2;
			else row=1;
		}
		if (devices.length > 1) {
			newText = newText+'</table>';
			newText = newText+'<hr/><a href=\"javascript:clearBasket();\">'+basketClearShort+'</a> | <a href=\"'+basketShowLink+'?id='+url+'\">'+basketShowText+'</a><br/> <a href=\"'+basketSaveLink+'?id='+url+'\">'+basketSaveText+'</a>';
			document.getElementById('productBasket').innerHTML = newText;
		}
		else {
			newText = newText+basketEmptyDesc;
			document.getElementById('productBasket').innerHTML = newText;
		}
		document.getElementById('productBasket').innerHTML = newText;
	}

// Removes the cookie, re-enables all the checkboxes and resets the form

function clearBasket() {
	eraseCookie(basketCookie);
	updateBasket();
}

//

function removeFromBasket(device) {
	var value = ((readCookie(basketCookie) != null) ? readCookie(basketCookie) : "");
	var removed = device+'$$$';
	var newselection = value.replace(removed,"");
	createCookie(basketCookie,newselection,1);
	updateBasket();

}
// Tarkistaa onko muuttuja 'variable' määritetty

function isDefined(variable)
{
return eval('(typeof('+variable+') != "undefined");');
}

// Ticks boxes and draws the selection box on the page when its (re)loaded

function hardwareOnLoad() {
	if(document.getElementById('textBox') != null) {
		updateBox();
		checkSelectedBoxes();
		updateCheckBoxes();
	}
	if(document.getElementById('productBasket') != null) {
		updateBasket();
	}
}
