﻿// Common JavaScript functions that can be utilized by any of the web pages
// If a function is specific to a page or section it should be placed in a
// separate file.

// Get mouse coordinates
function getCoords(e)
{
   var evt = e ? e : window.event;
   var clickX = 0, clickY = 0;

   if ((evt.clientX || evt.clientY) && document.body && document.body.scrollLeft != null) {
      clickX = evt.clientX + document.body.scrollLeft;
      clickY = evt.clientY + document.body.scrollTop;
   }

   if ((evt.clientX || evt.clientY) && document.compatMode == 'CSS1Compat' && document.documentElement && document.documentElement.scrollLeft != null) {
      clickX = evt.clientX + document.documentElement.scrollLeft;
      clickY = evt.clientY + document.documentElement.scrollTop;
   }

   if (evt.pageX || evt.pageY) {
      clickX = evt.pageX;
      clickY = evt.pageY;
   }

   return { x: clickX, y: clickY };
}

// Select/Unselect all the checkbox elements on a page based on the jQuery selector passed in
function SelectUnselectAllCheckboxes(obj, allCheckboxes)
{
   if(!obj)
      return;
   $(allCheckboxes + ' input[type="checkbox"]').prop("checked", obj.checked);
}

// Select/Unselect all the checkbox elements on a page based on the jQuery selectors passed in
function SelectUnselectCheckbox(allCheckboxes, mainCheckbox)
{
   var allSelected = true;
   $(allCheckboxes + ' input[type="checkbox"]').each(function ()
   {
      if(!$(this).is(':checked'))
         allSelected = false;
   });

   if(allSelected)
      $(mainCheckbox).attr('checked', 'checked'); 
   else
      $(mainCheckbox).removeAttr('checked'); 
}

// Disabled the button and turn on the disabledButton.
// Both parameters should be jQuery selectors
function DisableButton(button, disabledButton, button2)
{
   if (button && disabledButton)
      $(button).hide(0, function () { $(disabledButton).show() });

   if(button2)
      $(button2).hide();
}

function ClickOnEnterKeyPressed(evt, obj, targetSelector)
{
   var e = evt ? evt : window.event;
   var key = e.keyCode || e.which;

   if(key == 13) {
      var target = $(targetSelector);

      if(target.is("a")) {
         //target.focus();
         var href = target.attr("href");
         var hrefParts = href.split(":");
         if(hrefParts.length > 1 && hrefParts[0].toLowerCase() == "javascript") {
            eval(hrefParts[1]);
         }
         else {         
            window.location.href = href;
         }
      }
      else {
         target.click();
      }
   }
}

function RedirectOnEnterKey(evt, obj, url)
{
   var e = evt ? evt : window.event;
   var key = e.keyCode || e.which;

   if(key == 13) {
      window.location.href = GetFullUrl(url);
      return false;
   }

   return true;
}

function GetFullUrl(partialUrl)
{
   var loc = window.location;
   var fullUrl = "" + loc.protocol + "//" + loc.host + partialUrl;
   return fullUrl;
}

function RedirectFramePage(url)
{
   $.fancybox.close();
   ClearFrame();
   window.location.href = GetFullUrl(url);
}

function CloseFramePage()
{
   $.fancybox.close();
   return false;
}

function ResizeFrame(h)
{
   if(h > 0 && $('#fancybox-content').size() > 0) {
      $('#fancybox-content').css({ height: h + "px" });
      $.fancybox.resize();
   }
}

function ClearFrame()
{
   // Clear the fancybox content if it was rendered on the page previously
   var fancyboxContent = $('#fancybox-content');
   if(fancyboxContent.size() > 0)
      fancyboxContent.html('');
}

function HandleSearchEnterKey(evt, obj)
{
   var e = evt? evt : window.event;
   var key = e.keyCode || e.which;

   if (key == 13 && obj.value.length > 0) {
      window.location = '/main/services/Search/buy/' + CleanPartNumberAsUrl(obj.value);
      return false;
   }

   return true;
}

function CleanPartNumberAsUrl(partNumber)
{
   // Clean the part number and convert it to upper case
   var cleanPartNumber = partNumber.toUpperCase().replace(/[^0-9A-Z.+]/g, "").replace(/[.]$/, "");

   // Encode the + character
   return cleanPartNumber.replace(/[+]/g, "%2b");
}

function GetGoogleAnalyticsAccount()
{
   var host = window.location.host.toLowerCase();;

   // Parminer.cn account
   if(host.indexOf("partminer.cn") != -1) {
      return 'UA-20585971-1';
   }
   // Partminer.com account if not dev or test
   else if(host.indexOf(".local") == -1 && host.indexOf("dev.partminer.com") == -1 && host.indexOf("test.partminer.com") == -1) {
      return 'UA-7887795-1';
   }
   else {
      return "''";
   }
}
