/*
 *  localization_cookie.js
 *  this class ONLY abstracts the cookiehandling, no other access to the cookiedata is allowed
 *  it does NOT evaluate the zip code
 */

/* 
 * params: localizationString [string:zipcode or uid of an institution], localization method [explicit/implicit]
 * returns nothing
 */
function setLocalization(localizationString,method)
{	
	switch(method){
		case "explicit" :		    
			removeAllLocalizations();
			createCookie("jo_zip",localizationString,365);			
			break;
		case "implicit" : 
			/*  
			 *  TODO: !! wenn schon explizit lokalisiert: auf der institutionsseite ueberpruefen, ob die PLZ des Hauptansprechpartners der
			 *  mit der aktuellen expliziten Lokalisierung uebereinstimmt, wenn ja nix machen ansonsten explizite Lokalisierung loeschen und 
			 *  implizite setzen (am besten schon per PHP die PLZ fuer eine Institution rausrendern, sonst muss man immer nen AJAX Request machen!
			 *  
			 *  PLZ sollte hidden auf der Institutionsseite ausgegeben werden!
			 *  
			 */ 
			removeAllLocalizations();
			createCookie("jo_institution_uid",localizationString,365);			
			break;			
	}
}

/*
 * only extracts the actual localization data from the cookie as an object
 * returns an object with the localization data
 */
function getLocalization()
{
	// return the cookiedata as an object and let the lay above decide what to do
	var locObject = new Object();
	
	if(document.cookie)
	{		
		// important: explicit localization overwrites implizit localization if both are set .. which should actually never happen
		if(readCookie("jo_zip"))
		{
			locObject['localizationString'] = readCookie("jo_zip");
			locObject['type'] = "zip";
			locObject['method'] = "explicit";			
		} else if(readCookie("jo_institution_uid"))
		{
			locObject['localizationString'] = readCookie("jo_institution_uid");
			locObject['type'] = "uid";
			locObject['method'] = "implicit";	
		}			
		return locObject;
	}
		
	return false;
}

function removeAllLocalizations()
{
	eraseCookie("jo_zip");
	eraseCookie("jo_institution_uid");
}


// internal utility functions
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=/";
}
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;
}
function eraseCookie(name) {
	createCookie(name,"",-1);
}
