﻿    var error_msg;
    
    $(document).ready(function()
    {
									
						 							       
    });	
        
    
    // main xml parsing and validation
    function validate_fields(xml_file)
    {
        try
        {                        
         
            var rtn = 0;
            var $xml_dom;                            
            switch (xml_file)
            {
                case ("singinxml"):
                    $xml_dom = $.fromXMLString(singinxml());
                    break;              
                case ("img_lib_xml"):
                    $xml_dom = $.fromXMLString(img_lib_xml());
                    break;
                case ("xml_register"):
                    $xml_dom = $.fromXMLString(xml_register());
                    break;
                case ("catalogxml"):
                    $xml_dom = $.fromXMLString(xml_catalog());
                    break;                                                        
                case ("cartxml"):
                    $xml_dom = $.fromXMLString(xml_cart());
                    break;
               case ("checkoutxml"):               
                    $xml_dom = $.fromXMLString(xml_checkout());
                    break;
               case ("checkoutxml2"):
                    $xml_dom = $.fromXMLString(xml_checkout2());
                    break;
                case ("contactxml"):
                    $xml_dom = $.fromXMLString(xml_contact());
                    break;
                case ("forgotxml"):
                    $xml_dom = $.fromXMLString(forgotxml());
                    break;                    
                case ("home_page_xml"):                    
                    $xml_dom = $.fromXMLString(xml_home_page());
                    break;
                case ("widgetxml"):                    
                    $xml_dom = $.fromXMLString(xml_widget());
                    break;                    
                case ("contentxml"):                    
                    $xml_dom = $.fromXMLString(xml_content());
                    break;
                case ("commentxml"):                    
                    $xml_dom = $.fromXMLString(xml_comment());
                    break;
                case ("adm_profile_xml"):                    
                    $xml_dom = $.fromXMLString(xml_adm_user());
                    break;
                case ("uprofile_xml"):                    
                    $xml_dom = $.fromXMLString(xml_user());
                    break;
                case ("xml_caption"):                                    
                    $xml_dom = $.fromXMLString(xml_caption());
                    break;
                case ("email_xml"):           
                    $xml_dom = $.fromXMLString(xml_bulk_email());
                    break;                                        
               default:                        
                    break;
            }            
                        
            $xml_dom.find("field").each(function()
            {
                      
                      
                var fld_name = "#"+jQuery.trim( $(this).find("fieldname").text());
                var fld_lbl = "#"+jQuery.trim( $(this).find("fieldlbl").text());
                var vld = true;          
                // loop thought validation routines            
                $(this).find("routine").each(function()
                {
                    var r_type = jQuery.trim($(this).attr("type"));
                    var msg = jQuery.trim($(this).attr("message"));
                    var ttl = jQuery.trim($(this).attr("ttl"));
                    var r = jQuery.trim($(this).text());
                    var condition = jQuery.trim($(this).attr("condition_fld"))
                    var valid = true;                                    
                    //conditional attribute (field require) some fields may not be required when editing                    
                    if ( condition !="" )
                    {
                        var fld = "#"+jQuery.trim($(this).attr("condition_fld"));                                               
                        if ($(fld).val() == "false" && $(fld_name).val() == "")
                        {
                            return true;
                        }                                              
                    }                    
                                        
                    //alert(fld_name);                    
                    if (r_type == "reg" | r_type == "email")
                    {
                        rg = new RegExp(r);
                        
                        if (! $(fld_name).val().match(rg) )
                        {                        
                            valid = false;
                            rtn ++;
                        }                   
                    }                                 
                    else if (r_type == "field")
                    {
                        var fld1 = $(fld_name).val();
                        var fld2 = $("#"+r).val();                   
                        
                        if ( fld1 != fld2 )
                        {                        
                            valid = false;
                            rtn ++;
                        }                   
                    }                
                    else if (r_type == "unique") 
                    {        
                        //2ndary function sets field value           
                        var  val = jQuery.trim($("#"+r).val());                    
                        
                        if ( val != "true" )
                        {
                            valid = false;
                            rtn ++;  
                        }                                                                               
                    } 
                    else if (r_type == "f_vld") 
                    {        
                        //2ndary function sets field value           
                        var  val = jQuery.trim($("#"+r).val());                    
                                                  
                        if ( val != "true")
                        {
                            valid = false;
                            rtn ++;  
                        }                                                                               
                    }                       
                    else if (r_type == "length")
                    {        
                        var fld1 = $(fld_name).val();           
                        var  val = jQuery.trim($("#"+r).val());                    
                                                  
                        if ( fld1.length > parseInt(val) )
                        {
                            valid = false;                            
                            rtn ++; 
                        }                                                                               
                    }                  
                    else if (r_type == "length_less")
                    {       
                                           
                        var fld1 = $(fld_name).val();                                              
                        if ( fld1.length < parseInt(r) )
                        {
                            valid = false;
                            rtn ++;  
                        }                                                                               
                    }   
                    else if (r_type == "length_greater")
                    {       
                                           
                        var fld1 = $(fld_name).val();                                              
                        if ( fld1 > parseInt(r) )
                        {
                            valid = false;
                            rtn ++;  
                        }                                                                               
                    }                                         
                    else if (r_type == "group")
                    {       
                        // counter for loop  
                        var ndx = $("#cnt").val();
                                                                                         
                        // loop though group of fields
                        for (var x = 1; x <= parseInt(ndx); x++)
                        {
                            var fld_name2 = fld_name+x;
                            var fld_lbl2 = fld_lbl+x;
                            var rg2 = new RegExp(r);
                                                                                    
                        
                            if (! $(fld_name2).val().match(rg2) )
                            {                        
                                valid = false;                                   
                                setErrors(fld_name2,fld_lbl2,msg); 
                                rtn ++;
                            }                                                           
                            
                            
                        }                                             
                        
                    }
                    else if (r_type == "radio")
                    {
                        fld_name = fld_name.replace("#","");                        
                        if (undefined === $("input[@name='"+fld_name+"']:checked").val()) {
                            valid = false;
                            rtn ++;
                        }
                    } 
                    else if (r_type == "checkbox_related")
                    {                                          
                        var fld2 = "#"+jQuery.trim($(this).attr("field"));                                                                      
                        
                        if (! $(fld_name).attr('checked') && $(fld2).attr('checked') == false )
                        {                        
                            valid = false;
                            rtn ++;
                        }                   

                    }                         
                                                 
                    if ( ! valid )
                    {
                          setErrors(fld_name,fld_lbl,msg);                                              
                          vld = false;
                    }
                    else
                    {       
                        if (vld)
                        {             
                          clearErrors(fld_name,fld_lbl);                    
                         }
                    }
                                       
                });
                                        
            }); 
               
            //alert(rtn); 
            if ( rtn > 0 )
            {                           
                return false;
            }
            else
            {
                return true;
             } 
        }                     
        catch (err)
        {
            error_msg += err;
            return false;
        }
    }
    
    // form submit
    function submit_form(action, xml)
    {        
       
        if (action == "")
        {
            action = "submit";
        }
         error_msg = "";
         if( validate_fields(xml))
         {                                    
            $("#action").val(action);
            $('#feedback').text("");
            return true;
             //document.form1.submit();
         }
         else
         {            
            
            $('#feedback').addClass("feedback");            
            $('#feedback').text("Error: "+error_msg.substring(0,error_msg.lastIndexOf(","))+".");
            return false;
         }
          
    }
    
    function submit_form2(action)
    {
        if (action == "")
        {
            action = "submit";
        }
         
        $("#action").val(action);
        $('#feedback').text("");
        document.form1.submit();
         
    }
    
    function submit_sequence(action, id)
    {
        if (action == "")
        {
            action = "submit";
        }
         
        $("#f_id").val(id);
        $("#action").val(action);
        $('#feedback').text("");
        document.form1.submit();
         
    }
    
    function submit_delete()
    {
            $("#action").val("delete");
            $('#feedback').text("");
             document.form1.submit();
    }    
    
    //cart function submit
    function removeItem(id)
    {
        $("#action").val("remove");
        $('#f_key').val(id);        
        document.form1.submit();
    
    }
    
    // validates fields against database. 
    function onblur_validate(r, val, fld_vld)        
    {        
        //validate exluding existing rec
        var id = "";
        if (r == "username_adm")
        {
            id = $("#f_id").val();
        }
        $.getJSON("ajax.aspx",{action:r,val:val,id:id}, function(j)
        {
                        
            if (j.length > 0 )
            {
                cnt = j[0].count;
            }
            
            if (cnt > 0)
            {                                                                 
               $(fld_vld).val("false");                                            
            } 
            else
            {                            
                $(fld_vld).val("true");                
            }                                        
        
        });    
    }
        
    jQuery.fromXMLString = function(strXML){
        if (window.DOMParser) {
        
            return jQuery(new DOMParser().parseFromString(strXML, "text/xml"));
        
        } else if (window.ActiveXObject) {
            var doc = new ActiveXObject("Microsoft.XMLDOM");
            doc.async = "false";
            doc.loadXML(strXML);
            return jQuery(doc);
        } else {
            return jQuery(strXML);
        }    
    };
       
    function setErrors(fld, lbl, msg)
    {
         if (fld != "" && lbl != "")
         {
            $(fld).addClass("feedback_fld");
            $(lbl).addClass("feedback");
            $(fld).attr("title",msg);                                               
            $(lbl).attr("title",msg);
            
            if (msg != undefined && msg != "" )
            {
                //try not to duplicate last error message
                var tmp_err = error_msg.substring(error_msg.lastIndexOf(error_msg.substring(0,error_msg.length -1,",")));
                tmp_err = tmp_err.replace(",","");                          
                var tmp_msg = msg.replace(",","");
                
                tmp_err = jQuery.trim(tmp_err);
                tmp_msg = jQuery.trim(tmp_msg);
                                
                if (tmp_err != tmp_msg)
                {                
                    error_msg += msg+", ";
                }
            }
        }
    
    }
    
    function clearErrors(fld, lbl)
    {
         if (fld != "" && lbl != "")
         {
            $(fld).removeClass("feedback_fld");
            $(lbl).removeClass("feedback"); 
            $(fld).attr("title","");                       
            $(lbl).attr("title","");
        }            
    }    
        
    
    var hash = {
      '.gif'  : 1,
      '.jpg' : 1,
      '.png' : 1,
    };

    function check_extension(filename) {
    
      var re = /\..+$/;
      var ext = filename.match(re);
      
      if (hash[ext]) {            
        $("#f_vld").val("true");  
        //return true;
      } else {
        $("#f_vld").val("false");  
        //return false;
        
      }
    }

    
    function singinxml()
    {
    
    var xml_str;
    
    xml_str = '<?xml version="1.0" encoding="utf-8" ?>';
    xml_str +='<fields>';
    xml_str +='<field>';
    xml_str +='<fieldname>f_email</fieldname>';
    xml_str +='<fieldlbl>lbl_email</fieldlbl>';
    xml_str +='<validation>';
    xml_str +='<routine type="reg" message="Email required">\\w+</routine>';
    xml_str +='</validation>';
    xml_str +='</field>';
    xml_str +='<field>';
    xml_str +='<fieldname>f_pword</fieldname>';
    xml_str +='<fieldlbl>lbl_pword</fieldlbl>';
    xml_str +='<validation>';
    xml_str +='<routine type="reg" message="Password required">\\w+</routine>';
    xml_str +='</validation>';
    xml_str +='</field>';
    xml_str +='</fields>';

    return xml_str;
    
    }
    
    
    function img_lib_xml()
    {
    
    var xml_str;
    
    xml_str = '<?xml version="1.0" encoding="utf-8" ?>';
    xml_str +='<fields>';   
    xml_str +='<field>';
    xml_str +='<fieldname>f_caption</fieldname>';
    xml_str +='<fieldlbl>lbl_caption</fieldlbl>';
    xml_str +='<validation>';
    xml_str +='<routine type="reg" message="Caption required">\\w+</routine>';
    xml_str +='</validation>';
    xml_str +='</field>';
    xml_str +='<field>';
    xml_str +='<fieldname>f_file</fieldname>';
    xml_str +='<fieldlbl>lbl_file</fieldlbl>';
    xml_str +='<validation>';
    xml_str +='<routine type="reg" message="File required">\\w+</routine>';
    xml_str +='<routine type="f_vld" message="Incorrect File type (jpg, gif, png accepted)">f_vld</routine>';
    xml_str +='</validation>';
    xml_str +='</field>';    
    xml_str +='</fields>';

    return xml_str;
    
    }
    
    
     function forgotxml()
    {
    
    var xml_str;
    
    xml_str = '<?xml version="1.0" encoding="utf-8" ?>';
    xml_str +='<fields>';
    xml_str +='<field>';
    xml_str +='<fieldname>f_email</fieldname>';
    xml_str +='<fieldlbl>lbl_email</fieldlbl>';
    xml_str +='<validation>';
    xml_str +='<routine type="reg" message="Email required">\\w+</routine>';
    xml_str +='</validation>';
    xml_str +='</field>';   
    xml_str +='</fields>';

    return xml_str;
    
    }
