var requester = null;
var formRequester = null;
var server = "";
function ajAxion(a,i,p,s,test)
{
	if (s == "l") server = "http://127.0.0.1/hprints_com";
	else if (s == "s") server = "http://hprints.com";
	else if (s == "fr") server = "http://fr.hprints.com";
	
	if (requester != null && requester.readyState != 0 && requester.readyState != 4)
	{
		requester.abort();
	}

	try
	{
		requester = new XMLHttpRequest();
	}
	catch (error)
	{
		try
		{
			requester = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (error)
		{
			requester = null;
			return false;
		}
	}

	requester.onreadystatechange = onreadystatechangeTest;
//	if (test == 'test') alert ("TEST action="+a+"&id="+i+"&this="+p);
	
	requester.open("GET", server+"/cartActions.php?action="+a+"&id="+i+"&this="+p);
	requester.send(null);
	
	return true;
}


/* Execute the action which has been associated with the completion of this object */
function onreadystatechangeTest()
{
	$("cartContainer").innerHTML = "<img src=\"http://hprints.com/illu/loading2.gif\" width=\"11\" height=\"11\" alt=\"\" style=\"margin-top:4px; margin-left:2px;\" />";
	// If XMLHR object has finished retrieving the data
	if (requester.readyState == 4)
	{
		// If the data was retrieved successfully
		try
		{
			if (requester.status == 200)
			{
				writeDetails();
			}
			// IE returns a status code of 0 on some occasions, so ignore this case
			else if (requester.status != 0)
			{
				alert("There was an error while retrieving the URL: " + requester.statusText);
			}
		}
		catch (error)
		{
		}
	}

	return true;
}

function writeDetails()
{
	var total_avec_monnaie = "";
	if (requester.responseText.charAt(0) == "<")
	{
		var oo = requester.responseXML.getElementsByTagName("oo")[0].childNodes[0].nodeValue;
		var changeThisStatus = requester.responseXML.getElementsByTagName("changeThisStatus")[0].childNodes[0].nodeValue;
		var yourCartTop = requester.responseXML.getElementsByTagName("yourCartTop")[0].childNodes[0].nodeValue;
		var total = requester.responseXML.getElementsByTagName("total")[0].childNodes[0].nodeValue;
		var monnaie = requester.responseXML.getElementsByTagName("monnaie")[0].childNodes[0].nodeValue;
		
	//	var yourCartTop_monnaie = yourCartTop.replace("X", monnaie);
		//&euro; ne passe pas...
		if (monnaie == "EUR") total_avec_monnaie = total+" &euro;"; 
		else total_avec_monnaie = "$"+total; 

		if (oo != "--") {
			$("cartContainer").innerHTML = oo;
			
			$('thumbs').observe('click', respondToClick);
			$('lines').observe('click', respondToClick);
			
			ckie = jar.get('cartOptions');
			if (ckie == null) jar.put('cartOptions',{display: "thumbs"});  //default
			
			if (ckie != 0 && (ckie.display == "thumbs" || ckie.display == "lines")) TorL = ckie.display;
			else TorL = "thumbs"; //default
			
			if (TorL == "thumbs") $('lines').setOpacity(0.3);
			if (TorL == "lines") $('thumbs').setOpacity(0.3);
			if (TorL == "thumbs" || TorL == "lines") $(TorL).stopObserving('click', null);
			
			//
			if (changeThisStatus != "--") $("incart_status").innerHTML = changeThisStatus;		
			if (yourCartTop != "--")  {
				$("panier_b1").className = 'panier_bckg_active';
				$("panier_b2").className = 'panier_bckg_active';
				$("yourCartTop").innerHTML = "<nobr><a href=\"http://hprints.com/cart.php\" class=\"linkPanier\">"+yourCartTop+" ("+total_avec_monnaie+")</a></nobr>";
			}
			
		} else {
			$("panier_b1").className = 'panier_bckg';
			$("panier_b2").className = 'panier_bckg';
			$("yourCartTop").innerHTML = "<span class=\"topMenuLinks\">Your cart is empty</span>";
			$("cartContainer").innerHTML = '<div class="yourCartHeader">Your cart</div><div style="width:50%; border-top:2px solid #000; color:#666; padding-top:2px; padding-bottom:3px;" >empty</div>'; //empty loading...
		}
		
	///////////////	
	}
	else
	{
		$("cartContainer").innerHTML = "<span style=\"font-size:10px; color:#ccc;\">error</span>";
	}

	return true;
}

function respondToClick(event) {
  var element = event.element();
  var elementA = element.up(); //se fixe sur l'image au lieu du A
//  alert("("+elementA.id+" _ "+elementA.tagName);
  toggle_boxes(elementA.id); 
  return false;
}

function toggle_boxes(toSet){

	if (toSet == "thumbs") toUnset = "lines";
	else if (toSet == "lines") toUnset = "thumbs";
		
	$(toSet).setOpacity(1); 
	$(toUnset).setOpacity(0.3); 
	$(toUnset).observe('click', respondToClick);
	$(toSet).stopObserving('click', null);
	
	['cart_en_lignes', 'cart_en_paquet'].each(Element.toggle);
	// and toggles the visibility of div#error-message and div#confirmation-message.

	jar.put('cartOptions',{display: toSet}); 
	return false;
}

/**
 * Javascript code to store data as JSON strings in cookies. 
 * It uses prototype.js 1.5.1 (http://www.prototypejs.org)
 * 
 * Author : Lalit Patel
 * Website: http://www.lalit.org/lab/jsoncookies
 * License: Apache Software License 2
 *          http://www.apache.org/licenses/LICENSE-2.0
 * Version: 0.5
 * Updated: Jan 26, 2009 
 * 
 */
var CookieJar = Class.create();

CookieJar.prototype = {

	/**
	 * Append before all cookie names to differntiate them.
	 */
	appendString: "__CJ_",

	/**
	 * Initializes the cookie jar with the options.
	 */
	initialize: function(options) {
		this.options = {
			expires: 3600,		// seconds (1 hr)
			path: '',			// cookie path
			domain: '',			// cookie domain
			secure: ''			// secure ?
		};
		Object.extend(this.options, options || {});

		if (this.options.expires != '') {
			var date = new Date();
			date = new Date(date.getTime() + (this.options.expires * 1000));
			this.options.expires = '; expires=' + date.toGMTString();
		}
		if (this.options.path != '') {
			this.options.path = '; path=' + escape(this.options.path);
		}
		if (this.options.domain != '') {
			this.options.domain = '; domain=' + escape(this.options.domain);
		}
		if (this.options.secure == 'secure') {
			this.options.secure = '; secure';
		} else {
			this.options.secure = '';
		}
	},

	/**
	 * Adds a name values pair.
	 */
	put: function(name, value) {
		name = this.appendString + name;
		cookie = this.options;
		var type = typeof value;
		switch(type) {
		  case 'undefined':
		  case 'function' :
		  case 'unknown'  : return false;
		  case 'boolean'  : 
		  case 'string'   : 
		  case 'number'   : value = String(value.toString());
		}
		var cookie_str = name + "=" + escape(Object.toJSON(value));
		try {
			document.cookie = cookie_str + cookie.expires + cookie.path + cookie.domain + cookie.secure;
		} catch (e) {
			return false;
		}
		return true;
	},

	/**
	 * Removes a particular cookie (name value pair) form the Cookie Jar.
	 */
	remove: function(name) {
		name = this.appendString + name;
		cookie = this.options;
		try {
			var date = new Date();
			date.setTime(date.getTime() - (3600 * 1000));
			var expires = '; expires=' + date.toGMTString();
			document.cookie = name + "=" + expires + cookie.path + cookie.domain + cookie.secure;
		} catch (e) {
			return false;
		}
		return true;
	},

	/**
	 * Return a particular cookie by name;
	 */
	get: function(name) {
		name = this.appendString + name;
		var cookies = document.cookie.match(name + '=(.*?)(;|$)');
		if (cookies) {
			return (unescape(cookies[1])).evalJSON();
		} else {
			return null;
		}
	},

	/**
	 * Empties the Cookie Jar. Deletes all the cookies.
	 */
	empty: function() {
		keys = this.getKeys();
		size = keys.size();
		for(i=0; i<size; i++) {
			this.remove(keys[i]);
		}
	},

	/**
	 * Returns all cookies as a single object
	 */
	getPack: function() {
		pack = {};
		keys = this.getKeys();

		size = keys.size();
		for(i=0; i<size; i++) {
			pack[keys[i]] = this.get(keys[i]);
		}
		return pack;
	},

	/**
	 * Returns all keys.
	 */
	getKeys: function() {
		keys = $A();
		keyRe= /[^=; ]+(?=\=)/g;
		str  = document.cookie;
		CJRe = new RegExp("^" + this.appendString);
		while((match = keyRe.exec(str)) != undefined) {
			if (CJRe.test(match[0].strip())) {
				keys.push(match[0].strip().gsub("^" + this.appendString,""));
			}
		}
		return keys;
	}
};

jar = new CookieJar({
expires:3600,   // seconds
path: '/'
});

/*
dog = {name: 'Jacky', breed: 'Alsatian', age:5};

jar.put('mydog', dog);
mydog = jar.get('mydog');
 
alert("My dog's name is " + mydog.name);
alert("He is " + mydog.age + " years old");
alert("He is an " + mydog.breed); */
