function EstateWeb_Objects_FormsManager(){
	this.SourceForm;
	this.ExcludeHiddenFields = true;
	this.ExcludedFields = "";
	this.StoreFormData = __EstateWeb_Objects_FormsManager_StoreFormData;
	this.RetrieveFormData = __EstateWeb_Objects_FormsManager_RetrieveFormData;
}

// <summary>
// Loops through all form fields and stores them in the user's cookie
// </summary>
function __EstateWeb_Objects_FormsManager_StoreFormData(){
	if ( this.SourceForm ){
		var oSourceForm = document.getElementById(this.SourceForm);
		var aExcludedFields = this.ExcludedFields.split("|");

		
		for ( var i=0; i < oSourceForm.elements.length; i++ ){
			var item = oSourceForm.elements[i];
			var isNotExcluded = true
			for ( var ii = 0; ii < aExcludedFields.length; ii ++ ){
				if ( item.id.toUpperCase() == aExcludedFields[ii].toUpperCase() ){
					isNotExcluded = false;
					break;
				}
			}
		
			if ( isNotExcluded ){
				if ( item.id.length > 0 ){
					__EstateWeb_Objects_FormsManager_Deletecookie(item.id);
				}
				if ( item.id.length > 0 && item.value.length > 0 ){
					switch ( item.type.toUpperCase() ){
						case "CHECKBOX":
							if ( item.checked == true ){
								__EstateWeb_Objects_FormsManager_Setcookie(item.id, item.value);
							}
							break;
						case "TEXT":
							__EstateWeb_Objects_FormsManager_Setcookie(item.id, item.value);
							break;
						case "TEXTAREA":
							__EstateWeb_Objects_FormsManager_Setcookie(item.id, item.value);				
							break;
						case "HIDDEN":
							if ( ! this.ExcludeHiddenFields ){
								__EstateWeb_Objects_FormsManager_Setcookie(item.id, item.value);
							}
							break;
					}
				}
			}
		}
	}else{
			__EstateWeb_Objects_FormsManager_ErrorHandler("Variable not set \'SourceForm\'");
	}
}

function __EstateWeb_Objects_FormsManager_RetrieveFormData(){
	if ( this.SourceForm ){
		var oSourceForm = document.getElementById(this.SourceForm);
		for ( var i=0; i < oSourceForm.elements.length; i++ ){
			var item = oSourceForm.elements[i];
			if ( item.id.length > 0 ){
				var value = __EstateWeb_Objects_FormsManager_Getcookie(item.id);
				switch ( item.type.toUpperCase() ){
					case "CHECKBOX":
						if ( value ){
							item.checked = true;
						}
						break;
					default:
						if ( value ){
							item.value = value;
						}	
						break;					
				}
			}
		}
	}else{
		__EstateWeb_Objects_FormsManager_ErrorHandler("Variable not set \'SourceForm\'");
	}
}


function __EstateWeb_Objects_FormsManager_ErrorHandler(message){
	var msg = "EstateWeb Forms Manager\n________________________\n\nAn Error has occured in this module, please see the error description below for more information\n\n"+message;
	alert(msg);
}

function __EstateWeb_Objects_FormsManager_Setcookie(name, value, expires, path, domain, secure){
		document.cookie= name + "=" + escape(value) +
			((expires) ? "; expires=" + expires.toGMTString() : "") +
			((path) ? "; path=" + path : "") +
			((domain) ? "; domain=" + domain : "") +
			((secure) ? "; secure" : "");
}

function __EstateWeb_Objects_FormsManager_Getcookie(name){
	var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

function  __EstateWeb_Objects_FormsManager_Deletecookie(name){
	if (__EstateWeb_Objects_FormsManager_Getcookie(name))
		{
			__EstateWeb_Objects_FormsManager_Setcookie(name,"");
		}
}
