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;
	this.createHiddenField = __EstateWeb_Objects_FormsManager_createHiddenField;
}

function __EstateWeb_Objects_FormsManager_createHiddenField(){
	if ( this.SourceForm ){
		if ( typeof Site != "undefined" ){
			var oresponse = Site.RootURL();	
			if ( oresponse.value ){
				if ( HttpManager.Document.GetObject( this.SourceForm ) ){
					if ( HttpManager.Document.GetObject( this.SourceForm )["__emailer_validation"] ){
						HttpManager.Document.GetObject( this.SourceForm )["__emailer_validation"].value = oresponse.value;
					}
				}
			}	
		}
	}
}

String.prototype.reverse = function(){
	splitext = this.split("");
	revertext = splitext.reverse();
	reversed = revertext.join("");
	return reversed;
}

function EstateWeb_Objects_FormsManager_GetDomain(){
	var sdomain =  window.location.hostname.reverse();
	sdomain = sdomain.substring(0, sdomain.lastIndexOf("."));
	return sdomain.reverse();
}

// <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[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, null, null, EstateWeb_Objects_FormsManager_GetDomain());
						}
						break;
					case "HIDDEN":
						if ( ( this.ExcludeHiddenFields == false ) ){
							__EstateWeb_Objects_FormsManager_Setcookie(item.id, item.value, null, null, EstateWeb_Objects_FormsManager_GetDomain());
						}					
						break;
					default:
						__EstateWeb_Objects_FormsManager_Setcookie(item.id, item.value, null, null, EstateWeb_Objects_FormsManager_GetDomain());
						break;
				}
			}
		}
	}else{
			__EstateWeb_Objects_FormsManager_ErrorHandler("Variable not set \'SourceForm\'");
	}
}

function __EstateWeb_Objects_FormsManager_RetrieveFormData(){
	if ( this.SourceForm ){
	this.createHiddenField();
		var oSourceForm = document[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 ){
							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,"", null, null, EstateWeb_Objects_FormsManager_GetDomain());
		}
}
