function validateForm(form)
{
            
    var noOfFormElements=form.elements.length;
	var elementValue;
	var required;
	var type;
	var stype;
	var label=""; //name of the form element
    
    //alert("noOfFormElements="+document.getElementsByTagName("label"));

    valid=true;
    for (var i=0;i<noOfFormElements;i++)
	{
		var object=form.elements[i];
		//required=object.getAttribute("required");
		var attributesData="";
		//attributesData=object.getAttribute("class");
		attributesData=object.className;
		//alert("attributesData="+attributesData);
		var attributesArr=new Array();
		if((attributesData!=null) &&(attributesData.length>0))
		{
			attributesArr=attributesData.split(" ");
		}
			
		required=((attributesArr.length)>0)?attributesArr[0]:"";
		stype=((attributesArr.length)>1)?attributesArr[1]:"";
		
		//alert("required="+required);
		//alert("stype="+stype);
		
		//required=object.getAttribute("class");
		elementValue=object.value;
		elementtag=object.tagName;
		//label=object.getAttribute("label");
		
		type=object.type;		
		//stype=object.getAttribute("stype");
		
		elementId=object.getAttribute("ID");
		//alert(elementId);
		
		label="";
		var labelObject="";
		
		var labels=document.getElementsByTagName("label"),i;
		for( j=0; j<labels.length;j++ )
		{
			if(labels[j].htmlFor==elementId )
			{
				label=labels[j].innerHTML;
				break;
			} 			
		}

		
		if (elementtag=="INPUT")
		{
			 if (type=="text")
			 {
				var labelPrefix="Enter ";
				if(!elementValue)
				{
					if (required=="required")
					{
						showError(object,labelPrefix+label);
						//showError(labelObject,labelPrefix+label);
					}
				} //end of if !elementValue
				if(elementValue!="")
				{
					if(stype=="date")
					{								
						var dateflag=isValidDate(elementValue);	
						if(dateflag!="true")
						{
							showError(object,dateflag);
						}
					}//end of if stype=date
					if(stype=="email")
					{
						var emailflag=isValidEmail(elementValue);	
						if(emailflag!="true")
						{
							showError(object,emailflag);
						}
					}//end of if stype=email
					if(stype=="pincode")
					{
						var pincodeflag=isValidPincode(elementValue);	
						if(pincodeflag!="true")
						{		
							showError(object,pincodeflag);		
						}
					}	//end of if stype=pincode									
					if(stype=="phoneno")
					{
						var phonenoflag=isValidPhoneNo(elementValue);	
						if(phonenoflag!="true")
						{													
							showError(object,phonenoflag);		
						}
					}//end of if stype=phoneno	
					if(stype=="phonenos")
					{
						var phonenoflag=areValidPhoneNos(elementValue);	
						if(phonenoflag!="true")
						{													
							showError(object,phonenoflag);		
						}
					}//end of if stype=phonenos	
					if(stype=="digits")
					{
						var digitflag=isValidDigit(elementValue);	
						if(digitflag!="true")
						{
							showError(object,digitflag);							
						}
						else
						{
							object.value=parseInt(elementValue);
						}
					}//end of if stype=digits
					if(stype=="digitsWithDot")
					{
						var digitflag=isValidDigitWithDot(elementValue);	
						if(digitflag!="true")
						{
							showError(object,digitflag);
						}
						else
						{
							object.value=parseFloat(elementValue);
						}
					}//end of if stype=digitsWithDot
					if(stype=="percent")
					{	
						var digitflag=isValidPercentage(elementValue);	
						if(digitflag!="true")
						{
							showError(object,digitflag);								
						}
						else
						{
							object.value=parseFloat(elementValue);
						}
					}//end of if stype=digitsWithDot	
						
				}//end of if elementValue!=""
			}//end if text
            //---------------------------------- END OF INPUT TYPE=TEXT ----------------------------------------
            else if (type=="password")			
			{	
				var labelPrefix="Enter ";
				if(!elementValue)
				{
					if (required=="required")
					{
						showError(object,labelPrefix+label);
					}
				} //end of if !elementValue
				if(elementValue!="")
				{
					if((stype!="loginPassword")&&(elementValue.length<8))
					{								
						var errorMsg="Password should be atleast 8 character length";	
						showError(object,errorMsg);
					}//end of if stype=date	
				}	//end of if elementValue!=""	
			}//end if password
		}// End of if elementtag INPUT
		//---------------------------------- END OF elementtag INPUT ----------------------------------------
		else if (elementtag =="SELECT")			
		{	
			var labelPrefix="Select ";
			if (required=="required")
			{
				if (object.options.selectedIndex==0)
				{
					showError(object,labelPrefix+label);
				}
			}
		}//end if elementtag SELECT
		//---------------------------------- END OF elementtag SELECT----------------------------------------
		else if (elementtag =="TEXTAREA")			
		{	
			var labelPrefix="Enter ";
			if (required=="required")
			{
				if (!elementValue)
				{
					showError(object,labelPrefix+label);
				}
			}
		}//end if elementtag TEXTAREA
		//---------------------------------- END OF elementtag TEXTAREA----------------------------------------

	}//end of for loop with var i
	
    return valid;
}// end of function validateForm



// display error messages
function showError(obj,message)
{
    if(!obj.errorNode)
    {
        obj.onchange=hideError;
        var span=document.createElement('span');
        span.className='errorMessage';
        span.appendChild(document.createTextNode(message));
        obj.parentNode.appendChild(span);
        obj.errorNode=span;
       // obj.className='errorMessage';

    }
    valid=false;
    return
}
// hide error messages
function hideError()
{
    this.parentNode.removeChild(this.errorNode);
    this.errorNode=null;
    this.onchange=null;
}
// execute 'validateForm()'function when page is loaded
window.onload=function()
{
    // check if browser is W3CDOM compatible
    if(document.getElementById&&document.getElementsByTagName&&document.createElement)
    {
        var theform=document.getElementsByTagName('form')[0];
        if(theform)
        {
        	theform.onsubmit=function()
			{
				return validateForm(this)
			}
        };
	}
}



//--------------------------------------------------------------------

//Check for Date validation

function isValidDate(dateStr) 
{
	// Checks for the following valid date formats:
	// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
	// Also separates date into month, day, and year variables
    var months=["January","Febrauary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
	var flag="true";
//	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

	// To require a 4 digit year entry, use this line instead:
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

	var matchArray = dateStr.match(datePat); // is the format ok?
	
	if (matchArray == null) 
	{
		//alert("Date is not in a valid format.\nEx. 12/25/2005 (mm/dd/yyyy) ");
		flag= "false";
		return("Date is not in a valid format.\nEx. 12/25/2005 (mm/dd/yyyy) ");
	}
	
	else
	{
		//month = matchArray[3]; // parse date into variables
		//day = matchArray[1];
		month = matchArray[1]; // parse date into variables
		day = matchArray[3];
		year = matchArray[4];
		
		if (month < 1 || month > 12) 
		{ // check month range
			return("Month must be between 1 and 12.");
			flag="false";
		}
		if (day < 1 || day > 31) 
		{
			return("Day must be between 1 and 31.");
			flag= false;
		}
		if ((month==4 || month==6 || month==9 || month==11) && day==31) 
		{
			return("Month "+months[month-1]+" doesn't have 31 days!")
			flag= "false";
		}
		if (month == 2) 
		{ // check for february 29th
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day>29 || (day==29 && !isleap)) 
			{
				return("February " + year + " doesn't have " + day + " days!");
				flag= "false";
			}
	  	}
	  	else
	  	{
	  		return "true";
	  	}
	}
//return flag;  // date is valid
}//--------------------------------------------------------------------

//--------------------------------------------------------------------
//email validation

function isValidEmail(string) 
{
    if (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
	{
        return "true";
	}
    else
	{
		return("Enter valid email ID\nEx:someone@something.com");
	}
}
//--------------------------------------------------------------------
//multiple email validation

function areValidEmailIds(string) 
{
   var emailIds =new Array();
   emailIds=string.split(',');
   var flag="false";
   
   for (var i=0;i<emailIds.length;i++)
   {
		if (!emailIds[i].match(""))
		{				
			if(!(emailIds[i].search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1))
			{	    
		        return("Enter valid email IDsEx:someone@something.com,anyone@anything.com");
				break;
			}
			else
			{
				flag="true";
			}
		}
   }
	
   return flag;
}
//--------------------------------------------------------------------

//Pincode validation

function isValidPincode(picodeStr) 
{

    var flag="true";
	
    var pincodePat = /^(\d{3})(\-| |)(\d{3})$/;

    var matchArray = picodeStr.match(pincodePat); // is the format ok?
    
    if (matchArray == null) 
    {
    	return("Enter valid Pincode \nEx: 560-076 or 560 076 or 560076")
    	flag= "false";
    }
    
    else
    {
    	pin1 = matchArray[1]; // parse pincode into variables
    	pin2 = matchArray[3];
		
		if (!pin1.length==3)
		{
			return("Enter valid Pincode \nEx: 560-076 or 560 076 or 560076")
			flag= "false";			
		}	
		
		if (!pin2.length==3)
		{
			return("Enter valid Pincode \nEx: 560-076 or 560 076 or 560076")
			flag= "false";			
		}
	}
	
	return flag;
}

//--------------------------------------------------------------------
function isValidPhoneNo(phnoStr) 
{
    var flag="false";
	var i;
	var len=parseInt(phnoStr.length);
	
	var str1=phnoStr.substring(0,1);
	
	
	for (i=0;i<len;i++)
	{
		var str=phnoStr.substring(i,i+1);
		
		if ((!isNaN(str))||(str==" "))
		{		
			flag="true";			
		}
		else
		{
			flag="false";
			return("Enter valid Phone No. \nEx: 080 26593718 or 08026593718");
			break;
		}
	}
	return flag;
}

//--------------------------------------------------------------------

function areValidPhoneNos(phnoStr) 
{
    var flag="false";
	var i;
	var len=parseInt(phnoStr.length);
	
	var str1=phnoStr.substring(0,1);
	
	
	for (i=0;i<len;i++)
	{
		var str=phnoStr.substring(i,i+1);
		
		if ((!isNaN(str))||(str==" ")||(str==";"))
		{		
			flag="true";			
		}
		else
		{
			flag="false";
			return("Enter valid Phone No. \nEx: 080 26593718;080 51507556")
			break;
		}
	}
	return flag;
}

//--------------------------------------------------------------------

//Check for Numeric data validation

function isValidDigit(dStr) 
{	
	var flag="false";
if(dStr.indexOf(".")==-1)
{

	var len=parseInt(dStr.length);

	
	for (i=0;i<len;i++)
	{
		var str=dStr.substring(i,i+1);
		
		if (dStr==" ")
		{
			flag="false";			
			return("Enter Numeric values only");
		}
		else if (isNaN(dStr))
		{		
			flag="false";
			return("Enter Numeric values only");
		}		 
		else
		{
			flag="true";
		}
	}
}
else
{
	return("Enter Integer values only");
}
	return flag;
	
}

//--------------------------------------------------------------------
//Check for Numeric data with "." 
function isValidDigitWithDot(dStr) 
{	
	var flag="false";
	var len=parseInt(dStr.length);
	
	for (i=0;i<len;i++)
	{
		var str=dStr.substring(i,i+1);
		if ((!isNaN(str))||(str=="."))
		{		
			flag="true";			
		}
		if (str==" ")
		{
			flag="false";			
			return("Enter Numeric values only with "+"'.'");
		}
		else if ((!isNaN(str))||(str=="."))
		{		
			flag="true";			
		}
		else
		{
			flag="false";		
			return("Enter Numeric values only with "+"'.'");	
			break;
		}
		
	}
	return flag;	
}

//--------------------------------------------------------------------

//Check for Numeric data with "." and less than 100

function isValidPercentage(dStr) 
{	
	var flag="false";
	var len=parseInt(dStr.length);
	
if(dStr!="")
{
	for (i=0;i<len;i++)
	{
		var str=dStr.substring(i,i+1);
		
		if (str==" ")
		{
			flag="false";			
			return("Enter Numeric values only with "+"'.'");
		}
		else if ((!isNaN(str))||(str=="."))
		{		
			flag="true";
		}		 
		else
		{
			flag="false";			
			return("Enter Numeric values only with "+"'.'");
			break;
		}
	}

	if(flag)
	{
		if((parseFloat(dStr)<=(100))&&(parseFloat(dStr)>=(0)))
		{
			flag="true";			
		}
		else
		{
			return("Enter percentage value between 0% and 100%");
			flag="false";	
		}
		
	}
}
else
{
	flag="true";
}
	return flag;
	
}


//--------------------------------------------------------------------
var newwindow;
function openHelpWindow(url)
{
	var features="menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes,left=200,top=150,alwaysRaised=true,copyhistory=0";
	
	if(!(newwindow== null || newwindow.closed))
	{
		newwindow.focus();
	}
	else
	{
		newwindow=window.open(url,"openHelpWindow",features );
	}

}



/*@cc_on @*/
/*@if (@_win32 && @_jscript_version>=5)

function window.confirm(str)
{
    execScript('n = msgbox("'+str+'","4132")', "vbscript");
    return(n == 6);
}

@end @*/