/**************************************************************************
cookie function.
How to use :
<script src="/javascripts/elements.js" language="JavaScript" type="text/javascript"></script>
<script src="/javascripts/trim.js" language="JavaScript" type="text/javascript"></script>
<script src="/javascripts/cookie.js" language="JavaScript" type="text/javascript"></script>

You have to import elements.js and trim.js before using this fuction.

<script language="javascript">
<!--
var oForm = document.getElementById('form1');
var cookieObj = new cookie(oForm);
cookieObj.loadData('Customer', 0);
cookieObj.loadData('Others', 'modelName');
-->
</script>

Author by Allen Chen, 2006/11/17
***************************************************************************/
//function cookie(pFormsObj) {
function cookie() {
	// parameter
	//this.formsObj = pFormsObj;
	//this.elementsObj = new elements(pFormsObj);
	// mothed
	this.remove = cookie_delete;
	this.loadData = cookie_loadData;
	this.saveData = cookie_saveData;
	this.saveDataByName = cookie_saveDataByName;
	this.loadDataByName = cookie_loadDataByName;
}
function cookie_delete(cookie_name) {
	document.cookie = cookie_name+"=; expires=01/01/1968 00:00:00;";
}
function cookie_loadData(formsObj, name, pstart) {
	var elementsObj = new elements(formsObj);
	var arrays=new Array();
	var array2=new Array();
	var array3=new Array();
	if(!document.cookie.length) {
		return true; 
	}
	var start = 0;
	if (isNaN(pstart)) {
		start = elementsObj.getIndex(pstart);
	}else{
		start = pstart;
	}
	arrays=document.cookie.split("; ");
	for(h=0; h < arrays.length; h++){
		array3=arrays[h].split("=");
		if(array3.length >= 2 && array3[0]==name){
			array2=array3[1].split("\\");
			for(elementsIndex=start,arrayIndex=0; arrayIndex<array2.length; elementsIndex++) {
				type = formsObj.elements[elementsIndex].type;
				if(type=="text" || type=="textarea") {
					arrayValue=unescape(array2[arrayIndex++]);
					if (arrayValue!=''){
						formsObj.elements[elementsIndex].value=arrayValue;
					}
				}else if(type=="select-one"){
					arrayValue=unescape(array2[arrayIndex++]);
					if (arrayValue!="") {
						for(k=0;k<formsObj.elements[elementsIndex].length;k++){
							if (arrayValue == formsObj.elements[elementsIndex].options[k].value){
								formsObj.elements[elementsIndex].selectedIndex=k;
							}
						}
					}
				}else if(type=="radio" || type=="checkbox"){
					if (array2[arrayIndex++]=='true') {
						formsObj.elements[elementsIndex].checked=true;
					}
				}
			}
			break;
		}
	}
}
function cookie_saveData(formsObj, name, pstart, pend) {
	var elementsObj = new elements(formsObj);
	var arrays=new Array();
	var elementsIndex,k;
	var arrayIndex=0;
	var start = 0;
	var end = 0;
	if (isNaN(pstart)) {
		start = elementsObj.getIndex(pstart);
	}else{
		start = pstart;
	}
	if (isNaN(pend)) {
		end = elementsObj.getIndex(pend);
	}else{
		end = pend;
	}
	for(elementsIndex=start; elementsIndex<=end && elementsIndex<formsObj.elements.length;elementsIndex++){
		type=formsObj.elements[elementsIndex].type;
		if(type=="text" || type=="textarea") {
			arrays[arrayIndex++]=escape(formsObj.elements[elementsIndex].value);
		}else if(type=="select-one"){
			k=formsObj.elements[elementsIndex].selectedIndex;
			if (k >=0) {
				arrays[arrayIndex++]=escape(formsObj.elements[elementsIndex].options[k].value);
			}else{
				arrays[arrayIndex++]='';
			}
		}else if(type=="radio" || type=="checkbox"){
			arrays[arrayIndex++]=escape(formsObj.elements[elementsIndex].checked);
		}
	}
	document.cookie=name+"="+arrays.join("\\")+";";
}
function cookie_saveDataByName(name, value, pPath) {
	var path = pPath.trim();
	var cookieString = name+"="+value+"; ";
	if (path.length) {
		cookieString+=" path="+path;
	}
	document.cookie=cookieString;
}
function cookie_loadDataByName(name) {
	var arrays=new Array();
	var array2=new Array();
	var array3=new Array();
	if(!document.cookie.length) {
		return true; 
	}
	//alert(document.cookie);
	arrays=document.cookie.split("; ");
	for(h=0; h < arrays.length; h++){
		array3=arrays[h].split("=");
		if(array3.length >= 2 && array3[0]==name){
			return array3[1];
		}
	}
}
