var error_msg = '';
var sret = true;

function init_var(){
	//document.getElementById("detail_errorloc").style.display = 'none';
	error_msg ='';	
	sret = true;
}

function validateInput(strValidateStr,objValue,strError) 
{ 
//alert(objValue);
	
    //var ret = true;
    var epos = strValidateStr.search("="); 
    var  command  = ""; 
    var  cmdvalue = ""; 
    if(epos >= 0) 
    { 
     command  = strValidateStr.substring(0,epos); 
     cmdvalue = strValidateStr.substr(epos+1); 
    } 
    else 
    { 
     command = strValidateStr; 
    } 
    switch(command) 
    { 
        case "req": 
        case "required": 
         { 
		  // alert('inside');
		   ret = TestRequiredInput(objValue,strError)
           break;             
         }//case required 
        case "maxlength": 
        case "maxlen": 
          { 
			 ret = TestMaxLen(objValue,cmdvalue,strError)
             break; 
          }//case maxlen 
        case "minlength": 
        case "minlen": 
           { 
			 ret = TestMinLen(objValue,cmdvalue,strError)
             break; 
            }//case minlen 
        case "alnum": 
        case "alphanumeric": 
           { 
				ret = TestInputType(objValue,"[^A-Za-z0-9]",strError, 
						objValue.name+": Only alpha-numeric characters allowed ");
				break; 
           }
        case "alnum_s": 
        case "alphanumeric_space": 
           { 
				ret = TestInputType(objValue,"[^A-Za-z0-9\\s]",strError, 
						objValue.name+": Only alpha-numeric characters and space allowed ");
				break; 
           }		   
        case "num": 
        case "numeric": 
           { 
                ret = TestInputType(objValue,"[^0-9]",strError, 
						objValue.name+": Only digits allowed ");
                break;               
           }
        case "dec": 
        case "decimal": 
           { 
                ret = TestInputType(objValue,"[^0-9\.]",strError, 
						objValue.name+": Only numbers allowed ");
                break;               
           }
        case "alphabetic": 
        case "alpha": 
           { 
                ret = TestInputType(objValue,"[^A-Za-z]",strError, 
						objValue.name+": Only alphabetic characters allowed ");
                break; 
           }
        case "alphabetic_space": 
        case "alpha_s": 
           { 
                ret = TestInputType(objValue,"[^A-Za-z\\s]",strError, 
						objValue.name+": Only alphabetic characters and space allowed ");
                break; 
           }
        case "email": 
          { 
			   ret = TestEmail(objValue,strError);
               break; 
          }
        case "lt": 
        case "lessthan": 
         { 
    	      ret = TestLessThan(objValue,cmdvalue,strError);
              break; 
         }
        case "gt": 
        case "greaterthan": 
         { 
			ret = TestGreaterThan(objValue,cmdvalue,strError);
            break; 
         }//case greaterthan 
        case "regexp": 
         { 
			ret = TestRegExp(objValue,cmdvalue,strError);
           break; 
         }
        case "dontselect": 
         { 
			 ret = TestDontSelect(objValue,cmdvalue,strError)
             break; 
         }
		case "dontselectchk":
		{
			ret = TestDontSelectChk(objValue,cmdvalue,strError)
			break;
		}
		case "shouldselchk":
		{
			ret = TestShouldSelectChk(objValue,cmdvalue,strError)
			break;
		}
		case "selone_radio":
		{
			ret = TestSelectOneRadio(objValue,strError);
		    break;
		}		 
    }//switch 
	//return ret;
}
function ValidationDesc(inputitem,desc,error,condition)
{
  this.desc=desc;
	this.error=error;
	this.itemobj = inputitem;
	this.condition = condition;
	this.validate=vdesc_validate;
}
function vdesc_validate()
{
	if(this.condition != null )
	{
		if(!eval(this.condition))
		{
			sret = true; 
			//return true;
		}
	}
	if(!validateInput(this.desc,this.itemobj,this.error))
	{
		this.itemobj.validatorobj.disable_validations=true;
		this.itemobj.focus();
		sret = false;
		//return false;
	}
	//return true;
}
function ValidationSet(inputitem,msgs_together)
{
    this.vSet=new Array();
	this.add= add_validationdesc;
	this.validate= vset_validate;
	this.itemobj = inputitem;
    this.msgs_together = msgs_together;
}
function add_validationdesc(desc,error,condition)
{
  this.vSet[this.vSet.length]= 
  new ValidationDesc(this.itemobj,desc,error,condition);
}
function vset_validate()
{
    var bRet = true;
    for(var itr=0;itr<this.vSet.length;itr++)
    {
        bRet = bRet && this.vSet[itr].validate();
        if(!bRet && !this.msgs_together)
        {
            break;
        }
    }
    //return bRet;
}
function validateEmail(email)
{
    var splitted = email.match("^(.+)@(.+)$");
	//alert(splitted);
	//alert(splitted[1]);
	//alert(splitted[2]);
    if(splitted == null) return false;
    if(splitted[1] != null )
    {
      var regexp_user=/^\"?[\w-_\.]*\"?$/;
      if(splitted[1].match(regexp_user) == null) return false;
    }
    if(splitted[2] != null)
    {
      var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
      if(splitted[2].match(regexp_domain) == null) 
      {
	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
      }// if
      return true;
    }
return false;
}

function IsCheckSelected(objValue,chkValue)
{
    var selected=false;
	var objcheck = objValue;
/*    if(objcheck.length)
	{
		var idxchk=-1;
		for(var c=0;c < objcheck.length;c++)
		{
		   if(objcheck[c].value == chkValue)
		   {
		     idxchk=c;
			 break;
		   }//if
		}//for
	alert(idxchk);
		if(idxchk>= 0)
		{
		  if(objcheck[idxchk].checked=="1")
		  {
		    selected=true;
		  }
		}//if
	}
	else
	{
		if(objValue.checked == "1")
		{
			selected=true;
		}//if
	}//else	
*/
	//return selected;
	//alert(objValue);
	if(objValue == true)
		{
	//		alert("hahah");
			selected=true;
		}
		else
			selected=false;
		//	alert('function'+selected);
	ret = selected;
	return ret;
}
function TestDontSelectChk(objValue,chkValue,strError)
{
	var pass = true;
	pass = IsCheckSelected(objValue,chkValue)?false:true;

	if(pass==false)
	{
     if(!strError || strError.length ==0) 
        { 
        	strError = "Can't Proceed as you selected "+objValue.name;  
        }//if			  
	  sfm_show_error_msg(strError,objValue);
	  
	}
	sret = pass;
    //return pass;
}
function TestShouldSelectChk(objValue,chkValue,strError)
{
	var pass = true;

	pass = IsCheckSelected(objValue,chkValue);
	//alert(pass);
	if(pass==false)
	{
     if(!strError || strError.length ==0) 
        { 
        	strError = "You should select"+objValue.name;  
        }//if			  
	  sfm_show_error_msg(strError,objValue);
	  sret = pass;
	}
    //return pass;
}
function TestRequiredInput(objValue,strError)
{
	//alert('real check');
 var ret = true;
 var val; 
 val = objValue;
 //alert (objValue);
 val = val.replace(/^\s+|\s+$/g,"");//trim
    if(eval(val.length) == 0) 
    { 
		//alert('errorssss');
       if(!strError || strError.length ==0) 
       { 
         strError = objValue.name + " : Required Field"; 
       }//if 
       sfm_show_error_msg(strError,objValue); 
       ret=false; 
	   sret = ret;
	   //alert('false');
    }//if 
//return ret;
}
function TestMaxLen(objValue,strMaxLen,strError)
{
 var ret = true;
    if(objValue.length > eval(strMaxLen)) 
    { 
      if(!strError || strError.length ==0) 
      { 
        //strError = objValue.name + " : "+ strMaxLen +" characters maximum "; 
      }//if 
      sfm_show_error_msg(strError,objValue); 
      ret = false; 
	  sret = ret;
    }//if 
//return ret;
}
function TestMinLen(objValue,strMinLen,strError)
{
 var ret = true;
    if(eval(objValue.length) <  eval(strMinLen)) 
    { 
      if(!strError || strError.length ==0) 
      { 
        //strError = objValue.name + " : " + strMinLen + " characters minimum  "; 
      }//if               
      sfm_show_error_msg(strError,objValue); 
      ret = false;   
	  sret = ret;
    }//if 
//return ret;
}
function TestInputType(objValue,strRegExp,strError,strDefaultError)
{
   var ret = true;

    var charpos = objValue.search(strRegExp); 
    if(objValue.length > 0 &&  charpos >= 0) 
    { 
     if(!strError || strError.length ==0) 
      { 
        strError = strDefaultError;
      }//if 
      sfm_show_error_msg(strError,objValue); 
      ret = false; 
	  sret = ret;
    }//if 
 //return ret;
}
function TestEmail(objValue,strError)
{
	var ret = true;
     if(objValue.length > 0 && !validateEmail(objValue)	 ) 
     { 
       if(!strError || strError.length ==0) 
       { 
          strError = "Enter a valid Email address "; 
       }//if                                               
       sfm_show_error_msg(strError,objValue); 
       ret = false; 
	   sret = ret;
     }//if 
//return ret;
}
function TestLessThan(objValue,strLessThan,strError)
{
var ret = true;
	  if(isNaN(objValue)) 
	  { 
	    sfm_show_error_msg(objValue.name +": Should be a number ",objValue); 
	    ret = false;       
	    sret = ret;  
	  }//if 
	  else
	  if(eval(objValue) >=  eval(strLessThan)) 
	  { 
	    if(!strError || strError.length ==0) 
	    { 
	      //strError = objValue.name + " : value should be less than "+ strLessThan; 
	    }//if               
	    sfm_show_error_msg(strError,objValue); 
	    ret = false;        
	    sret = ret;         
	   }//if   
//return ret;          
}
function TestGreaterThan(objValue,strGreaterThan,strError)
{
var ret = true;
     if(isNaN(objValue)) 
     { 
       sfm_show_error_msg(objValue.name+": Should be a number ",objValue); 
       ret = false; 
	   sret = ret;
     }//if 
	 else
     if(eval(objValue) <=  eval(strGreaterThan)) 
      { 
        if(!strError || strError.length ==0) 
        { 
          //strError = objValue.name + " : value should be greater than "+ strGreaterThan; 
        }//if               
        sfm_show_error_msg(strError,objValue);  
        ret = false;
	    sret = ret;
      }//if  
//return ret;           
}
function TestRegExp(objValue,strRegExp,strError)
{
var ret = true;
    if( objValue.length > 0 && 
        !objValue.match(strRegExp) ) 
    { 
      if(!strError || strError.length ==0) 
      { 
        //strError = objValue.name+": Invalid characters found "; 
      }//if                                                               
      sfm_show_error_msg(strError,objValue); 
      ret = false;     
	  sret = ret;              
    }//if 
//return ret;
}
function TestDontSelect(objValue,dont_sel_index,strError)
{
var ret = true;
    if(objValue.selectedIndex == null) 
    { 
      sfm_show_error_msg("ERROR: dontselect command for non-select Item"); 
      ret =  false; 
	  sret = ret;
    } 
    if(objValue.selectedIndex == eval(dont_sel_index)) 
    { 
     if(!strError || strError.length ==0) 
      { 
     // strError = objValue.name+": Please Select one option "; 
      }//if                                                               
      sfm_show_error_msg(strError); 
      ret =  false;       
	  sret = ret;                            
     } 
//return ret;
}
function TestSelectOneRadio(objValue,strError)
{
	//document.getElementById(objValue)
	//alert(objValue);
	//alert(document.getElementById(objValue).length);
//	var objradio = objValue.form.elements[objValue.name];
	var one_selected=false;
	for(var r=0;r < objValue.length;r++)
	{
	  if(objValue[r].checked == "1")
	  {
	  	one_selected=true;
		break;
	  }
	}
/*	if(false == one_selected)
	{
      if(!strError || strError.length ==0) 
       {
	    //strError = "Please select one option from "+objValue.name;
	   }	
	  sfm_show_error_msg(strError,objValue);
	}
	sret = one_selected;*/
	
	if(one_selected == true)
		{
//s			alert("hahah");
			selected=true;
		}
		else
			selected=false;
		//	alert('function'+selected);
	ret = selected;
	sret = ret;                        
//return one_selected;
}
function DoCustomValidation()
{
	//alert ("aaaaa");
  var frm = document.forms["detail"];
  if(frm.pw.value != frm.pw2.value)
  {
    strError =  'The Password and verified password does not match!';
	sfm_show_error_msg(strError);
    ret =  false; 
  }

}
function sfm_show_error_msg(strError,objValue){
	error_msg += strError + '<br />';	
	sret = false;
}
function get_status(){
	//alert(sret);
	return sret;	
}
function show_msg(div_name){
	//alert(error_msg);
	//alert('test');
	document.getElementById(div_name).style.display = 'block';
	document.getElementById(div_name).innerHTML = 	error_msg;
	//document.getElementById("detail_errorloc").innerHTML = 	'aaaaadddd';
}
