/*--------------------------------------------------
	Project:	The November Group - CMS Administration
	Script:		cms_contest_form.php
	Includes:	CMS_Contest_Form
--------------------------------------------------*/

var CMS_Contest_Form={
	
	arrFields:new Array(),
	
	addField:function(strFormId,strFieldName,objSettings)
	{
		if(!this.arrFields[strFormId])
			this.arrFields[strFormId]=new Array();
		
		if(document.getElementById(strFormId) && document.getElementById(strFormId).elements[strFieldName])
		{
			var eleInput=document.getElementById(strFormId).elements[strFieldName];
			try
			{
				this.addListener(eleInput,"keyup",CMS_Contest_Form.onKeyup);
				this.arrFields[strFormId][strFieldName]=objSettings;
			}
			catch(e)
			{
			}
			
			if(objSettings.blnDate && document.getElementById(strFieldName))
				if(objSettings.intDateYearStart && objSettings.intDateYearEnd)
					DTS.insert(strFieldName,1,{intYearStart:objSettings.intDateYearStart,intYearEnd:objSettings.intDateYearEnd});
				else
					DTS.insert(strFieldName,1);
		}
	},
	
	onKeyup:function(e)
	{
		eleInput=CMS_Contest_Form.getEventSrc(e);
		strFormId=eleInput.form.id;
		strFieldName=eleInput.name;
		objSettings=CMS_Contest_Form.arrFields[strFormId][strFieldName];
		
		if(objSettings.intMaxLength > 0 && eleInput.value.length > objSettings.intMaxLength)
			eleInput.value=eleInput.value.substr(0,objSettings.intMaxLength);
		if(objSettings.blnNumeric && isNaN(eleInput.value))
			eleInput.value="";
	},
	
	isValidForm:function(frm)
	{
		var blnValid=true;
		
		if(frm)
		{
			for(var strFieldName in CMS_Contest_Form.arrFields[frm.id])
			{
				var objSettings=CMS_Contest_Form.arrFields[frm.id][strFieldName];

				if(frm.elements[strFieldName])
				{
					if(objSettings.blnEmail && (frm.elements[strFieldName].value.length==0 || !CMS_Contest_Form.isValidEmailAddress(frm.elements[strFieldName].value)))
					{
						alert("Please enter a valid email address");
						frm.elements[strFieldName].select();
						frm.elements[strFieldName].focus();
						blnValid=false;
						break;
					}
					else if(objSettings.blnRequired && frm.elements[strFieldName].value.length==0)
					{
						alert(objSettings.strFieldTitle.toString()+" is required");
						frm.elements[strFieldName].focus();
						blnValid=false;
						break;
					}
				}
			}
		}

		return blnValid;
	},

	isValidEmailAddress:function(strEmail)
	{
		//declare variables
		var atPos=strEmail.indexOf("@");
		var dotPos=strEmail.lastIndexOf(".");
		var returnValue=true;
		
		if(strEmail.length==0) //check if email is blank
			returnValue=false;
		else if(atPos<1) //check if there are any characters before the "@" sign
			returnValue=false;
		else if(strEmail.length-dotPos<2) //check if there are any characters after the "."
			returnValue=false;
		else if(dotPos-atPos<2) //check if there are any characters between the "@" and the "." and make sure they're in the right order
			returnValue=false;
		
		return returnValue;
	},
	
	addListener:function(objObject,strEventName,fnHandler)
	{
		//add event listener
		if(objObject.addEventListener)
			objObject.addEventListener(strEventName, fnHandler, false); //DOM-compliant
		else if(objObject.attachEvent)
			objObject.attachEvent("on"+strEventName, fnHandler); //IE
	},
	
	getEventSrc:function(e)
	{
		if(!e)
			e=window.event; //IE
		
		//return event source element
		if(e.target)
			return e.target; //DOM-compliant
		else if(e.srcElement)
			return e.srcElement; //IE
	}
}
