/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/

var Url = {

    // public method for url encoding
    encode : function (string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode : function (string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}



        // JavaScript Document
        var ChurchID_Other = 999999999;

         function GoState(sState) {
                //alert("gostate");
                var seldiv = document.getElementById('divchurchname');
                //seldiv.style.display = "none";
                seldiv.style.display = "inline";                                
                
                document.form1.selectstate.value = 'yes';
                document.form1.stateselected.value = sState;
        document.form1.submit();                                 
        }
        
        function SetCountryBlock(sAffiliation)   {
                                //alert("sAffiliation");                              
                var seldivlcms = document.getElementById('divlcms');
                var seldivchurchname = document.getElementById('divchurchname');
                //var seldivlcc = document.getElementById('divlcc');            
                //alert("seldivlcms");                 
                                 //alert seldivlcms;

                                //alert(sAffiliation);
                                        
                if (sAffiliation == "Otro") {
                        //seldivlcms.style.display = "inline";
                        seldivlcms.style.display = "none";                                              
                        //seldivlcc.style.display = "none";                                             
                        
                       // if (document.form1.country[document.form1.country.selectedIndex].value == Other) {
                                seldivchurchname.style.display = "inline"; }
                       // else {
                       //         seldivchurchname.style.display = "none"; }
                      //  }
                else {
                 //       if (sAffiliation == "LCC") {
                 //               seldivlcms.style.display = "none";
                 //               seldivchurchname.style.display = "none";
                //      seldivlcc.style.display = "inline";                             
                 //       }
                 //       else {
                                seldivlcms.style.display = "inline";
                                seldivchurchname.style.display = "none";
                                //seldivlcc.style.display = "none";                                             
                        }
                
        }






        function SetChurchName(iChurchID)       {
                var seldiv = document.getElementById('divchurchname');
        
                if (iChurchID == ChurchID_Other) {
                        seldiv.style.display = "inline";                        
                }
                else {
                        seldiv.style.display = "none";                  
                }
        }      
        
        function SubmitCheck(){ 
        //Ensures user completes data entry forms
        // regular expression for string that only contains 0 or more whitespace chars
        // i.e. a sophisticated "blank field" check
        var reBlank = /^\s*$/;                       



       
        
                                
        var strValue = document.form1.churchaffiliation.value;
        if (reBlank.test(strValue)){
                alert("Ingrese el nombre de su iglesia.");
                document.form1.churchaffiliation.focus();
                return false;
        }
                
        var strValue = document.form1.City.value;
        if (reBlank.test(strValue)){
                alert("Ingrese la ciudad.");
                document.form1.City.focus();
                return false;
        }                                               
                                
      
                if (document.form1.Country.selectedIndex == 0 ) {
                        alert('Ingrese el paìs.');  
                        document.form1.Country.focus(); 
                return false; }           
          
          
                if (document.form1.Country[document.form1.Country.selectedIndex].value == "US") {
                        if (document.form1.congregationstate.selectedIndex == 0 ) {
                                alert('Ingrese el Estado.');  
                                document.form1.congregationstate.focus(); 
                                return false; } 

                   //     if (document.form1.congregation.selectedIndex == 0 ) {
                   //             alert('Please select your congregation.');  
                   //             document.form1.congregation.focus(); 
                  //              return false; }  
                                
                  //      if (document.form1.congregation.selectedIndex == 1 ) {    
                  //              var strValue = document.form1.churchname.value; 
                  //              if (reBlank.test(strValue)){ 
                  //                      alert('Please enter your church name.');  
                  //                      document.form1.churchname.focus(); 
                   //                     return false; } 
                   //     }                           
                }
                                
                                
                if (document.form1.Country[document.form1.Country.selectedIndex].value == "CA") {
                        if (document.form1.congregationstate.selectedIndex == 0 ) {
                                alert('Ingrese la Provincia (sólo para Canadá).');  
                                document.form1.congregationstate.focus(); 
                                return false; } 

                   //     if (document.form1.congregation.selectedIndex == 0 ) {
                   //             alert('Please select your congregation.');  
                   //             document.form1.congregation.focus(); 
                  //              return false; }  
                                
                  //      if (document.form1.congregation.selectedIndex == 1 ) {    
                  //              var strValue = document.form1.churchname.value; 
                  //              if (reBlank.test(strValue)){ 
                  //                      alert('Please enter your church name.');  
                  //                      document.form1.churchname.focus(); 
                   //                     return false; } 
                   //     }                           
                }       
                                
                                
               if (document.form1.Country[document.form1.Country.selectedIndex].value == "Otro") {
                  //      if (document.form1.congregationstate.selectedIndex == 0 ) {
                  //              alert('Please select your Province.');  
                   //             document.form1.congregationstate.focus(); 
                   //             return false; } 

                   //     if (document.form1.congregation.selectedIndex == 0 ) {
                   //             alert('Please select your congregation.');  
                   //             document.form1.congregation.focus(); 
                  //              return false; }  
                                
                  //      if (document.form1.congregation.selectedIndex == 1 ) {    
                                var strValue = document.form1.churchcountry.value; 
                                if (reBlank.test(strValue)){ 
                                        alert('Ingrese el paìs.');  
                                        document.form1.churchcountry.focus(); 
                                        return false; } 
                   //     }                           
                }                                                                                       
                                
  
              var strValue = document.form1.NumbercopiesC.value;
              if (reBlank.test(strValue)){
                alert("Ingrese el número de copias a imprimir (sin comas, guiones o letras)");
                document.form1.NumbercopiesC.focus();
                return false;
        }
        
             var strValue = document.form1.NumbercopiesC.value;
             if (!IsNumeric(strValue))  {
             alert('Ingrese el número de copias a imprimir (sin comas, guiones o letras).') 
             document.form1.NumbercopiesC.focus();
             return false;
        }
      
                      
        }

        function IsNumeric(strString)   {
                //  check for valid numeric strings 
                 var strValidChars = "0123456789";
                 var strChar;
                 var blnResult = true;
 
                 if (strString.length == 0) return false;
                 //  test strString consists of valid characters listed above
                        for (i = 0; i < strString.length && blnResult == true; i++) 
                        {
                                strChar = strString.charAt(i);
                                if (strValidChars.indexOf(strChar) == -1)
                                {       
                                        blnResult = false;
                                }
                        }
 
                        return blnResult;
        }
 
        function SetHowUsedetail(strvalue) { 
                if (strvalue == 'Other') {
                        document.getElementById('divOther').style.display = 'inline'; }
                else {
                        document.getElementById('divOther').style.display = 'none';                  
                }               
        } 


        function Setchurchaffiliation(strvalue) { 
                //alert(strvalue);
                if (strvalue == 'LCMS') {
                        document.getElementById('divlcms').style.display = 'inline'; }
                else {
                        document.getElementById('divlcms').style.display = 'none';                  
                }               
        }

        function emailCheck(strEmail) {
                            /* The following variable tells the rest of the function whether or not
                                to verify that the address ends in a two-letter country or well-known
                                TLD.  1 means check it, 0 means don't. */

                                var emailStr = strEmail.toLowerCase();
                                
                                var checkTLD=1;

                                /* The following is the list of known TLDs that an e-mail address must end with. */

                                var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

                                /* The following pattern is used to check if the entered e-mail address
                                fits the user@domain format.  It also is used to separate the username
                                from the domain. */

                                var emailPat=/^(.+)@(.+)$/;

                                /* The following string represents the pattern for matching all special
                                characters.  We don't want to allow special characters in the address. 
                                These characters include ( ) < > @ , ; : \ " . [ ] */

                                var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

                                /* The following string represents the range of characters allowed in a 
                                username or domainname.  It really states which chars aren't allowed.*/

                                var validChars="\[^\\s" + specialChars + "\]";

                                /* The following pattern applies if the "user" is a quoted string (in
                                which case, there are no rules about which characters are allowed
                                and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
                                is a legal e-mail address. */

                                var quotedUser="(\"[^\"]*\")";

                                /* The following pattern applies for domains that are IP addresses,
                                rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
                                e-mail address. NOTE: The square brackets are required. */

                                var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

                                /* The following string represents an atom (basically a series of non-special characters.) */

                                var atom=validChars + '+';

                                /* The following string represents one word in the typical username.
                                For example, in john.doe@somewhere.com, john and doe are words.
                                Basically, a word is either an atom or quoted string. */

                                var word="(" + atom + "|" + quotedUser + ")";

                                // The following pattern describes the structure of the user

                                var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

                                /* The following pattern describes the structure of a normal symbolic
                                domain, as opposed to ipDomainPat, shown above. */

                                var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

                                /* Finally, let's start trying to figure out if the supplied address is valid. */

                                /* Begin with the coarse pattern to simply break up user@domain into
                                different pieces that are easy to analyze. */

                                var matchArray=emailStr.match(emailPat);

                                if (matchArray==null) {

                                        /* Too many/few @'s or something; basically, this address doesn't
                                        even fit the general mould of a valid e-mail address. */

                                        alert("Email address seems incorrect (check @ and .'s)");
                                        return false;
                                }
                                
                                var user=matchArray[1];
                                var domain=matchArray[2];

                                // Start by checking that only basic ASCII characters are in the strings (0-127).

                                for (i=0; i<user.length; i++) {
                                        if (user.charCodeAt(i)>127) {
                                                alert("Ths username contains invalid characters.");
                                                return false;
                                        }
                                }
                                for (i=0; i<domain.length; i++) {
                                        if (domain.charCodeAt(i)>127) {
                                                alert("Ths domain name contains invalid characters.");
                                                return false;
                                        }
                                }

                                // See if "user" is valid 

                                if (user.match(userPat)==null) {

                                // user is not valid

                                        alert("The username doesn't seem to be valid.");
                                        return false;
                                }

                                /* if the e-mail address is at an IP address (as opposed to a symbolic

                                host name) make sure the IP address is valid. */

                                var IPArray=domain.match(ipDomainPat);
                                if (IPArray!=null) {

                                // this is an IP address

                                        for (var i=1;i<=4;i++) {
                                                if (IPArray[i]>255) {
                                                        alert("Destination IP address is invalid!");
                                                        return false;
                                                 }
                                        }
                                return true;
                                }

                                // Domain is symbolic name.  Check if it's valid.
                                 
                                var atomPat=new RegExp("^" + atom + "$");
                                var domArr=domain.split(".");
                                var len=domArr.length;
                                for (i=0;i<len;i++) {
                                        if (domArr[i].search(atomPat)==-1) {
                                                alert("The domain name does not seem to be valid.");
                                                return false;
                                        }
                                }

                                /* domain name seems valid, but now make sure that it ends in a
                                known top-level domain (like com, edu, gov) or a two-letter word,
                                representing country (uk, nl), and that there's a hostname preceding 
                                the domain or country. */

                                if (checkTLD && domArr[domArr.length-1].length!=2 && 
                                        domArr[domArr.length-1].search(knownDomsPat)==-1) {
                                        alert("The address must end in a well-known domain or two letter " + "country.");
                                        return false;
                                }

                                // Make sure there's a host name preceding the domain.

                                if (len<2) {
                                        alert("This address is missing a hostname!");
                                        return false;
                                }

                                // If we've gotten this far, everything's valid!
                                return true;
        }

        function PopPrivacy(URL) {
                window.open(URL,'','height=320,width=365,top=175,left=275');
        }
