
/****************************************************************************** 
WINDOW: onbeforeunload
PURPOSE: 
AUTHOR: 
DATE: 
INPUTS: 
REQUIRES: 1) 
         		   2) 
RETURNS: 
********************************************************************************/

//window.onbeforeunload = dirtyFormWin;

/****************************************************************************** 
GLOBAL VARIABLE : bSubmitted
PURPOSE: 
AUTHOR: 
DATE: 
INPUTS: 
REQUIRES: 1) 
         		   2) 
RETURNS: 
********************************************************************************/
  	var bSubmitted=false;	
  	
/****************************************************************************** 
FUNCTION: dirtyFormWin
PURPOSE: 
AUTHOR:
DATE: 
INPUTS: 
REQUIRES: 1)
         		   2)
RETURNS: 
********************************************************************************/	
function dirtyFormWin()
{
	var winName = window.name;
//	var lostWarning = "You have made any changes to the fields without submitting, your changes will be lost.";
//	var lostWarning = document.getElementById("dirtyFormMsg").value;

	if(winName == "edtingframe")
	{

		aDirtyForm = isDirtyFormWYS();
		if(aDirtyForm == true) return  lostWarning;

	}
	else {
	
			if(document.getElementById("thisStep")) {
				var thisStep = 	document.getElementById("thisStep").value; 		//alert("thisStep=" + thisStep);
			} else {
				var thisStep = 0; 		//alert("thisStep=" + thisStep);
			}
			
			if(thisStep != 4 & thisStep !=3 & thisStep !=5 & thisStep !=2)	
			{
				aDirtyForm = isDirtyForm();
				if(aDirtyForm == true) return  lostWarning;
			}
					
			else if(thisStep == 4)	
			{				
				aDirtyForm = isDirtyFormPageStructure();
				if(aDirtyForm == true) return  lostWarning;
			}
			
			else if(thisStep == 3)	
			{				
				
				aDirtyForm = isDirtyForm();
				aDirtyFormHidden =	isDirtyHiddenField();

				
				if(aDirtyForm == true ) return lostWarning;			
				if(aDirtyFormHidden == true ) return  lostWarning;	
				
			}			
			
	}
	
	

}


/****************************************************************************** 
FUNCTION: isDirtyForm
PURPOSE: function to check if form is dirty for use with onBeforeUnload event handler
AUTHOR:
DATE: 
INPUTS: form element e.g., document.forms[0]
REQUIRES: 1) global page variable bSubmitted, set to false
         2) submit button on form must hold onClick="javascript:bSubmitted=true;" event handler
        to prevent actual submission of the form from triggering the onBeforeUnload event
RETURNS: true if any element on form has been changed from default, otherwise false
********************************************************************************/	

	function isDirtyForm()
	{

	// *** Compare Form Element Value with Default Value	

		if (!document.forms[0]) return false;
		var eForm = document.forms[0];
		var iNumElems = eForm.elements.length;		


		if(bSubmitted == false) {
			for(i=0; i< iNumElems; i++)
			{
	
				var oElem = eForm.elements[i];
				
				if ("text" == oElem.type || "TEXTAREA" == oElem.tagName)
				{
					if (oElem.value != oElem.defaultValue)return true;
				}
				else if ("checkbox" == oElem.type || "radio" == oElem.type)
				{
					if (oElem.checked != oElem.defaultChecked)return true;
				}
				else if ("SELECT" == oElem.tagName)
				{
					var oOptions = oElem.options;
					var iNumOpts = oOptions.length;
					for (var j=0;j<iNumOpts;j++)
					{
						var oOpt = oOptions[j];
						if (oOpt.selected != oOpt.defaultSelected) return true;	
					}
					
				}// END ELSE
																
			}// END FOR :	
			
		}// END if(bSubmitted)


	}


/****************************************************************************** 
FUNCTION: isDirtyFormPageStructure
PURPOSE: function to check if form is dirty for use with onBeforeUnload event handler
AUTHOR:
DATE: 
INPUTS: form element e.g., document.forms[0]
REQUIRES: 1) global page variable bSubmitted, set to false
         2) submit button on form must hold onClick="javascript:bSubmitted=true;" event handler
        to prevent actual submission of the form from triggering the onBeforeUnload event
RETURNS: true if any element on form has been changed from default, otherwise false
********************************************************************************/	

	function isDirtyFormPageStructure()
	{

	// *** Compare Form Element Value with Default Value	

		if (!document.forms[3]) return false;
		var eForm = document.forms[3]; //alert(eForm.name);
		var iNumElems = eForm.elements.length;		
		
		if(bSubmitted == false) {
			for(i=0; i< iNumElems; i++)
			{
	
				var oElem = eForm.elements[i];
				
				if ("text" == oElem.type || "TEXTAREA" == oElem.tagName)
				{
					if (oElem.value != oElem.defaultValue)return true;
				}
				else if ("checkbox" == oElem.type || "radio" == oElem.type)
				{
					if (oElem.checked != oElem.defaultChecked)return true;
				}
				else if ("SELECT" == oElem.tagName)
				{
					var userPageLength = userPageValue.length;
					var oOptions = oElem.options;
					
					if(userPageLength == oOptions.length)
					{
						var iNumOpts = oOptions.length;
						for (var j=0;j<iNumOpts;j++)
						{
							var oOpt = oOptions[j];
							var lastPageValue = oOpt.value.replace('&amp;' , '&');	
							var defaultPageValue = userPageValue[j].replace('&amp;' , '&');
	
							if (lastPageValue != defaultPageValue) 
							{
								//alert("change=" + j + "/" + oOpt.value + "/" + defaultPageValue) ; 
								return true;
							}
						}					
					
					}
					else if(userPageLength != oOptions.length){
						return true;					
					}

					
				}// END ELSE IF ("SELECT" 
																
			}// END FOR :	
			
		}// END if(bSubmitted)


	}
/****************************************************************************** 
FUNCTION:  
PURPOSE: 
AUTHOR:
DATE: 
INPUTS: 
REQUIRES: 1)
         		   2)
RETURNS: 
********************************************************************************/	

	
	function isDirtyFormWYS()
	{
		if(bSubmitted == false) {	
			var myEditorCode = document.getElementById('myEditorCode');
			
		//Default Value	
			var startValue =  myEditorCode.defaultValue;
			startValue = startValue.replace(/\s/g, '');
								
		// Edit Value	
			submit_form();
			var newData = myEditorCode.value;
			newData = newData.replace(/\s/g, '');
				
		// Check Edit	
			//var aData = startValue.split("");
			//var aNewData = newData.split("");	
			
			
			/*for(i=0 ; i<aData.length ; i++)
			{
				newData = newData.replace(aData[i] , '');
			}
			
			
			for(i=0 ; i<aNewData.length ; i++)
			{
				startValue = startValue.replace(aNewData[i] , '');
			}			
			
			if(startValue != '' | newData != '' ) return true;		*/
			
			if(startValue.length != newData.length) return true;
		}	
	}


	
/****************************************************************************** 
FUNCTION:  
PURPOSE: 
AUTHOR:
DATE: 
INPUTS: 
REQUIRES: 1)
         		   2)
RETURNS: 
********************************************************************************/	

	function isDirtyHiddenField()
	{
	// *** Compare Form Element Value with Default Value	

		var aHiddenField = new Array('color_id_hid' , 'color_group_id' , 'colorGroupNavId');
		var iNumElems = aHiddenField.length
				
		if(bSubmitted == false) {
			for(i=0; i< iNumElems; i++)
			{
	
				var oElem = document.getElementById(aHiddenField[i]);
				var oDefault = document.getElementById("default_" + aHiddenField[i]);

				
				if (oElem.value != oDefault.value ) return true;

																
			}// END FOR :	
			
		}// END if(bSubmitted)		
	
	}
/****************************************************************************** 
FUNCTION:  
PURPOSE: 
AUTHOR:
DATE: 
INPUTS: 
REQUIRES: 1)
         		   2)
RETURNS: 
********************************************************************************/	
	function CheckDirtyForm()
	{

	// *** Compare Form Element Value with Default Value	

		if (!document.forms[0]) return false;
		var eForm = document.forms[0];
		var iNumElems = eForm.elements.length;		


		if(bSubmitted == false) {
			for(i=0; i< iNumElems; i++)
			{
	
				var oElem = eForm.elements[i];
				
				if ("text" == oElem.type || "TEXTAREA" == oElem.tagName)
				{
					if (oElem.value != oElem.defaultValue)return lostWarning;
				}
				else if ("checkbox" == oElem.type || "radio" == oElem.type)
				{
					if (oElem.checked != oElem.defaultChecked)return lostWarning;
				}
				else if ("SELECT" == oElem.tagName)
				{
					var oOptions = oElem.options;
					var iNumOpts = oOptions.length;
					for (var j=0;j<iNumOpts;j++)
					{
						var oOpt = oOptions[j];
						if (oOpt.selected != oOpt.defaultSelected) return lostWarning;
					}
					
				}// END ELSE
																
			}// END FOR :	
			
		}// END if(bSubmitted)


	}