var Cookies = {
    init: function () {
	    var allCookies = document.cookie.split('; ');
	    for (var i=0;i<allCookies.length;i++) {
		    var cookiePair = allCookies[i].split('=');
		    this[cookiePair[0]] = cookiePair[1];
	    }
    },
    create: function (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=/";
	    this[name] = value;
    },
    erase: function (name) {
	    this.create(name,'',-1);
	    this[name] = undefined;
    }
};
Cookies.init();

function GetControlIdValuePairStringForControl(control) {
    var controlValue = "";
   
    if ( (control.type.toLowerCase() == "radio") || (control.type.toLowerCase() == "checkbox") ) {
        if ( control.checked == true ) { controlValue = control.value; }
    } else {
        if ( control.value ) { controlValue = control.value; };
    }
    
    return control.id + "|" + controlValue;
}

function StoreControlIdValuePairArrayInCookie(cookieName, controlIdValuePairArray, daysUntilCookieExpiration) {
     var cookieValue = controlIdValuePairArray.join("^");     
     Cookies.create(cookieName, cookieValue, daysUntilCookieExpiration);
}

function LoadControlsWithValuesFromCookie(document, cookieName) {
    var controlIdValueArray = RetrieveControlIdValuePairArrayFromCookie(cookieName);        
    UpdateControlsWithValues(document, controlIdValueArray);     
}

function RetrieveControlIdValuePairArrayFromCookie(cookieName) {
    var controlIdValuePairArrayString = Cookies[cookieName];
    if ( controlIdValuePairArrayString == undefined ) {
        return new Array();
    } else {
        return controlIdValuePairArrayString.split("^");
    }    
}

function UpdateControlsWithValues(document, controlIdValuePairArray) {
    for ( var controlIndex = 0; controlIndex < controlIdValuePairArray.length; controlIndex++ ) {

        var controlId = GetControlIdFromControlIdValuePair(controlIdValuePairArray[controlIndex]);   
        var value = GetValueFromControlIdValuePair(controlIdValuePairArray[controlIndex]); 
        var control = document.getElementById(controlId); 
		
		if ( value != "" ) {
	        if ( (control.type.toLowerCase() == "radio") || (control.type.toLowerCase() == "checkbox") ) {
	            control.checked = true; 
	        } else { 
	            control.value = value;
	        }
        }
    }
}

function GetControlIdFromControlIdValuePair(controlIdValuePair) {    
    return controlIdValuePair.split("|")[0];   
}

function GetValueFromControlIdValuePair(controlIdValuePair) {    
    return controlIdValuePair.split("|")[1];   
}

function DisplayCookieContentsInAlert(cookieName) {  
    
    var controlIdValueArray = RetrieveControlIdValuePairArrayFromCookie(cookieName);        
   
    var displayString = "cookie '" + cookieName + "' contents: \n";
    for ( var i = 0; i < controlIdValueArray.length; i++ ) {
        displayString += GetControlIdFromControlIdValuePair(controlIdValueArray[i]) + " = " + GetValueFromControlIdValuePair(controlIdValueArray[i]) + "\n";
    }
    alert(displayString);
}


