function EstateWeb_Objects_FormsManager(){
	this.SourceForm;
	this.ExcludeHiddenFields = true;
	this.ExcludeFields = new Array();
	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 ){
		if ( HttpManager.Browser.Type() == HttpManager.Browser.Types.InternetExplorer5Plus ){
			var oSourceForm = HttpManager.Document.GetObject(this.SourceForm);
			for ( var i=0; i < oSourceForm.elements.length; i++ ){
				var item = oSourceForm.elements[i];
				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 "HIDDEN":
							if ( ( this.ExcludeHiddenFields == false ) ){
								__EstateWeb_Objects_FormsManager_Setcookie(item.id, item.value);
							}					
							break;
						default:
							__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 ){
		if ( HttpManager.Browser.Type() == HttpManager.Browser.Types.InternetExplorer5Plus ){
			var oSourceForm = HttpManager.Document.GetObject(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.length > 0 ){
								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,"");
		}
}

