// if other pages trying to iframe me
if (typeof allowInIframe == 'undefined' && top.length != self.length) {top.location.href = self.location.href;}

// page globals
var host = top.location.host.replace(/^.*\.([0-9a-z]+\.[0-9a-z]+)$/gi, '$1');
var documentIsLoaded    = false;
var documentHasBodyend  = false;
var bodyendFunctions    = new Array();
var lang                = new Array();
var openWorldHead       = null;
var closeWorldHead      = null;
var openWorldMenu       = null;
var closeWorldMenu      = null;

// like php htmlspecialchars
String.prototype.escapeHtml = function() {
  return this
    .replace(/&/g, "&amp;")
    .replace(/</g, "&lt;")
    .replace(/>/g, "&gt;")
    .replace(/"/g, "&quot;")
    .replace(/'/g, "&#039;");
}
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

// error log
if (!TESTING) {
  window.onerror = function(desc, file, line) {
    log_image = new Image();
    log_image.src="http://site."+host+"/logjserrors.php?error="+escape(desc)+"&file="+escape(file)+"&line="+line;
  }
}

// get single cookie by name
function getCookie(name) {
  splitedCookies  = document.cookie.split("; ");
  arrayCookies    = new Array;
  for(i in splitedCookies) {
    if (typeof splitedCookies[i] == "string") {
      arrayCookies[(splitedCookies[i].split("=")[0])] = splitedCookies[i].split("=")[1];
    }
  }
  if (arrayCookies[name]) {return arrayCookies[name];}
  return '';
}

/*function openrp(komu, mode) {
  mode_get = '';
  if (mode) {mode_get = 'mode='+mode+'&';}
  surx = screen.width/2-265;
  sury = screen.height/2-200;
  $hash= Math.floor(1000000*Math.random());
  window.open(
    'http://chat.'+host+'/rp.php?'+mode_get+'komu='+komu+'&l4='+$user['l4'],
    'rp_'+$user['l4']+'_'+$hash,
    'left='+surx+',top='+sury+',width=493,height=400,buttons=No,scrollbars=Yes,location=No,menubar=No,resizable=No,status=Yes,directories=No,toolbar=No,copyhistory=No'
  );
}*/

/*function sklonuj(cis, jeden, dva, pet) {
  if (cis==1) {
    return jeden;
  } else if (cis>1 && cis<5) {
    return dva;
  } else {
    return pet;
  }
}*/

// for adding multiple window.onload
function addLoadEvent(func) {

  // if already loaded, lets do this
  if (documentIsLoaded) {return func();}
  
  // actual onload event
  var oldonload = window.onload;
  
  // if it is first onload event
  if (typeof window.onload != 'function') {
    window.onload = func;
    
  // or it will be added
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(function () {
  // for onloader to know, if document is loaded
  documentIsLoaded = true;
});

// functions to call at end of body
function addBodyendEvent(func) {
  if (documentHasBodyend) {
    func();
  } else {
    bodyendFunctions[bodyendFunctions.length] = func;
  }
}
function callBodyendFunctions() {
  documentHasBodyend = true;
  for(var i in bodyendFunctions) {
    bodyendFunctions[i]();
  }
}

addBodyendEvent(function() {

  // left buttons
  $('#fb_like_box .bookmark').click(function () {
    if ($('#fb_like_box').hasClass('closed') && $('#fb_like_box > div').html() == '') {
      $('#fb_like_box > div').html('<iframe src="http://www.facebook.com/plugins/likebox.php?href='+encodeURIComponent(fanPageUrl)+'&amp;width=292&amp;colorscheme=light&amp;show_faces=true&amp;border_color&amp;stream=true&amp;header=true&amp;height=590" scrolling="no" frameborder="0"></iframe>');
    }
    return false;
  });
  function closeAllLeftButtons() {
    $('#left-buttons div.button').addClass('closed');
    $('#left-buttons div.button').css('left', '-296px');
  }
  $('#left-buttons a.bookmark').click(function () {
    if ($(this).closest('div').hasClass('closed')) {
      closeAllLeftButtons();
      $(this).closest('div').removeClass('closed');
      $(this).closest('div').animate({left: '0px'}, 400);
    } else {
      $(this).closest('div').animate({left: '-296px'}, 400, closeAllLeftButtons);
    }
    return false;
  });
  
  // login form texts
  backgroundText('#login_mail');
  
  // user photo click
  $('#header .username img').click(function(e) {
    top.location.href = $(this).closest('a').attr('href').replace('profil.php', 'profil.php?sec=12');
    e.preventDefault();
  });
  
  // language selection
  function openCloseWorldwide(param) {
    if ($('#world').hasClass('working')) {return false;}
    var timing = 350;
    if ($('#world').hasClass('open') && (typeof param=='undefined' || param=='close')) {
      $('#world a.worldHead').animate(closeWorldHead, timing, function() {$('#world').removeClass('working');$('#world').removeClass('open');});
      $('#world div').animate(closeWorldMenu, timing);
      $('#world').addClass('working');
    } else if(!$('#world').hasClass('open') && (typeof param=='undefined' || param=='open')) {
      $('#world a.worldHead').animate(openWorldHead,  timing, function() {$('#world').removeClass('working');$('#world').addClass   ('open');});
      $('#world div').animate(openWorldMenu, timing);
      $('#world').addClass('working');
    }
    return false;
  }
  $('#world a.worldHead').click(function () {return openCloseWorldwide();});
  $('#world').mouseenter(function () {clearTimeout(worldWideTimer);worldWideTimer = setTimeout(function () {openCloseWorldwide('open' );}, 300);return false;});
  $('#world').mouseleave(function () {clearTimeout(worldWideTimer);worldWideTimer = setTimeout(function () {openCloseWorldwide('close');}, 300);return false;});
  $('#world div').css('visibility', 'hidden');
  $('#world div').css('display', 'block');
  openWorldHead = {width:$('#world a.worldHead').css('width'), paddingRight:$('#world a.worldHead').css('padding-right')};
  closeWorldHead= {width:'0px', paddingRight:'0px'};
  openWorldMenu = {width:$('#world a.worldHead').prop('offsetWidth'), opacity:1, height:$('#world div').css('height')};
  closeWorldMenu= {width:$('#world a.worldHead').css('padding-left'), opacity:0, height:'0px'};
  $('#world div').css(closeWorldMenu);
  $('#world div').css('visibility', 'visible');
  $('#world a.worldHead').css(closeWorldHead);
  $('#world a.worldHead').css('opacity', 0);
  $('#world a.worldHead').css('visibility', 'visible');
  $('#world a.worldHead').animate({opacity:1}, 500);
});
var worldWideTimer = null;

// like php epty
function empty(variable) {
  return typeof variable == 'undefined' || variable === '' || variable === 0 || variable === null || variable === false;
}
// like php array_keys
function array_keys(array) {
  var keys = new Array();
  for (key in array) {
    keys.push(key);
  }
  return keys;
}
// if needle exist case insensitive in haystack returns orignal cased key, otherwise false
function array_keyExistsCI(needle, haystack) {
  if (typeof needle == 'undefined') {return false;}
  needle = needle.toLowerCase();
  for(key in haystack) {
    if (key.toLowerCase() === needle) {return key;}
  }
  return false;
}

// functions for using background text in inputs (for #e elements is required blurtext attribute)
function backgroundText(e) {
  var obj = $(e);
  inputTextBlur({target:obj});
  obj.focus(inputTextFocus);
  obj.blur (inputTextBlur);
  obj.keydown(inputTextFocus);// fix if is focused and have blur class
  obj.closest('form').submit(function () {
    return obj.val()!='' && obj.val()!=obj.attr('blurtext');
  });
}
function inputTextBlur(e) {
  var obj = $(e.target);
  if (obj.val()=='' || obj.val()==obj.attr('blurtext')) {
    obj.addClass('blured');
    obj.val(obj.attr('blurtext'));
  }
}
function inputTextFocus(e) {
  var obj = $(e.target);
  obj.removeClass('blured');
  if (obj.val()==obj.attr('blurtext')) {
    obj.val('');
  }
}


/**
 * RATING functions
 **/
function getRatingName(rating) {
  var cnt = ratings.length;
  for(i=0;i<cnt;i++) {
    if (rating<ratings[i][0]) {return ratings[i][1];}
  }
  return ratings[cnt-1][1];
}

function submitVote(vote, ratingId) {
  $('#yourRating'+ratingId).html('<i>'+lang['design_rating_voting']+':</i>&nbsp;');
  $.ajax({
    url:voteSubmitUrl,
    data:{vote:vote, ratingId:ratingId},
    success:function (xml) {
      $('#yourRating'+ratingId).html(lang['design_rating_voted']+':&nbsp;');
      var percent   = $("percent",    xml).text();
      var ratingText= getRatingName(percent);
      var votes     = $("votes",      xml).text();
      var votesText = $("votesText",  xml).text();
      var userRating= userRatingTemplate.
        replace("__ratingText__", ratingText).
        replace("__percent__",    percent).
        replace("__votes__",      votes).
        replace("__votesText__",  votesText);
      $("#userRating"+ratingId).html(userRating);
      if (typeof goNext == "function") {
        goNext();
      }
    }
  });
}

function showTooltipRating(ratingId, rating) {
  ratingText = getRatingName(rating);
  $("#ratingTooltip"+ratingId+" h2").html(rating+"%");
  $("#ratingTooltip"+ratingId+" p").html(ratingText);
  tooltipCursor = rating+20;
  if (tooltipCursor<23) {tooltipCursor = 23;}
  if (tooltipCursor>116) {tooltipCursor = 116;}
  $("#ratingTooltip"+ratingId+" div").css("width", tooltipCursor+"px");
}

function registerNewRating(ratingId) {

  $("#starRating"+ratingId).mouseenter(function(event) {
    $("#ratingTooltip"+ratingId).css("opacity", "0");
    $("#ratingTooltip"+ratingId).css("bottom", "28");
    $("#ratingTooltip"+ratingId).css("height", "25");
    $("#ratingTooltip"+ratingId).css("display", "block");
    $("#ratingTooltip"+ratingId).animate({
      opacity: 1,
      height: 55,
      bottom: 58
    }, 200);
  });

  $("#starRating"+ratingId).mousemove(function(event) {
    var offset = $(this).offset();
    var relativeX = Math.round(event.pageX - offset.left);
    if (relativeX<1  ) {relativeX = 1;}
    if (relativeX>100) {relativeX = 100;}
    $(this).find("div").css("width", relativeX+"px");
    showTooltipRating(ratingId, relativeX);
  });

  $("#starRating"+ratingId).mouseleave(function(event) {
    $(this).find("div").css("width", $("#starRating"+ratingId).attr("baseRating"));
    $("#ratingTooltip"+ratingId).fadeOut(200);
  });

  $("#starRating"+ratingId).click(function(event) {
    var offset = $(this).offset();
    var relativeX = Math.round(event.pageX - offset.left);
    $(this).find("div").css("width", relativeX+"px");
    $(this).attr("baseRating", relativeX+"px");
    submitVote(relativeX, ratingId);
  });
}

// drop down left menu
var dropDownMenuMouseIn             = new Array();
var dropDownMenuAnimationIsRunning  = new Array();
var dropDownMenuHeight              = new Array();
var dropDownMenuDisplayed           = new Array();

function dropDownMenuCallback(id, displayed) {
  dropDownMenuDisplayed[id] = displayed;
  //console.log("displayed:" + (displayed?"true":"false") + "; mouseIn:" + (dropDownMenuMouseIn[id]?"true":"false"));
  dropDownMenuAnimationIsRunning[id] = false;
  if (displayed && !dropDownMenuMouseIn[id]) {
    //console.log("zobrazene, ale mys je mimo (po show)");
    hideDropDownMenu(id);
  }
  if (!displayed && dropDownMenuMouseIn[id]) {
    //console.log("skryte, ale mys je dnu (po hide)");
    showDropDownMenu(id);
  }
}

function showDropDownMenu(id) {
  if (dropDownMenuMouseIn[id] && !dropDownMenuDisplayed[id] && !dropDownMenuAnimationIsRunning[id]) {
    $("#"+id+"Links").css("height", "0px");
    $("#"+id+"Links").css("opacity", 0.3);
    //console.log("nova show polozka v kju");
    dropDownMenuAnimationIsRunning[id] = true;
    $("#"+id+"Links").css('display', 'block');
    $("#"+id+"Links").animate({
        height: dropDownMenuHeight[id],
        opacity: 1
      }, 500, function() {
        dropDownMenuCallback(id, true);
      }
    );
  }
}

function hideDropDownMenu(id) {
  if (!dropDownMenuMouseIn[id] && dropDownMenuDisplayed[id] && !dropDownMenuAnimationIsRunning[id]) {
    //console.log("nova hide polozka v kju");
    dropDownMenuAnimationIsRunning[id] = true;
    $("#"+id+"Links").animate({
        height: "0px",
        opacity: 0.3
      }, 500, function() {
        $("#"+id+"Links").css("display", "none");
        dropDownMenuCallback(id, false);
      }
    );
  }
}

function registerDropDownMenu(id) {
  dropDownMenuMouseIn[id]             = false;
  dropDownMenuAnimationIsRunning[id]  = false;
  dropDownMenuHeight[id]              = $("#"+id+"Links").height();
  dropDownMenuDisplayed[id]           = false;

  $("#"+id+"Anchor").mouseenter(function(event) {
    dropDownMenuMouseIn[id] = true;
    //console.log("mouseenter:nova show polozka v kju bude");
    setTimeout("showDropDownMenu('"+id+"');", 500);
  });

  $("#"+id+"Anchor").mouseleave(function(event) {
    dropDownMenuMouseIn[id] = false;
    //console.log("mouseleave:nova hide polozka v kju bude");
    setTimeout("hideDropDownMenu('"+id+"');", 500);
  });
}
