function ValidData(innerID)
{
	var Len,i,oXml;
	var oBody,sElemType,sElemID;
	var iHelpPage;
	try{
			if (document.getElementById(innerID))
			{
				if ((document.getElementById(innerID).tagName == 'TABLE') || (document.getElementById(innerID).tagName == 'DIV'))
					oBody =document.getElementById(innerID).all;
				else
				{
					alert('Invalid Div or Table ID');							
					return;
				}
			}	
			else
			{
				alert('Invalid DIV/TABLE ID');	
				return;
			}		
		}catch(e){window.status=e}
	
	if (oBody)
		Len=oBody.length;
		
	if (Len==0)
	{
		alert('Nothing to validate');
		return false;
	}
	window.status='';
	var strElem;		
	for(i=0;i<Len;i++)
	{
		sElemType=oBody.item(i);
		try{
				sElemID=oBody.item(i).id;
				if (sElemID.length>0)
				{
					if(!get(sElemID).readOnly) fnResetError(sElemID);
					strElem= new String(sElemType.type);
					strElem=strElem.toUpperCase();
						if(sElemType.getAttribute("P-IGNORE")=='true') continue;

					if( strElem != 'CHECKBOX' && strElem != 'RADIO')
					{
						var sTC=sElemType.getAttribute("TYPE-CHECK");
						if (!sTC) continue;
					}

					var wstatus='';	
					var iHelpPage=sElemType.getAttribute("PAGE");
					var mLength = sElemType.getAttribute("M-LENGTH");
					var sIN=sElemType.getAttribute("INNER-ID");
					var iflag = 0;
					if(sIN == null) sIN=sElemType.value;
					else iflag = 1;
					var hstr=sElemType.id;
					
					if(sElemType.getAttribute("HELP-STRING")=='undefined' || sElemType.getAttribute("HELP-STRING")=='null' || sElemType.getAttribute("HELP-STRING")==null)
						wstatus=sElemType.id+' should be ';
					else
					{
						hstr = sElemType.getAttribute("HELP-STRING");
						wstatus=sElemType.getAttribute("HELP-STRING")+' should be ';
					}
					switch(strElem)
    	           	{
	                	//case 'PASSWORD':
						case 'TEXT':
						case 'TEXTAREA':

	                  		if(trimString(sIN).length==0)
	                  		{
								var sNullable=sElemType.getAttribute("NULLABLE");
								//if (sNullable) Code commented on April 30, 2005
								if (sNullable!=null && sNullable!='false')
								{
									if (sNullable=='true') continue;
								}
								else
								{
									if (iHelpPage) ShowTab(iHelpPage);
									sElemType.focus();
									sElemType.select();
									if(iflag == 1)
									{
										if(sElemType.getAttribute("REF-XML") == "STATE") 
										{
											//window.status='First select Country, State, District & City! And then select ' + hstr + ' from a DropDown List / or Press F2';
											fnSetError(sElemType,'First select Country, State, District & City! and then select ' + hstr + ' from a dropdown list / or press F2')
											var pid = sElemType.getAttribute("PARENT-ID");
											if(pid != null) get(pid).focus();
										}
										else //window.status='Please select the ' + hstr + ' from the dropdown list by pressing F2 key';
										fnSetError(sElemType,'Please select the ' + hstr + ' from the dropdown list by pressing F2 key');
									}
								    else //window.status= 'PLEASE ENTER '+hstr;
								    fnSetError(sElemType,'Please enter '+hstr)
								    return false;
								}
							}
							if(sIN.substring(0,1) == ' ')
							{
								if (iHelpPage) ShowTab(iHelpPage);
								sElemType.focus();
								sElemType.select();
								//window.status=hstr+' contains space as first characters';
								fnSetError(sElemType,hstr+' contains space as first characters')
								return false;
							}

							if(!get(sElemType.id).readOnly) 
								if(!checkDataType(sElemType,iHelpPage,wstatus,sIN)) return false;
	                        if((trimString(sIN).length > parseInt(mLength)) && mLength != null && strElem=='TEXTAREA')
	                        {
	                            //window.status = hstr +' size should not exceed '+mLength+' characters';
	                            fnSetError(sElemType,hstr +' size should not exceed '+mLength+' characters');
	                            return false;
	                        }
							break;

						case 'PASSWORD':
							sElemType.className="INPUT";
							if(trimString(sIN).length==0)
	                  		{
		                  		var sRe=sElemType.getAttribute("RE-TYPE");
		                  		if(sRe=="YES")
		                  		{
									fnSetError(sElemType,'Please re-type password !');
								}
								else
								{
									fnSetError(sElemType,'Please enter '+hstr);
								}
								return false;
	                  		}
	                  		else
	                  		{
		                  		var nMinLength=sElemType.getAttribute('MIN-LENGTH');
		                  		if(nMinLength)
		                  		{
			                  		if(trimString(sIN).length < nMinLength)
									{
										 fnSetError(sElemType,'Password should contain at least '+nMinLength+' characters');
										 return false;
									}
								}
	                  		}
							break;		
							
						case 'RADIO':
						case 'CHECKBOX':
					
								var id = document.getElementsByName(sElemType.id);
								var len = id.length;
								var flag = 0;
								var sNullable;
                                if(len > 1) sNullable=id.item(0).getAttribute("NULLABLE"); 
                                else sNullable=sElemType.getAttribute("NULLABLE"); 
                                
								if (sNullable) 
                                    if (sNullable=='true') continue; 
								
								for(j=0; j<len; j++)
	  								if(id.item(j).checked){ flag = 1; break; }
								if(flag == 0)
								{
									 //window.status = 'Select ' + hstr;
									 fnSetError(id,'Select ' + hstr);
									if (iHelpPage) ShowTab(iHelpPage);
									id.item(0).focus();
									id.item(0).select();
                                    return false;
								}
								break;
						case 'SELECT-ONE':
						case 'SELECT-MULTIPLE':						
								try{
									var id = document.getElementsByName(sElemType.id).item(0);
									if(id.getAttribute("NULLABLE")=='true') continue;
									if(id.selectedIndex == -1 || ( !id.getAttribute('ALLOW-ZERO') && id.selectedIndex == 0 ))
									{
										fnSetError(id,'Select ' + hstr);
										if (iHelpPage) ShowTab(iHelpPage);
										id.focus();
										id.select();
										return false;
									}
								}catch(e){SetStatus('Please select ' + hstr);return false;};
								break;
                }
			}	
          
		 }catch(e){window.status=e.description;}
	}

	return true;
}
			

function checkDataType(sElemType,iHelpPage,wstatus,sIN)
{
	var invalidflag = 0;
	fnResetError(sElemType);
	var sInMsg='Please enter valid ', sFnlMsg=sElemType.getAttribute('HELP-STRING');
	switch(sElemType.getAttribute("TYPE-CHECK").toUpperCase())
	{
		case 'EMAIL':
						if(!isEmailValid(sIN))
						{
							invalidflag = 1;
							//fnSetError(sElemType,wstatus + ' valid for e.g. name@protechmail.com');
							fnSetError(sElemType,'Invalid email ID. It should contain only [a-z,A-Z,0-9,_,@,.] for e.g. name@protechmail.com');
						}
						break;
		case 'ALPHABETIC':
						if(isNotAlphabet(sIN))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + 'ALPHABETIC');
						}
						break;
		case 'ALPHA-NUMERIC':
						if(!isAlphaNumeric(sIN))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + 'ALPHA-NUMERIC');
						}
						break;
		case 'ALPHANUMSPACE':
						if(!isAlphaNumSpace(sIN))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + 'ALPHA-NUMERIC');
						}
						break;
		case 'NUMERIC':
		
						if(!isNumeric(sIN))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + 'NUMERIC');
						}
						break;
		case 'DIGIT':
		
						if(!isDigit(sIN))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + 'DIGIT');
						}
						break;				
		case 'DATE' :
						if(!isValidDate(sElemType.value))
						{
							invalidflag = 1;
							fnSetDateError(sElemType);
							break;
						}
						var d=new Date(), dtCurDate;
						if(DATE_FORMAT_TYPE==1)
							dtCurDate=(d.getMonth()+1)+"/"+d.getDate();
						else
							dtCurDate=d.getDate()+"/"+(d.getMonth()+1);
						dtCurDate+="/"+d.getFullYear();
						switch(sElemType.getAttribute('RANGE'))
						{
								case 'PAST':
										if(!dateCompare(sElemType.value,dtCurDate,'<='))
										{
											invalidflag = 1;
											//alert(wstatus+'less than or equal to current date');
											fnSetError(sElemType,(wstatus+'less than or equal to current date').toUpperCase());
											//fnSetError(sElemType,wstatus+'than or equal to current date');
										}
										break;
								case 'FUTURE':
										if(!dateCompare(sElemType.value,dtCurDate,'>='))
										{
											invalidflag = 1;
											fnSetError(sElemType,(wstatus + 'greater than or equal to current date').toUpperCase());
										}
										break;
						}
						break;
		case 'TIME'	   :
						if(!ValidateHrs(sElemType.value))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + 'in time format ( ex. HH:MM ) ');
						}
						break;
		case 'INTEGER' :
						if(!isDigit(sIN))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + 'INTEGER');
						}
						break;
		case 'WHOLE-INT' :
						if(isDigit(sIN))
						{
							if(parseInt(sIN) <= 0) invalidflag = 1;
						} else invalidflag = 1;
						if(invalidflag == 1) fnSetError(sElemType,wstatus + 'non-zero positive integer');
						break;
		case 'WHOLE-FLOAT' :
						if(isNumeric(sIN))
						{
							if(parseFloat(sIN) <= 0) invalidflag = 1;
						} else invalidflag = 1;
						if(invalidflag == 1) fnSetError(sElemType,wstatus + 'non-zero positive numeric');
						break;
		case 'AGE'	:
						ageflag = 1;
						if(!isDigit(sIN)) ageflag = 0;
						if(ageflag == 1 && (parseInt(sIN) <= 0 || parseInt(sIN) > 150) ) ageflag = 0;
						if(ageflag == 0)
						{
							invalidflag = 1;
							(wstatus + ' between 1 & 150');
						}
						break;
		case 'LEAP'	:
						if(!isLeap(sIN))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + ' leap year');
						}
						break;
		case 'YEAR'	:
						if(!isValidYear(sIN))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + ' between 1900 & 9999');
						}
						break;
		case 'MONTH':
						if(!isValidMonth(sIN))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + ' between 1 & 12');
						}
						break;
		case 'DAY'	:
						if(!isValidDay(sIN))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + ' between 1 & 31');
						}
						break;
		case 'AMOUNT':
						if(!(isValidAmount(sIN) || isNumeric(sIN)))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + 'in money format (for ex. 10000.00) ');
						}
						break;
		case 'PERCENTAGE':
						if(!(isValidAmount(sIN) || isNumeric(sIN)))
						{
							invalidflag = 1;
							fnSetError(sElemType,wstatus + 'in percentage format (for ex. 75.25) ');
						}
						if(invalidflag == 0 && parseFloat(sIN) > 100)
						{
							if(invalidflag != 1) wstatus += 'in percentage format (for ex. 75.25) ';
							invalidflag = 1;
							fnSetError(sElemType,wstatus + ' --- and percentage should be less or equal to than 100 ');
						}
						break;
	    case 'ZIP':			
						if(!(isValidZIP(sIN)))
						{
							invalidflag = 1;
							fnSetError(sElemType,sInMsg+sFnlMsg);
						}
						break;	
		case 'PHONE':			
						if(!(isValidPhone(sIN)))
						{
							invalidflag = 1;
							fnSetError(sElemType,sInMsg+sFnlMsg);
						}
						break;
		case 'SSN':			
						if(!(isValidSSN(sIN)))
						{
							invalidflag = 1;
							fnSetError(sElemType,sInMsg+sFnlMsg);
						}
						break;
		case 'ADDRESS':			
						if(!(isValidAddress(sIN)))
						{
							invalidflag = 1;
							fnSetError(sElemType,sInMsg+sFnlMsg);
						}
						break;
		case 'CITY':			
						if(!(isValidCity(sIN)))
						{
							invalidflag = 1;
							fnSetError(sElemType,sInMsg+sFnlMsg);
						}
						break;
		case 'MONTH-YEAR':
						if(!(isValidMonthYear(sIN)))
						{
							invalidflag = 1;
							fnSetError(sElemType,sInMsg+sFnlMsg);
						}
						break;
		case 'ZEROCHECK':
						if(!(isAllZero(sIN)))
						{
							invalidflag = 1;
							fnSetError(sElemType,sInMsg+sFnlMsg);
						}
						break;
		case 'CREDITCARD':
						if(!(isValidCreditCard(sIN)))
						{
							invalidflag = 1;
							fnSetError(sElemType,sInMsg+sFnlMsg);
						}
						break;
	}
	if(invalidflag == 1)
	{
		if (iHelpPage) ShowTab(iHelpPage);
		sElemType.focus();
		sElemType.select();
		return false;
	}
	return true;
}
	

function ClearAll(innerID)
{
	var Len,i,oXml;
	var oBody,sElemType,sElemID;
	var iHelpPage;
	var innerID;
		
	if (document.getElementById(innerID))
		if ((document.getElementById(innerID).tagName.toUpperCase() == 'TABLE') || (document.getElementById(innerID).tagName.toUpperCase() == 'DIV'))
			oBody =document.getElementById(innerID).all;
		else
		{
			alert('Invalid Div or Table ID');							
			return;
		}
	else
	{
		alert('Invalid DIV/TABLE ID');	
		return;
	}		

	if (oBody)
		Len=oBody.length;
		
		
	if (Len==0)
	{
		alert('Nothing to clear');
		return false;
	}
		
	window.status='';
			
	for(i=0;i<Len;i++)
	{
		sElemType=oBody.item(i);
		sElemID=oBody.item(i).id;		
		if (sElemID.length>0)
		{
		var strElem= new String(sElemType.type);  

		var vClearIgnore=sElemType.getAttribute("CLEAR-IGNORE");

		if (vClearIgnore) if (vClearIgnore.toUpperCase()=='TRUE') continue;
			
		if(sElemType.getAttribute('INNER-ID') != null) sElemType.setAttribute('INNER-ID','');
		if(strElem.toUpperCase()=='TEXT' || strElem.toUpperCase()=='TEXTAREA' || strElem.toUpperCase()=='PASSWORD') sElemType.value="";
		if(strElem.toUpperCase()=='SELECT-ONE' || strElem.toUpperCase()=='SELECT-MULTIPLE')  sElemType.selectedIndex=-1; 
		if(strElem.toUpperCase()=='CHECKBOX')sElemType.checked=false;
		if(strElem.toUpperCase()=='RADIO')sElemType.checked = false;

		}
	}
}
function fnSetDateError(oElm)
{
	if(oElm.value.length==10 && oElm.value.split('/').length==3)
		fnSetError(oElm,'E0038');//'Invalid Date';
	else
	{
		if(DATE_FORMAT_TYPE==1)
			fnSetError(oElm,'E0192');//(MM/DD/YYYY)
		else
			fnSetError(oElm,'Please enter a valid date in the format (DD/MM/YYYY).');
	}
}