var InvalidChars = "~,`"; //separate invalid characters with ,
 function ValidateForm(f) {
		var elm
	
	for (var intLoop = 0; intLoop < f.elements.length; intLoop++)
	{
		elm = f.elements[intLoop]
		
		if(elm.disabled) continue;
	   if (null!=elm.getAttribute("required")) 
	   {	
			
			if(elm.type=="checkbox")
			{
				if(!elm.checked)
				{
					alert(elm.getAttribute("required"));
					elm.focus()
					return false
				}
			}
			else if (isEmpty(elm.value))
			{
				alert(elm.getAttribute("required"));
				if(elm.type=="text" || elm.type == "textarea")
					elm.select()
				else
					elm.focus()
				return false
			}
		}//end outer if -- blank	 check
	
	if(elm.getAttribute("optional") == "true")
	{
		//alert(elm.name + " " + elm.value.length )
		if(elm.value.length >0 && isEmpty(elm.value))
		{
			alert("Please enter non-blank value")
			if(elm.type=="text" || elm.type == "textarea")
				elm.select()
			else
				elm.focus()
			return false;
		}
		else if(isEmpty(elm.value))
			continue;
		
	}	
	 
	  if (null!=elm.getAttribute("email")) 
	   {	
			
			if(!IsValidEmail(elm.value))
			{
				alert(elm.getAttribute("email"));
				if(elm.type=="text" || elm.type == "textarea")
					elm.select()
				else
					elm.focus()
				return false
			 }
		}//end outer if -- email check
	 	
	  if (null!=elm.getAttribute("integer")) 
	   {	
			var MinValue = eval(elm.getAttribute("minvalue"))
			var MaxValue = eval(elm.getAttribute("maxvalue"))
			if(!IsNumber(elm.value))
			{
				alert(elm.getAttribute("integer"));
				if(elm.type=="text" || elm.type == "textarea")
					elm.select()
				else
					elm.focus()
				return false
			 }
			 if(MinValue != null)
			 {
				if(parseFloat(elm.value) < parseFloat(MinValue))
				{
					alert(elm.getAttribute("integer"));
					if(elm.type=="text" || elm.type == "textarea")
					elm.select()
				else
					elm.focus()
					return false
				}
			 }
			 if(MaxValue != null)
			 {
				if(parseFloat(elm.value) > parseFloat(MaxValue))
				{
					alert(elm.getAttribute("integer"));
					if(elm.type=="text" || elm.type == "textarea")
						elm.select()
					else
						elm.focus()
					return false
				}
			 }
		}//end outer if -- integer check
		if (null!=elm.getAttribute("real")) 
	   {	
			var MinValue = eval(elm.getAttribute("minvalue"))
			var MaxValue = eval(elm.getAttribute("maxvalue"))
			if(!IsReal(elm.value,3))
			{
				alert(elm.getAttribute("real"));
				if(elm.type=="text" || elm.type == "textarea")
					elm.select()
				else
					elm.focus()
				return false
			 }
			 if(MinValue != null)
			 {
				if(parseFloat(elm.value) < parseFloat(MinValue))
				{
					alert(elm.getAttribute("real"));
					if(elm.type=="text" || elm.type == "textarea")
						elm.select()
					else
						elm.focus()
					return false
				}
			 }
			 if(MaxValue != null)
			 {
				if(parseFloat(elm.value) > parseFloat(MaxValue))
				{
					alert(elm.getAttribute("real"));
					if(elm.type=="text" || elm.type == "textarea")
						elm.select()
					else
						elm.focus()
					return false
				}
			 }
		}//end outer if -- float/real check	
	   if (null!=elm.getAttribute("date")) 
	   {	
			var MinDate = eval(elm.getAttribute("minvalue"))
			var MaxDate = eval(elm.getAttribute("maxvalue"))
					
			if(!IsDate(elm.value))
			{
				alert(elm.getAttribute("date"));
				if(elm.type=="text" || elm.type == "textarea")
					elm.select()
				else
					elm.focus()
				return false
			}
			if(MinDate != null)
			 {
				if(elm.value==MinDate)
					continue;
				else if(CmpDate(elm.value,MinDate) == "-1")
				{
					alert(elm.getAttribute("date"));
					if(elm.type=="text" || elm.type == "textarea")
						elm.select()
					else
						elm.focus()
					return false
				}
				
			 }
			
			 if(MaxDate != null)
			 {
				if(elm.value==MaxDate)
					continue;
				else if(CmpDate(elm.value,MaxDate) == "1")
				{
					alert(elm.getAttribute("date"));
					if(elm.type=="text" || elm.type == "textarea")
						elm.select()
					else
						elm.focus()
					return false
				}
			 }
			
		}//end outer if -- date check	
	   if(elm.type=="text" || elm.type == "textarea")
	   {	
			
			if(elm.type == "textarea")
			{
				var mlen = elm.getAttribute("maxLength")
				
				if(mlen != null)
				{
					if(parseInt(mlen)< parseInt(elm.value.length))
					{
						alert("Data too large. Maximum length allowed is " + elm.getAttribute("maxLength"))
						elm.select();
						return false;
					}
				}
			}//check for maxlength
			var arrChars =	InvalidChars.split(",");
			for(var i=0;i<arrChars.length;i++)
			{
				if(elm.value.indexOf(Trim(arrChars[i]))>=0 )
				{					
					alert(InvalidChars + " are not allowed.");
					if(elm.type=="text" || elm.type == "textarea")
						elm.select()
					else
						elm.focus()
					return false
				}
			}
		}//InvalidChars ~,` check
		
	}//end for

	return true       
 }
 
 
/**
 * Setup prompt in text box specified
 *
 * @id the id of the text box, it is expected to have prompt attribute assigned
 */ 
function promptSetup(id) {
  var el = document.getElementById(id);
  
  if (!el || el.type != 'text') { 
    return;
  }
  var pr = el.getAttribute("prompt");
  if (!pr || pr == "") {
    return;
  }
  el.value = pr;
  el.style.color = '#888';
  el.is_focused = 0;
  el.onfocus = function () { promptFocus(id); }
  el.onblur = function () { promptBlur(id); }
}

/**
 * Called when a text box gains focus
 *
 * @objid the id of the text box, it is expected to have prompt attribute assigned
 */ 
function promptFocus(objid) {
  var obj = document.getElementById(objid); 
  if (!obj.is_focused) {
    obj.value = '';
    obj.is_focused = 1;
    obj.style.color = '#000';
  }
}

/**
 * Called when a text box loses focus
 *
 * @objid the id of the text box, it is expected to have prompt attribute assigned
 */ 
function promptBlur(objid) {
  var obj = document.getElementById(objid); 
  var ph = obj.getAttribute("prompt");
  if (obj.is_focused && ph && obj.value == "") {
    obj.is_focused = 0;
    obj.value = ph;
    obj.style.color = '#888';
  }
}

function validateSearch(redirectPath)
{
	var obj = document.getElementById("txtSearch"); 
	var ph = obj.getAttribute("prompt");
	
	if(Trim(obj.value)=='' || Trim(obj.value)== Trim(ph))
	{
		alert('Please provide search key word.');
		document.frmMain.txtSearch.focus();
		return false;
	}
	
	document.frmMain.action= redirectPath;
	document.frmMain.submit();
}

function download(cntrl,filePath)
{
	var frm = document.getElementById('frmDownload');
	frm.hdnFile.value = filePath;
	frm.isDownLoadable.value = "1"
	frm.hdnLinkName.value = cntrl.name;
	frm.submit();
	
	//GetDataViaAjax(cntrl,filePath,pagePath);
}

var obj;
//debugger;
function GetDataViaAjax(cntrl,filePath,pagePath)
{//debugger;
	//var requestUrl = pagePath + "?Choice=" + encodeURIComponent(filePath);
	var requestUrl = pagePath + "?file=" + filePath;
	
	try
	{
		obj=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			obj=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e1)
		{
			obj=null;
		}
	}
	if(obj!=null)
	{
		obj.onreadystatechange=ProcessResponse;
		obj.open("GET",requestUrl,true);
		obj.send(null);
	}
	return false;
}
function ProcessResponse()
{
	if(obj.readyState==4)
	{
		if(obj.status==200)
		{
			var returnVal=obj.responseText;
			alert(returnVal);
		}
		else
		{
			alert("Error downloading file.");
		}
	}
}
function newWindow22(theURL) {
window.open(theURL, '','scrollbars=yes, resizable=no, width=350, height=250, left=50, top=50');
}
