﻿// JScript File

function doSubmitQ(btnName, Validate, PageNo)
{	//this function loop through all "INPUT", "SELECT" and "TEXTAREA" element to validate
	// depending on value of "Formula".
	//"IsRequired" and "Rule" are required in HTML element.

	var FormOk=true;
	var objArray;
	var i, Rule, sBrace, Formula, SetFocus=null;
	var SubmitAction, Msg;
	
	objArray=document.getElementsByName("QSubmitAction");
	SubmitAction=objArray[0];
	
	objArray=document.getElementsByName(btnName);
	if(objArray[0]) Msg=objArray[0].getAttribute("Msg");
	
    if(Validate)
    {	objArray=document.getElementsByTagName("INPUT");
    	for(i=0;i<objArray.length;i++)
    	{	if(objArray[i].getAttribute("IsRequired")=="Yes" )
		    {	Rule=objArray[i].getAttribute("Rule");
    			if(Rule){
				    sBrace=Rule.indexOf("(");
				    if(sBrace>-1)
				    {	Formula=Rule.substring(0,sBrace);
    					Param=Rule.substring(sBrace+1,Rule.length-1);
					    switch(Formula)
					    {	case "IsLengthQ":
    							if(!IsLengthQ(objArray[i],Param)) FormOk=false; break;
						    case "IsNumberQ":
    							if(!IsNumberQ(objArray[i],Param)) FormOk=false; break;
						    case "IsCheckedQ":
    							if(!IsCheckedQ(objArray[i],Param)) FormOk=false; break;
    					    }
					    if(SetFocus==null && !FormOk) SetFocus=objArray[i];
				    }
			    }
		    }
	    }
    
    	objArray=document.getElementsByTagName("TEXTAREA");
    	for(i=0;i<objArray.length;i++)
    	{	if(objArray[i].getAttribute("IsRequired")=="Yes" )
		    {	Rule=objArray[i].getAttribute("Rule");
    			if(Rule){
				    sBrace=Rule.indexOf("(");
				    if(sBrace>-1)
				    {	Formula=Rule.substring(0,sBrace);
    					Param=Rule.substring(sBrace+1,Rule.length-1);
					    switch(Formula)
					    {	case "IsLengthQ":
							    if(!IsLengthQ(objArray[i],Param)) FormOk=false; break;
					    }
					    if(SetFocus==null && !FormOk) SetFocus=objArray[i];
				    }
			    }
		    }
	    }
    }
    else
    {
    	FormOk=true;
    }

   	if(FormOk) 
   	{   var SubmitValue="???";
   	    var btn;
   	    if(btnName=="PC")
   	    {
   	        SubmitValue="PageChange=" + PageNo.toString();
   	    }
   	    else
   	    {
   	        objArray=document.getElementsByName(btnName);
	        btn=objArray[0];
       	    if(btn) SubmitValue=btn.getAttribute("Action");
   	    }
        if(SubmitAction)SubmitAction.value=SubmitValue;	
	    document.aspnetForm.submit();
	}
	else 
	{   alert(Msg);
	    if(SetFocus!=null && SetFocus.disabled==false) window.location.href("#link" + SetFocus.name); //SetFocus.focus();	
	}
	return FormOk;
}

function doCancelQ(btnName)
{
	var objArray,SubmitAction;
	var SubmitValue="Cancel";
   	var btn;
   	objArray=document.getElementsByName(btnName);
	btn=objArray[0];	
	if(btn) SubmitValue=btn.getAttribute("Action");
	objArray=document.getElementsByName("SubmitAction");
	SubmitAction=objArray[0];
    if(SubmitAction)SubmitAction.value=SubmitValue;
	document.aspnetForm.submit();
    return true;
}


function IsLengthQ(Obj,Param)
{	//Obj holds textbox object, and Param holds length, Mininum is 1.

	var Length=parseInt(Param);
	var ObjValue=Obj.value.replace(' ','');
	if(ObjValue=='')
		return ErrDivQ(Obj);
	else
		return ClearDivQ(Obj);
}

function IsNumberQ(Obj,Param)
{	//Obj holds textbox object, and Param holds Min,Max values

	var Comma=Param.lastIndexOf(',');
	var Min=parseInt(Param.substring(0,Comma));
	var Max=parseInt(Param.substring(Comma+1,Param.length));

	if(isNaN(Obj.value) || Obj.value=='')
	{	return ErrDivQ(Obj);
	}
	else
	{
		if(Min==0 && Max==0)
		{	return ClearDivQ(Obj);
		}
		else
		{
			var ObjValue=parseInt(Obj.value);
			if(Min<=ObjValue && Max>=ObjValue)
				return ClearDivQ(Obj);
			else
				return ErrDivQ(Obj);
		}
	}
}

function IsCheckedQ(Obj,Param)
{	//Obj holds textbox object, and Param holds length, Mininum is 1.

	var objArray;
	var i,cntr=0;
	var GroupName;

	if(Obj.type=='radio')
	{	objArray=document.getElementsByName(Obj.name);
    	for(i=0;i<objArray.length;i++)
    		if(objArray[i].checked)	cntr++;
	}

	if(Obj.type=='checkbox')
	{	GroupName=Obj.getAttribute("GroupName");
	    objArray=document.getElementsByTagName("INPUT");
    	for(i=0;i<objArray.length;i++)
	       if(GroupName==objArray[i].getAttribute("GroupName"))
		        if(objArray[i].checked)	cntr++;
	}

	if(cntr>=parseInt(Param))
		return ClearDivQ(Obj);
	else
		return ErrDivQ(Obj);
}

function RegExpQ(Obj, RegExpVal)
{	//Obj holds textbox object, and RegExpVal /^\D{1}\d{1}\D{1}\d{1}\D{1}\d{1}/

    if(RegExpVal.test(Obj.value))
        return ClearDivQ(Obj);
    else
        return ErrDivQ(Obj);
}


function ErrDivQ(Obj)
{	//Obj holds textbox object, as id is required for show/hide related DIV.
    var divErr;
	divErr = document.getElementById("divErr_" + Obj.getAttribute("qID").toString());
	if(divErr && Obj) divErr.innerHTML = "&bull;&nbsp;" + Obj.getAttribute("Msg");
	return false;
}

function ClearDivQ(Obj)
{	//Obj holds textbox object, as id is required for CLEAR related DIV.
    var divErr;
	divErr = document.getElementById("divErr_" + Obj.getAttribute("qID").toString());
	if(divErr) if(divErr.innerHTML!='') divErr.innerHTML = '';
	return true;
}

function ErrDivIdQ(name)
{	//id is required for show/hide related DIV.
    Obj = document.getElementsByName(name);
	divObj = document.getElementById("divErr" + name);
	if(divObj && Obj[0]) divObj.innerHTML = "&nbsp;" + Obj[0].getAttribute("Msg");
	return false;
}

function ShowQ(id)
{	//id is required for show/hide related element. style.visibility == "visible" ? "hidden" : "visible")
    var Objs;
    Obj = document.getElementById(id);
	if(Obj) 
	{   Obj.style.display = ""; //.visibility="visible";
		Objs = Obj.getElementsByTagName("INPUT")
		// focus() first object
	    if(Objs) Objs[0].focus();
	}
	return true;
}

function HideQ(id)
{	//id is required for show/hide related element. style.visibility == "visible" ? "hidden" : "visible")
    Obj = document.getElementById(id);
	if(Obj) Obj.style.display = "none"; //.visibility="hidden";
	return true;
}
