/**
 *  Spoločné JS skripty
 */

$(window).ready(function() {

  $("a.popupLink").click(function(e){
    e.preventDefault();
    window.open($(this).attr('href'), '', 'width=600,height=800,menubar=no,scrollbars=yes,resizable=yes');
  });

  $("a.popupLinkMini").click(function(e){
    e.preventDefault();
    window.open($(this).attr('href'), '', 'width=600,height=400,menubar=no,scrollbars=yes,resizable=yes');
  });
  
  if ($(".vendorKeywordMissingCancel").get(0))
    $(".vendorKeywordMissingCancel").click(function(e) {
      e.preventDefault();
      $(this).parent().hide();
      $("#searchInput").focus();
    });


  if ($("p.autohide").get()) {
      $("p.autohide").css({display: 'block'}).animate({opacity:0}, 5000, 'swing');
  }
  
  if ($("#aliasInput").get()) {
    $("input#aliasInput").change(checkUniqueAlias).blur(checkUniqueAlias);
  }
  
  if ($("#inputTitle").get()) {
    $("input#inputTitle").change(getAliasTitle).blur(getAliasTitle);
  }
  
  $("#searchInput").suggest('/pub/getSearchSuggest.php',{
    onSelect: function() {  
      var val = this.value + "";
      var vals = val.split('|');
      if (vals.length > 1){
        this.value = vals[0];
        location.href="http://" + vals[1] + "." + shost + "/";
      }
      else
        location.href="http://www."+shost+"/?p=pr&search="+this.value;
    }
  });

});

function getAliasTitle(e) {
  $("#aliasInputStatus").remove();
  var t = $("#inputTitle").val();
  var a = $("#aliasInput").val();
  if (t.length > 0 && a.length == 0) {
    $("#aliasInput").val(translations.load).attr('disabled', true);
    jsonRequest('/pub/doCategoryAjaxStuff.php?action=getCategoryAlias&title=' + t, function(d){
      var nA = d.alias;
      $("#aliasInput").val(nA).attr('disabled', false);
      checkUniqueAlias(e);
    }); 
  } 
}

function checkUniqueAlias(e) {
  e.preventDefault();
  $("#aliasInputStatus").remove();
  var a = $("#aliasInput").val();
  if (a.length == 0) {
    $("#aliasInputStatus").remove();
    $("#inputSubmit").attr('disabled', false);
    $("#aliasInput").after("<span id='aliasInputStatus' style='color: #a55; font-weight: bold;'>" + translations.aliasEmpty + "</span>");
    return;
  }
  if (cAlias.length > 0 && cAlias == a) {
    $("#aliasInputStatus").remove();
    return;
  }
  cAlias = a;
  $("#aliasInput").after("<span id='aliasInputStatus'>" + translations.loading + "</span>");
  jsonRequest('/pub/doCategoryAjaxStuff.php?action=checkUniqueAlias&alias=' + a, function(d){
    $("#inputSubmit").attr('disabled', false);
    $("#aliasInputStatus").remove();
    if (d.ok == true){
      $("#aliasInput").after("<span id='aliasInputStatus' style='color: #5a5; font-weight: bold;'>" + translations.aliasFree + "</span>");
      $("#inputSubmit").attr('disabled', false);
    }
    else {
      $("#aliasInput").after("<span id='aliasInputStatus' style='color: #a55; font-weight: bold;'>" + translations.aliasOccupied + "</span>");
      $("#inputSubmit").attr('disabled', true);
    }
  }); 
}    

function jsonRequest(url, callBack) {
  $.getJSON(
      url,
      function(d) {
        callBack(d);
      }
  );
}

function serialize(_obj) {
   // Let Gecko browsers do this the easy way
   if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')
   {
      return _obj.toSource();
   }

   // Other browsers must do it the hard way
   switch (typeof _obj)
   {
      // numbers, booleans, and functions are trivial:
      // just return the object itself since its default .toString()
      // gives us exactly what we want
      case 'number':
      case 'boolean':
      case 'function':
         return _obj;
         break;

      // for JSON format, strings need to be wrapped in quotes
      case 'string':
         return '\'' + _obj + '\'';
         break;

      case 'object':
         var str;
         if (_obj.constructor === Array || typeof _obj.callee !== 'undefined')
         {
            str = '[';
            var i, len = _obj.length;
            for (i = 0; i < len-1; i++) { str += serialize(_obj[i]) + ','; }
            str += serialize(_obj[i]) + ']';
         } else {
            str = '{';
            var key;
            for (key in _obj) { str += key + ':' + serialize(_obj[key]) + ','; }
            str = str.replace(/\,$/, '') + '}';
         }
         return str;
         break;

      default:
         return 'UNKNOWN';
         break;
   }
}


function dumpObject(obj) {
//  return false;
  if (typeof obj == 'object') {
    function dumpRecursive(o, s, i) {
      if (i > 20) return 'RECURSION';
      if (typeof o != 'object') return '';
      var r = "{\n";
      for (i in o) {
        r += s + "  " + i + ": ";
        if (typeof o[i] == 'object')
          r += dumpRecursive(o[i], s + "    ", i+1);
        else
          r += o[i] + "\n";
      }
      r += s + "}\n";
      return r;
    }
    return "OBJECT " + dumpRecursive(obj, "", 0);
  }
  else {
    return "Not an object!";
  }
}


function isHex(str) {
  return str.match(/^#?[a-f0-9]{6}$/i) == null ? false : true;
}

function getHexFromRGB(color) {
  if (isHex(color)) return color;
  var c = {};
  if (typeof color == 'array' && color.length == 3) {
    c[1] = color[0];
    c[2] = color[1];
    c[3] = color[2];
  }
  else if (color.match(/rgb\(([0-9]{1,3}\W*,\W*){2}[0-9]{1,3}\W*\)/i)) {
    var co = color.replace(/rgb\(([^\)]+)\)/, '$1');
    co = co.split(',');
    var i = 1;
    for (c_ in co) {
      c[i++] = co[c_];
    }
  }
  else
    c = {1:'0', 2:'0', 3:'0'};
  var hex = '';
  for (i in c) {
    hex += getHexFromDec(c[i]);
  }
  return hex;
}

function getHexFromDec(n) {
  var digit = new Array ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
  var n1 = Math.floor(n / 16);
  var n2 = n - n1 * 16;
  var r = digit[n1];
  r += digit[n2];
  return r;
}

function inArray (obj, arr) {
  return indexOf(arr, obj) >= 0;
}

function addslashes(str) {
  str=str.replace(/\'/g,'\\\'');
  //str=str.replace(/\"/g,'\\"');
  str=str.replace(/\\/g,'\\\\');
  str=str.replace(/\0/g,'\\0');
  return str;
}

function stripslashes(str) {
  str=str.replace(/\\'/g,'\'');
  //str=str.replace(/\\"/g,'"');
  str=str.replace(/\\\\/g,'\\');
  str=str.replace(/\\0/g,'\0');
  return str;
}

function htmlspecialchars(str) {
 if (typeof(str) == "string") {
  str = str.replace(/&/g, "&amp;"); /* must do &amp; first */
  str = str.replace(/"/g, "&quot;");
  str = str.replace(/'/g, "&#039;");
  str = str.replace(/</g, "&lt;");
  str = str.replace(/>/g, "&gt;");
  }
 return str;
}

function rhtmlspecialchars(str) {
 if (typeof(str) == "string") {
  str = str.replace(/&gt;/ig, ">");
  str = str.replace(/&lt;/ig, "<");
  str = str.replace(/&#039;/g, "'");
  str = str.replace(/&quot;/ig, '"');
  str = str.replace(/&amp;/ig, '&'); /* must do &amp; last */
  }
 return str;
}


