﻿// JAVASCRIPT validation functions for the PF:self-validating controls
validatepostback = true;

// Validate
// Evaluated from validateall on form submit.
// Author: SRW
// Date: 20/2/08
function validate(control, required, regex, emptyerror, regexerror)
{
    //Reset errors
    document.getElementById(control + 'tr').className = "normal";
    document.getElementById(control + 'em').innerHTML ='&nbsp;';
    
    //Recheck
    if(required == 'True' && document.getElementById(control).value == "")
    {
        document.getElementById(control + 'tr').className = "rowerror";
        document.getElementById(control + 'em').innerHTML = emptyerror;
        return false;
    }
    else
    {
        //If the field is not required, or is required and has an input, validate against the regex if we have one
        if(regex != "" && document.getElementById(control).value != "")
        {
            var Pattern=regex;
            var tempVal=document.getElementById(control).value;
            var testmatch=tempVal.match(Pattern);
             if(testmatch==null)
             {
                document.getElementById(control + 'tr').className = "rowerror";
                document.getElementById(control + 'em').innerHTML = regexerror;
                return false;
             }
        }
        return true;
    }
}

// Validate
// Evaluated from validateall on form submit.
// Author: SRW
// Date: 4/10/08
function pfjs_validate(control, required, regex, emptyerror, regexerror)
{  
    //Recheck
    if(required == 'True' && document.getElementById(control).value == "")
    {
        $('#' + control + 'tr').removeClass("rowerror2 normal").addClass("rowerror2");
        $('#' + control + 'img').attr("src", "/sites/streetshirts.co.uk/template/images/errormark.gif");
        $('#' + control + 'tr td.formcontrol input').css({backgroundColor:"White", color:"Black"});
        $('#' + control + 'er').fadeIn();
        $('#' + control + 'er td').text(emptyerror);
        
        return false;
    }
    else
    {
        //If the field is not required, or is required and has an input, validate against the regex if we have one
        if(regex != "" && document.getElementById(control).value != "")
        {
            var Pattern=regex;
            var tempVal=document.getElementById(control).value;
            var testmatch=tempVal.match(Pattern);
             if(testmatch==null)
             {
                $('#' + control + 'tr').removeClass("rowerror2 normal").addClass("rowerror2");
                $('#' + control + 'img').attr("src", "/sites/streetshirts.co.uk/template/images/errormark.gif")
                $('#' + control + 'tr td.formcontrol input').css({backgroundColor:"White", color:"Black"});
                $('#' + control + 'er').fadeIn();
                $('#' + control + 'er td').text(regexerror);
                return false;
             }
        }
        
        //Reset errors
        $('#' + control + 'tr').removeClass("rowerror2 normal").addClass("normal");
        $('#' + control + 'img').attr("src", "/sites/streetshirts.co.uk/template/images/t4_form_quest.gif")
        $('#' + control + 'tr td.formcontrol input').css({backgroundColor:"", color:""});
        $('#' + control + 'er').fadeOut();
        return true;
    }
}

// Validatedll
// Called on blur and from validateall
// Author: SRW
// Date: 21/2/08
function validateddl(control, notselecterror)
{
    //Reset errors
    document.getElementById(control + 'tr').className = "normal";
    document.getElementById(control + 'em').innerHTML ='&nbsp;';
    
    //Recheck
    ddl = document.getElementById(control);
    if(ddl.options[ddl.selectedIndex].value == "-")
    {
        document.getElementById(control + 'tr').className = "rowerror";
        document.getElementById(control + 'em').innerHTML = notselecterror;
        return false;
    }
    else
    {
        return true;
    }
}

// Validateall
// Called on form submitted by a PFbutton
// There is almost certainly a better way than all these loops
// Author: SRW
// Date: 21/2/08
function validateall()
{
    if(validatepostback){
          var success = true;
          var ctls = document.getElementsByTagName("INPUT");
          for(i=0; i < ctls.length; i++)
          {
            ctl = ctls[i];
            if (ctl.getAttribute("controltype") == "pftextbox")
            {
                var tsuccess
                    tsuccess =  eval(ctl.getAttribute("pfvalidation"));
                if(!tsuccess) success = false;
            }
          }
          ctls = document.getElementsByTagName("SELECT");
          for(k=0; k < ctls.length; k++)
          {
            ctl = ctls[k];
            if (ctl.getAttribute("controltype") == "pfdropdownlist")
            {
                var tsuccess
                    tsuccess =  eval(ctl.getAttribute("pfvalidation"));
                if(!tsuccess) success = false;
            }
          }
          ctls = document.getElementsByTagName("INPUT");
          for(j=0; j < ctls.length; j++)
          {
            ctl = ctls[j];
            if (ctl.getAttribute("controltype") == "pfbutton" && success == true)
            {
                //If all is well, disables the submit button and changes its text.  
                ctl.value=ctl.getAttribute("waitmessage");
            }
          }
          return success;
      }
}


// Validategroup
// Author: SRW
// Date: 12/10/08
function validategroup(valgroup)
{
    if(validatepostback){
          var success = true;
          var ctls = document.getElementsByTagName("INPUT");
          for(i=0; i < ctls.length; i++)
          {
            ctl = ctls[i];
            if (ctl.getAttribute("controltype") == "pftextbox" && ctl.getAttribute("ValidationGroup") == valgroup)
            {
                var tsuccess
                    tsuccess =  eval(ctl.getAttribute("pfvalidation"));
                if(!tsuccess) success = false;
            }
          }
          return success;
      }
}


