﻿function setCookie(cname,value) {
  document.cookie= cname +"="+value; //+"; path=/; expires=Wed, 1 Jan 2020 00:00:00 GMT";
  //E.g. setCookie("name1","Tittle")
}

function getCookie(name) {
	//alert(getCookie("name1"));
	var result = ""; 
	var myCookie = " " + document.cookie + ";";
	var searchName = " " + name + "=";
	var startOfCookie = myCookie.indexOf(searchName); 
	
	var endOfCookie; 

	if (startOfCookie != -1) {
		startOfCookie += searchName.length; 
		endOfCookie = myCookie.indexOf(";", startOfCookie); 
		result = unescape(myCookie.substring(startOfCookie, endOfCookie)); 
	}
	return result; 
}

//get multi value cookie value e.g. Person=name=amit&age=25;School=10th
function getCookieMultiValue(cookiename,cookiekey) {
	var cookievalue=getCookie(cookiename);
	if ( cookievalue == "")
		return "";
	cookievaluesep=cookievalue.split("&");
	
	for (c = 0; c < cookievaluesep.length; c++) {
		cookienamevalue=cookievaluesep[c].split("=");
		if (cookienamevalue.length > 1) { //it has multi valued cookie 
			if ( cookienamevalue[0] == cookiekey )			
				return cookienamevalue[1].toString();			
		}
		else		
			return "";		
	}
        	
	return "";
}

//set multi value cookie value e.g. Person=name=amit&age=25;Age=35
function setCookieMultiValue(cookiename,cookiekey,cookiekeyvalue) {
	var cookievalue = getCookie(cookiename);
	if ( cookievalue.trim() == "" )	{
		setCookie(cookiename,cookiekey+"="+cookiekeyvalue);
		return;
 	}
  	
	//check if cookie already exist
	getcookiekeyvalue=getCookieMultiValue(cookiename,cookiekey);
	newCookieValue=cookievalue.trim();
	if ( getcookiekeyvalue == "")	//key cookie never exist		
		newCookieValue += "&" + cookiekey + "=" + cookiekeyvalue;
	else {
		if ( newCookieValue.substr(0,cookiekey.length+1) == (cookiekey + "=") ) {//Check if at first location . no beginning with &
			//pick rest keys = keylength+equalsign+cookiekeyvalue+nextampesand
			totalcookiekeylength=cookiekey.length+1+getCookieMultiValue(cookiename,cookiekey).length+1;
			newCookieValue = newCookieValue.substr(totalcookiekeylength);
			if (newCookieValue.trim() == "")			
				newCookieValue = cookiekey + "=" + cookiekeyvalue;
			else
				newCookieValue += "&" + cookiekey + "=" + cookiekeyvalue;
		}
		else 
		{
			fullcookiekey="&"+cookiekey+"="+getcookiekeyvalue;
			if ( newCookieValue.indexOf(fullcookiekey) != -1 ) { //cookie key inside the cookie value
				newCookieValue = ReplaceAll(newCookieValue, fullcookiekey, "");
				if (newCookieValue.trim() == "")			
					newCookieValue = cookiekey + "=" + cookiekeyvalue;
				else
					newCookieValue += "&" + cookiekey + "=" + cookiekeyvalue;
			}
		}
	}
	setCookie(cookiename,newCookieValue);
}

// Replace all given string from a string
//     
function ReplaceAll(varb, replaceThis, replaceBy) {	
	newvarbarray = varb.split(replaceThis);
	newvarb = newvarbarray.join(replaceBy);	
	return newvarb;
}

// function called trim as a method of the prototype 
// object of the String constructor.
String.prototype.trim = function() {
  // Use a regular expression to replace l
  //     eading and trailing 
  // spaces with the empty string
  return this.replace(/(^\s*)|(\s*$)/g, "");
}

function setcookieprocess() {
	objform=document.frm
	objform.result.value = "";
	if ( objform.mvcookie.value.trim() == "") {
		setCookie(objform.maincookie.value,objform.cookievalue.value);
		alert('cookie "'+objform.maincookie.value+'" is set');
	}
	else {
		setCookieMultiValue(objform.maincookie.value,objform.mvcookie.value,objform.cookievalue.value);
		alert('cookie "'+objform.maincookie.value+'" with key "'+objform.mvcookie.value+'" is set');
	}
}

function getcookieprocess() {
	objform=document.frm;	
	if ( objform.mvcookie.value.trim() == "") {
		objform.result.value = getCookie(objform.maincookie.value,objform.cookievalue.value);		
	}
	else {		
		objform.result.value = getCookieMultiValue(objform.maincookie.value,objform.mvcookie.value,objform.cookievalue.value);
	}
}
