var myCaptKey = 1000;
var theUrl = "";
/*!
Math.uuid.js (v1.4)
http://www.broofa.com
mailto:robert@broofa.com

Copyright (c) 2009 Robert Kieffer
Dual licensed under the MIT and GPL licenses.
*/

/*
 * Generate a random uuid.
 *
 * USAGE: Math.uuid(length, radix)
 *   length - the desired number of characters
 *   radix  - the number of allowable values for each character.
 *
 * EXAMPLES:
 *   // No arguments  - returns RFC4122, version 4 ID
 *   >>> Math.uuid()
 *   "92329D39-6F5C-4520-ABFC-AAB64544E172"
 *
 *   // One argument - returns ID of the specified length
 *   >>> Math.uuid(15)     // 15 character ID (default base=62)
 *   "VcydxgltxrVZSTV"
 *
 *   // Two arguments - returns ID of the specified length, and radix. (Radix must be <= 62)
 *   >>> Math.uuid(8, 2)  // 8 character ID (base=2)
 *   "01001010"
 *   >>> Math.uuid(8, 10) // 8 character ID (base=10)
 *   "47473046"
 *   >>> Math.uuid(8, 16) // 8 character ID (base=16)
 *   "098F4D35"
 */
Math.uuid = (function() {
  // Private array of chars to use
  var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');

  return function (len, radix) {
    var chars = CHARS, uuid = [];
    radix = radix || chars.length;

    if (len) {
      // Compact form
      for (var i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix];
    } else {
      // rfc4122, version 4 form
      var r;

      // rfc4122 requires these characters
      uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
      uuid[14] = '4';

      // Fill in random data.  At i==19 set the high bits of clock sequence as
      // per rfc4122, sec. 4.1.5
      for (var i = 0; i < 36; i++) {
        if (!uuid[i]) {
          r = 0 | Math.random()*16;
          uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
        }
      }
    }

    return uuid.join('');
  };
})();


/* ---------------------------------------------------------------
-   function requestCatalog
-
-   purpose - validates inputs, and sends request for catalog to
-             a specific email account.
-
-
-   created date  2/26/2009
-   written by  Mike Kucharski
-----------------------------------------------------------------*/
function requestCatalog()
{
   var valid = "Y";

   // --------------------- captcha -------------------
   var captcha = $("#captchaResponse").val();
   captcha = captcha.replace(/ /g,"$!20");
   if (captcha == "")
   {
      valid = "N";
      $('#captcha').focus();
      $('#errcaptcha').html('<span id="captcha.errors" class="formError">CAPTCHA response invalid.</span>');
   }
   else
   {
      $('#errcaptcha').html("");
   }


   var storeId = $("#storeId").val();

   // ------------------------ email --------------------
   var email = $("#email").val();
   $('#erremail').html("");
   if (email == "")
   {
      $('#email').focus();
      $('#erremail').html('<span id="email.errors" class="formError">E-Mail is required.</span>');
      valid = 'N';
   }
   if (email.indexOf("@") <= 0)
   {
      $('#email').focus();
      $('#erremail').html('<span id="email.errors" class="formError">Valid E-Mail is required.</span>');
      valid = 'N';
   }
   else
   {
      if (email.indexOf(".") <= 0)
      {
        $('#email').focus();
        $('#erremail').html('<span id="email.errors" class="formError">Valid E-Mail is required.</span>');
        valid = 'N';
      }
   }
   if ((email.indexOf("/") >= 0)  || (email.indexOf("%") >= 0) || (email.indexOf(";") >= 0) || (email.indexOf("?") >= 0)  )
   {
      $('#email').focus();
      $('#erremail').html('<span id="email.errors" class="formError">Email can not contain / or \\ or ; or % or ?.</span>');
      valid = "N";
   }


   // --------------------- zip  -------------------
   var zipCode = $("#zip").val();
   if (zipCode == "")
   {
      $('#zip').focus();
      $('#errzip').html('<span id="zip.errors" class="formError">Zip Code is required.</span>');
      valid = "N";
   }
   else
   {
      $('#errzip').html("");
   }
   if ((zipCode.indexOf("/") >= 0)  || (zipCode.indexOf("%") >= 0) || (zipCode.indexOf(";") >= 0) || (zipCode.indexOf("\\") >= 0)|| (zipCode.indexOf("?") >= 0)  )
   {
      $('#zip').focus();
      $('#errzip').html('<span id="zip.errors" class="formError">Zip Code can not contain  / or \\ or ; or % or ?.</span>');
      valid = "N";
   }


  // --------------------- fax  -------------------
   var faxNumber = $("#fax").val();
   if (faxNumber == "")
   {
      $('#fax').focus();
      $('#errfax').html('<span id="fax.errors" class="formError">Fax No is required.</span>');
      valid = "N";
   }
   else
   {
      $('#errfax').html("");
   }
   if ((faxNumber.indexOf("/") >= 0)  || (faxNumber.indexOf("%") >= 0) || (faxNumber.indexOf(";") >= 0) || (faxNumber.indexOf("\\") >= 0)|| (faxNumber.indexOf("?") >= 0)  )
   {
      $('#fax').focus();
      $('#errfax').html('<span id="fax.errors" class="formError">Fax can not contain  / or \\ or ; or % or ?.</span>');
      valid = "N";
   }


   // --------------------- phone  -------------------
   var phoneNumber = $("#phone").val();
   if (phoneNumber == "")
   {
      $('#phone').focus();
      $('#errphone').html('<span id="phone.errors" class="formError">Phone No is required.</span>');
      valid = "N";
   }
   else
   {
      $('#errphone').html("");
   }
   if ((phoneNumber.indexOf("/") >= 0)  || (phoneNumber.indexOf("%") >= 0) || (phoneNumber.indexOf(";") >= 0) || (phoneNumber.indexOf("\\") >= 0)|| (phoneNumber.indexOf("?") >= 0)  )
   {
      $('#phone').focus();
      $('#errphone').html('<span id="phone.errors" class="formError">Phone can not contain  / or \\ or ; or % or ?.</span>');
      valid = "N";
   }

   // --------------------- state  -------------------
   var state = $("#state").val();
   if (state == "")
   {
      $('#state').focus();
      $('#errstate').html('<span id="state.errors" class="formError">State/Province is required.</span>');
      valid = "N";
   }
   else
   {
      $('#errstate').html("");
   }

   // --------------------- city  -------------------
   var city = $("#city").val();
   city = city.replace(/ /g,"$!20");
   if (city == "")
   {
      $('#city').focus();
      $('#errcity').html('<span id="city.errors" class="formError">City is required.</span>');
      valid = "N";
   }
   else
   {
      $('#errcity').html("");
   }

   if ((city.indexOf("/") >= 0)  || (city.indexOf("%") >= 0) || (city.indexOf(";") >= 0) || (city.indexOf("\\") >= 0)|| (city.indexOf("?") >= 0)  )
   {
      $('#city').focus();
      $('#errcity').html('<span id="city.errors" class="formError">City can not contain  / or \\ or ; or % or ?.</span>');
      valid = "N";
   }


   // --------------------- street address2  -------------------
   var street2 = $("#street2").val();

   if ((street2.indexOf("/") >= 0)  || (street2.indexOf("%") >= 0) || (street2.indexOf(";") >= 0) || (street2.indexOf("\\") >= 0)|| (street2.indexOf("?") >= 0)  )
   {
      $('#street2').focus();
      $('#erraddr2').html('<span id="street2.errors" class="formError">Street2 can not contain  / or \\ or ; or % or ?.</span>');
      valid = "N";
   }
   else
   {
      $('#erraddr2').html("");
   }


   // --------------------- street address  -------------------
   var street1 = $("#street1").val();
   street1 = street1.replace(/ /g,"$!20");
   if (street1 == "")
   {
      $('#street1').focus();
      $('#erraddr1').html('<span id="street1.errors" class="formError">Street Address 1 is required.</span>');
      valid = "N";
   }
   else
   {
      $('#erraddr1').html("");
   }
   if ((street1.indexOf("/") >= 0)  || (street1.indexOf("%") >= 0) || (street1.indexOf(";") >= 0) || (street1.indexOf("\\") >= 0)|| (street1.indexOf("?") >= 0)  )
   {
      $('#street1').focus();
      $('#erraddr1').html('<span id="street1.errors" class="formError">Street can not contain  / or \\ or ; or % or ?.</span>');
      valid = "N";
   }


   // --------------------- company name -------------------
   var cname = $("#companyName").val();
   cname = cname.replace(/ /g,"$!20");
   if (cname == "")
   {
      $('#companyName').focus();
      $('#errcompany').html('<span id="companyName.errors" class="formError">Company Name is required.</span>');
      valid = "N";
   }
   else
   {
      $('#errcompany').html("");
   }
   if ((cname.indexOf("/") >= 0)  || (cname.indexOf("%") >= 0) || (cname.indexOf(";") >= 0) || (cname.indexOf("\\") >= 0)|| (cname.indexOf("?") >= 0)  )
   {
      $('#companyName').focus();
      $('#errcompany').html('<span id="companyName.errors" class="formError">Company Name can not contain  / or \\ or ; or % or ?.</span>');
      valid = "N";
   }

   // --------------------- last name -------------------
   var lname = $("#lastName").val();
   lname = lname.replace(/ /g,"$!20");
   if (lname == "")
   {
      $('#lastName').focus();
      $('#errlastname').html('<span id="lastName.errors" class="formError">Last Name is required.</span>');
      valid = "N";
   }
   else
   {
      $('#errlastname').html("");
   }
   if ((lname.indexOf("/") >= 0)  || (lname.indexOf("%") >= 0) || (lname.indexOf(";") >= 0) || (lname.indexOf("\\") >= 0)|| (lname.indexOf("?") >= 0)  )
   {
      $('#lastName').focus();
      $('#errlastname').html('<span id="lastName.errors" class="formError">Last Name can not contain  / or \\ or ; or % or ?.</span>');
      valid = "N";
   }

   // --------------------- first name -------------------
   var fname = $("#firstName").val();
   fname = fname.replace(/ /g,"$!20");
   if (fname == "")
   {
      valid = "N";
      $('#firstName').focus();
      $('#errfirstname').html('<span id="firstName.errors" class="formError">First Name is required.</span>');
   }
   else
   {
      $('#errfirstname').html("");
   }
   if ((fname.indexOf("/") >= 0)  || (fname.indexOf("%") >= 0) || (fname.indexOf(";") >= 0) || (fname.indexOf("\\") >= 0)|| (fname.indexOf("?") >= 0)  )
   {
      $('#firstName').focus();
      $('#errfirstname').html('<span id="firstName.errors" class="formError">First Name can not contain  / or \\ or ; or % or ?.</span>');
      valid = "N";
   }




   var street2 = $("#street2").val();
   street2 = street2.replace(/ /g,"$!20");
   if (street2 == "")
   {
      street2 = "$!20";
   }

   var comments = $("#comments").val();
   if (comments.length > 900)
   {
      alert('comments must be less than 900 characters');
      valid = 'N';
   }
   if ((comments.indexOf("/") >= 0)  || (comments.indexOf("%") >= 0) || (comments.indexOf(";") >= 0) || (comments.indexOf("\\") >= 0) || (comments.indexOf("?") >= 0)  )
   {
      $('#comments').focus();
      alert('comments can not contain  / or \\ or ; or % or ?.');
      valid = "N";
   }


   comments = comments.replace(/ /g,"$!20");
   if (comments == "")
   {
      comments = "$!20";
   }

   var faxNumber = $("#fax").val();
   if (faxNumber == "")
   {
      faxNumber = "$!20";
   }




   var tbWholesaler = document.getElementById("Wholesaler");
   var tbScreenPrinter = document.getElementById("Screen Printer");
   var tbEmbroiderer = document.getElementById("Embroiderer");
   var tbRetailer = document.getElementById("Retailer/Sports Goods");
   var tbAdvertising = document.getElementById("Advertising/Marketing");
   var tbTradeMagazine = document.getElementById("Trade Magazine");
   var tbOther = $("#otherTypeOfBusiness").val();


   if ((tbOther.indexOf("/") >= 0)  || (tbOther.indexOf("%") >= 0) || (tbOther.indexOf(";") >= 0) || (tbOther.indexOf("\\") >= 0)|| (tbOther.indexOf("?") >= 0)  )
   {
      $('#otherTypeOfBusiness').focus();
      $('#errOther').html('<span id="other.errors" class="formError">can not contain  / or \\ or ; or % or ?.</span>');
      valid = "N";
   }
   else
   {
      $('#errOther').html("");
   }

   var bType = "";
   var ck=0;

   if (tbWholesaler.checked)
   {
      if (ck ==0)
      {
         bType = "Wholesaler";
      }
      else
      {
         bType = bType + ", Wholesaler";
      }
      ck++;
   }

   if (tbScreenPrinter.checked)
   {
      if (ck ==0)
      {
         bType = "Screen Printer";
      }
      else
      {
         bType =  bType +", Screen Printer";
      }
      ck++;
   }

   if (tbEmbroiderer.checked)
   {
      if (ck ==0)
      {
         bType = "Embroiderer";
      }
      else
      {
         bType = bType + ", Embroiderer";
      }
      ck++;
   }

   if (tbRetailer.checked)
   {
      if (ck ==0)
      {
         bType = "Retailer-Sports Goods";
      }
      else
      {
         bType = bType + ", Retailer-Sports Goods";
      }
      ck++;
   }

   if (tbAdvertising.checked)
   {
      if (ck ==0)
      {
         bType = "Advertising-Marketing";
      }
      else
      {
         bType = bType + ", Advertising-Marketing";
      }
      ck++;
   }

   if (tbTradeMagazine.checked)
   {
      if (ck ==0)
      {
         bType = "Trade Magazine";
      }
      else
      {
         bType = bType + ", Trade Magazine";
      }
      ck++;
   }
   if (ck ==0)
   {
        bType = tbOther;
   }
   else
   {
       bType = bType + ", " + tbOther;
   }
   bType = bType.replace(/ /g,"$!20");
   if (bType == "")
   {
      bType = "$!20";
   }

   var catreq = document.getElementById("Catalog/Product Grid");
   var cat = "N";
   if (catreq.checked)
   {
       cat = "Y";
       var catCount = $("#numberOfCatalogs").val();
       if (catCount != "")
       {
          cat = cat + "-" + catCount;
       }
   }
   var swreq = document.getElementById("Swatch Card");
   var swatch = "N";
   if (swreq.checked)
   {
        swatch = "Y";
       var swtCount = $("#numberOfSwatchCards").val();
       if (swtCount != "")
       {
          swatch = swatch + "-" + swtCount;
       }
   }


   // -------------------- if valid send request -----------------------
   if (valid == "Y")
   {
      var cResponse = $('#captchaResponse').val();
      theUrl = "externalStoreFrontServices/rest/v1/logEmailEvent/" + storeId;

      var sUrl = "externalStoreFrontServices/rest/v1/validateCaptcha/" + myCaptKey +"/" + cResponse;
      $.get(sUrl, function(data) { validateCaptcha(data); });

   }
   else
   {
      setCaptcha();
   }


}

function checkCaptcha()
{
    var cResponse = $('#captchaResponse').val();
    var sUrl = "externalStoreFrontServices/rest/v1/validateCaptcha/" + myCaptKey +"/" + cResponse;
    $.get(sUrl, function(data) { validateCaptcha(data); });
}


function validateCaptcha(data)
{
   if ($(data).find("boolean").text() == "true")
   {
      $('#errcaptcha').html('<span id="captcha.errors" class="formError"></span>');
      $.post(theUrl, $("#catalogRequest").serialize(), function(data) { finishRequest(data); });
   }
   else
   {
      setCaptcha();
      $('#errcaptcha').html('<span id="captcha.errors" class="formError">CAPTCHA response invalid</span>');
   }
}

function setCaptcha()
{
     myCaptKey = Math.uuid();
     $("#captchaImg").attr("src", "externalStoreFrontServices/CaptchaService?captchaGuid="+ myCaptKey);
}


function finishRequest(data)
{
   var mystats = $(data).text();
   if (mystats.indexOf("Failed") >= 0)
   {
     alert('technical difficulties, please try again at another time');
   }
   else
   {
     $('#mainReq').html("<H1>Your request has been submitted. Thank you!&nbsp;</H1>");
     $('#mainReqDiv').hide();
     $('#catalogRequest').hide();
     $('#mybuttons').hide();
     $('#captcha').hide();
     $('#row1').hide();
   }


}

