
/// Types declaration
	var cTEXTBOX="text";
	var cTXTPASSWORD="password";
	var cTEXTAREA="textarea";
	var cCHECKBOX="checkbox";
	var cRADIO="radio";
	var cDROPDOWN="select-one";
	var cLISTBOX="select";

	var cTEXT=1;
	var cNUMERIC=2;
	var cEMAIL=3;
	var cDATE=4;
	var cUSERNAME=5;
	var cPASSWORD=6;
	var	cCPASSWORD=7;

/// Variable and Constants declaration
	var disableColor="#dddddd"

//######### this function is called by the form onsubmit #######################
	function checkform(FormName)
	{
		var frm;
		if (document.all) 
		{ 
			frm=eval("document.all."+FormName);
		}
		else
		{
			frm=eval("document."+FormName);
		}
		return ValidateFormObjects(frm);
	
	}//end of function

//######### this function validates all the objects of form #######################
	var f
	function ValidateFormObjects(frm)
	{
	
		f=frm;
		var frmLength=f.elements.length;
		var itype,irequired;
		var iReturn=0;
		for (var i=0; i < frmLength; i++)	
		{
			itype=frm.elements[i].type;
			irequired=isRequired(frm.elements[i]);

			// for checkbox and radio
			if ((itype==cRADIO) && (irequired==1))
			{
			var field=f.elements[i];
			alert(field.checked);
				if (field.checked==false)
				{
				
					 alert(field.msg);
					 field.style.backgroundColor=disableColor;
					 field.focus();
					iReturn=iReturn+1;
					break;
				}
			}
			//else if (((itype==cCHECKBOX) || (itype==cRADIO)) && (irequired==1))
			else if ((itype==cCHECKBOX) && (irequired==1))
			{
				//validation of dropdown
				var field=f.elements[i];
				 alert(field.value);
				if (field.checked==false)
				{
					 //alert(field.checked);
					 alert(field.msg);
					 field.style.backgroundColor=disableColor;
					 field.focus();
					iReturn=iReturn+1;
					break;
				}
				//alert("validation of checkbox/radio");
				//return true;
			}
			else if (((itype==cDROPDOWN) || (itype==cLISTBOX)) && (irequired==1))
			{
				//validation of dropdown
				var field=f.elements[i];

				if (field.value==0)
				{
					 alert(field.msg);
					 field.style.backgroundColor=disableColor;
					 field.focus();
					iReturn=iReturn+1;
					break;
				}
				
			}
			else if ((itype==cTEXTBOX) || (itype==cTXTPASSWORD) || (itype==cTEXTAREA))
			{
			
				  if (filterWords(f.elements[i]))
					{				
						if (irequired==1)
						{
							if(ValidationType(f.elements[i])==false)
							{
								iReturn=iReturn+1;
								break;
							}
						}
					}
					else
					{
						iReturn=iReturn+1;
						break;
					}
			}
			
		}//end of for

		if (iReturn>0 )
		{
			return false;
		}
		else
		{
			return true;
		}
		
		
	}//end of function

////######## Reads the element's "required" attribute ###########
	function isRequired(elm)
	{
		var obj=elm;
		var retValue=0;
		if (document.all) 
			{ 
				retValue=obj.req;
			}
		else
			{
				if (obj.attributes.req)
				{
					retValue=obj.attributes.req.value;
				}
			}
		return retValue;
	
	}//end of function
////######## Reads the elements msg attribute ###########
	function getMessage(elm)
	{
		var obj=elm;
		var retValue="";
		if (document.all) 
			{ 
				retValue=obj.msg;
			}
		else
			{
				if (obj.attributes.msg)
				{
					retValue=obj.attributes.msg.value;
				}
			}
		return retValue;
	
	}//end of function
	
////######## Reads the elements objtype attribute ###########
	function getObjectType(elm)
	{
		var obj=elm;
		var retValue=1;
		if (document.all) 
			{ 
				retValue=obj.objtype;
			}
		else
			{
				if (obj.attributes.objtype)
				{
					retValue=obj.attributes.objtype.value;
				}
			}
		return retValue;
	
	}//end of function
////######## this function validates all the types of validations ###########
	function ValidationType(elm)
	{
		var field=elm;
		var iRequired=isRequired(field);
		var message=getMessage(field);
		var iType=getObjectType(field);

		if (Trim(field.value) =="")
		{ 
		
				field.focus();
				field.style.backgroundColor=disableColor;
		        alert (message);
				//field.select();
		
		            return false;
		}           
		else
		{ 
		
			//for numeric values	
				if(iType==cNUMERIC)
					{
					if(isNaN(field.value)||(field.value==0)||(field.value < 0))
						{
							alert(message);
				            field.select();
					        return false;
						}
						else
						{
							return true;
						}
					}
					
					//Email
				if(iType==cEMAIL)
					{
					 return checkemail(field);
					}
					
					//Validation for date
				if(iType==cDATE)
					{
					if(isDate(field.value))
						{
							return true;
						}
						else
						{
							field.style.backgroundColor=disableColor;
							field.select();
							return false;
						}
					}
					
					//Validation for Username
				if(iType==cUSERNAME)
					{
		
					if(isUsername(field.value))
						{
							return true;
						}
						else
						{
							field.style.backgroundColor=disableColor;
							field.select();
							return false;
						}
					}
					
					//Validation for Password
				if(iType==cPASSWORD)
					{
		
					if(isPassword(field.value))
						{
							return true;
						}
						else
						{
							field.style.backgroundColor=disableColor;
							field.select();
							return false;
						}
					}
					
					//Validation for confirm Password
					if(iType==cCPASSWORD)
					{
		
					if(confirmPassword(field))
						{
							return true;
						}
						else
						{
							field.style.backgroundColor=disableColor;
							field.select();
							return false;
						}
					}

					
			return true;
		}
	}//end of function

////######## this function validates email ids ###########
	function checkemail(mfield)
	{
		var str=mfield.value
		TheFormNameElmReq=isRequired(mfield) ;
		message=getMessage(mfield);
	
		//var filter=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
		//var filter=/^[a-z0-9][a-z0-9_\.-]{0,}[a-z0-9]@[a-z0-9][a-z0-9_\.-]{0,}[a-z0-9][\.][a-z0-9]{2,4}$/
		var filter=/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$/
		if (filter.test(str))
		{
			var emailIsOk=0;
			var IncomData=str;
			var incomeFiledName=mfield.name
			for (k=0;k<=(IncomData.length-1);k++)
			{
				if ( !((IncomData.charCodeAt(k)>=37 && IncomData.charCodeAt(k)<=126)))
				{
					mfield.focus();
					mfield.style.backgroundColor=disableColor;
					emailIsOk=1;
				}
			}
			if (emailIsOk==0)
			{
			    return true
			}
			else
			{
			    alert(message)
				mfield.focus();
				mfield.select();
		    	return false
			}
		}
	 	else 
	 	{
		    alert(message)
			mfield.focus();
			mfield.select();
		   	return false
		}
	}// end of function
	
//########################################################     	
//This function implements the validation on checkboxes and radio buttons, and it is invoked from within
//the checkform function.
	function checkCheckbox(TheFormName,number)
	{	
		var chk;
		chk=true;
		var i;
		for (i=0; i < number; i++)	
		{			
			if (((TheFormName.elements[i].type=="checkbox")||(TheFormName.elements[i].type=="radio"))&&(TheFormName.elements[i].req==1))	
			{	
				chk = false;
				var j;
				fieldName = TheFormName.elements[i].name;
				ObjCheckBox=document.getElementsByName(fieldName);
		
				for (j=0;j<ObjCheckBox.length;j++)
				{				
					if (ObjCheckBox[j].checked)
					{
						chk=true;
					}				
				}
				
				if (!(chk))
				{
					alert(ObjCheckBox[0].msg);
					ObjCheckBox[0].focus();
					break;
				}
				i=i+j;
			}		
		}
		return chk;
	}//end of function 
//#################################################################
//The following is the code of the Trim function.

function Trim(TRIM_VALUE)
{
	if(TRIM_VALUE.length < 1)
	{return"";}

	TRIM_VALUE = RTrim(TRIM_VALUE);
	TRIM_VALUE = LTrim(TRIM_VALUE);
	if(TRIM_VALUE=="")
	{
	return "";
	}
	else
	{
	return TRIM_VALUE;
	}
} //End Function

function RTrim(VALUE)
{
	var w_space = String.fromCharCode(32);
	var v_length = VALUE.length;
	var strTemp = "";

	if(v_length < 0)
	{return"";}
	var iTemp = v_length -1;

	while(iTemp > -1)
	{
		if(VALUE.charAt(iTemp) == w_space)
		{}
		else
		{
			strTemp = VALUE.substring(0,iTemp +1);
			break;
		}
		iTemp = iTemp-1;
	
	} //End While

return strTemp;

} //End Function

function LTrim(VALUE)
{
	var w_space = String.fromCharCode(32);
	if(v_length < 1)
	{
	return"";
	}
	var v_length = VALUE.length;
	var strTemp = "";
	var iTemp = 0;

	while(iTemp < v_length)
	{
	if(VALUE.charAt(iTemp) == w_space)
	{}
	else
	{
		strTemp = VALUE.substring(iTemp,v_length);
		break;
	}
	iTemp = iTemp + 1;
	} //End While
	return strTemp;
} //End Function

//#################################################################
	
//#################################################################
// DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
// Declaring valid date character, minimum year and maximum year
	var dtCh= "/";
	var minYear=1900;
	var maxYear=2100;
//#################################################################
	function isInteger(s)
	{
		var i;
	    for (i = 0; i < s.length; i++){   
	        // Check that current character is number.
	        var c = s.charAt(i);
	        if (((c < "0") || (c > "9"))) return false;
	    }
	    // All characters are numbers.
	    return true;
	}//end of function

//#################################################################
	function stripCharsInBag(s, bag)
	{
		var i;
	    var returnString = "";
	    // Search through string's characters one by one.
	    // If character is not in bag, append to returnString.
	    for (i = 0; i < s.length; i++){   
	        var c = s.charAt(i);
	        if (bag.indexOf(c) == -1) returnString += c;
	    }
	    return returnString;
	}

//#################################################################
	function daysInFebruary (year)
	{
		// February has 29 days in any year evenly divisible by four,
	    // EXCEPT for centurial years which are not also divisible by 400.
	    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
	}

//#################################################################
	function DaysArray(n) 
	{
		for (var i = 1; i <= n; i++) {
			this[i] = 31
			if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
			if (i==2) {this[i] = 29}
	   } 
	   return this
	}//end of function
//#################################################################
	function isDate(dtStr)
	{
		var daysInMonth = DaysArray(12)
		var pos1=dtStr.indexOf(dtCh)
		var pos2=dtStr.indexOf(dtCh,pos1+1)
		var strDay=dtStr.substring(0,pos1)
		var strMonth=dtStr.substring(pos1+1,pos2)
		var strYear=dtStr.substring(pos2+1)
		strYr=strYear
		if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
		if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
		for (var i = 1; i <= 3; i++) {
			if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
		}
		month=parseInt(strMonth)
		day=parseInt(strDay)
		year=parseInt(strYr)
		if (pos1==-1 || pos2==-1){
			alert("The date format should be : dd/mm/yyyy")
			return false
		}
		if (strMonth.length<1 || month<1 || month>12){
			alert("Please enter a valid month")
			return false
		}
		if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
			alert("Please enter a valid day")
			return false
		}
		if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
			alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
			return false
		}
		if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
			alert("Please enter a valid date")
			return false
		}
	return true
	}// end of function

//#################################################################
//**********************************
//allows only 16 characters of username
//spaces and special characters are not allowed
//to avoid SQL Injection

function isUsername(string) {
var st=string;

	if (st.length<6)
	{
	alert("Username Must be at least 6 characters or more !!!")
	return false;
	}
	if (st.length>16)
	{
	alert("Username should not be greater than 16 Characters");
	return false;
	}

    if (st.search(/^\w+\.?(\w+\.?)?$/) != -1)
	    {
	        return true;
	    }
	    else
	    {
	    alert(st)
	    alert("Only letters,_(Underscore) and numbers allowed")
	        return false;
        }
}

//#################################################################
//**********************************
//allows only 6-16 characters of password
function isPassword(string) 
{
	var st=string;
	if (st.length<6)
	{
		alert("Password Must be at least 6 characters or more !!!")
		return false;
	}
	if (st.length>16)
	{
		alert("Password should not be greater than 16 Characters");
		return false;
	}
	//\w+(\w+)?
	if (st.search(/^[A-Za-z0-9]+$/) != -1)
	    {
	        return true;
	    }
	    else
	    {
	    alert("Only letters,_(Underscore) and numbers allowed")
	        return false;
        }

	return true;
}

//#################################################################
//**********************************
//confirm password and matches it with the matches element
function confirmPassword(elm) 
{
	var field=elm;
	var fieldConfirm=getMatchObjectValue(elm)

		if (field.value!=fieldConfirm )
		{
			alert("Password does not match");
			return false;
		}
		return true
}

////######## Reads the elements objtype attribute ###########
	function getMatchObjectValue(elmnt)
	{

		var obj=eval("f." + getMatchName(elmnt));
		var retValue=obj.value;

		return retValue;
	
	}//end of function

function getMatchName(elm)
	{
		var obj=elm;
		var retValue="";
		if (document.all) 
			{ 
				retValue=obj.matches;
			}
		else
			{
				if (obj.attributes.matches)
				{
					retValue=obj.attributes.matches.value;
				}
			}
		return retValue;
	
	}//end of function


/////########## add to favourite 
function AddToFavorite(sURL,sTitle)
{
	if (document.all)
	window.external.AddFavorite(sURL,sTitle)
}


///////////////////////////////////////////////////////////////////////////////
/* bad word filter */
/* add the bad words to be filtered by the input */

var swear_words_arr=new Array("zxzxzx");
var swear_alert_arr=new Array;
var swear_alert_count=0;
var errorMsg="The form cannot be submitted.\nThe following illegal words were found:\n"
	errorMsg=errorMsg + "_______________________________\n{0}\n_______________________________"



function filterWords(field)
{
 //reset alert count
 swear_alert_count=0;
 var sWord=field.value
  
 var compare_text=sWord;
 
 for(var i=0; i<swear_words_arr.length; i++)
 {
  for(var j=0; j<(compare_text.length); j++)
  {
   if(swear_words_arr[i]==compare_text.substring(j,(j+swear_words_arr[i].length)).toLowerCase())
   {
    swear_alert_arr[swear_alert_count]=compare_text.substring(j,(j+swear_words_arr[i].length));
    swear_alert_count++;
   }
  }
 }
 var alert_text="";
 for(var k=1; k<=swear_alert_count; k++)
 {
  alert_text+="\n" + "(" + k + ")  " + swear_alert_arr[k-1];
 }
 if(swear_alert_count>0)
 {
  alert(errorMsg.replace("{0}",alert_text))
  field.select();
  return false;
 }
 else
 {
 	return true;

 }
}
function walkChildNodes(objID,incValue)
	{
		var obj;
		var content;
				
		if (objID) {
			if (typeof objID == "string") {
				obj = document.getElementById(objID);
				} else {obj = objID;}
		}

		var group = obj.childNodes;
		var output = "";
		var i;
		for (i = 0; i < group.length; i++)
		{
			//output += group[i].tagName;
			content=group[i];
			if (content.nodeType==1)
			{
			//output += content.tagName;
				
				if(content.style.fontSize) 
				{
					var size = parseInt(content.style.fontSize.replace("px", ""));
				} 
				else 
				{
					var size = 11;
				}
				if (size<11) size=11;
			    content.style.fontSize = size+incValue + 'px';
				
			}
				if (group[i].childNodes.length > 0) 
				{
					walkChildNodes(group[i],incValue);
				} 

		}

	}
	

	
	function changeFontSize(inc)
	{
		walkChildNodes('idContents',inc);
		//document.write(walkChildNodes('idContents'));
		/*
		var content= elm;//document.getElementById('idContents');
	    if(content.style.fontSize) 
		{var size = parseInt(content.style.fontSize.replace("px", ""));} 
		else 
		{var size = 11;}
	    content.style.fontSize = size+inc + 'px';
		*/

}

