/**
 * Onload functions
 */

dojo.addOnLoad(function(){
  var partnerCode = window.location.search;
  dojo.query("a.pcLink").forEach(function(node){dojo.attr(node, "href",  node.href+partnerCode)});
});



/**
 * Event handlers for recommendation bar effects
 */
function initRecommendWindow()
{
  var fadeOut = function(e)
  {
    var anim = dojo.fadeOut({node: 'recommend_win_container'});
    dojo.connect(anim, 'onEnd', function(){dojo.addClass('recommend_win_container', 'off');});
    anim.play();
  }

  var fadeIn = function(e)
  {
    dojo.stopEvent(e);
    dojo.removeClass('recommend_win_container', 'off');
    var anim = dojo.fadeIn({node: 'recommend_win_container'});
    anim.play();
  }

  if (dojo.byId('recommend_win_container')) {
    dojo.style('recommend_win_container', 'opacity', 0);
    dojo.addClass('recommend_win_container', 'off');
    dojo.removeClass('recommend_win_container', 'jsdisabled_class');
    if (dojo.byId('recommend_link')) {
      dojo.connect(dojo.byId('recommend_link'), 'onclick', function(e){
        if (dojo.hasClass('recommend_win_container', 'off')) {
          fadeIn(e);
        } else {
          fadeOut(e);
        }
      });
    }

    if (dojo.byId('recommend_win_container')) {
      dojo.connect(dojo.byId('close_recommend_window'), 'onclick', fadeOut);
    }
  }
}

dojo.addOnLoad(initRecommendWindow);

var showHideContainerData = {};

/**
 * 
 * @param containerId
 * @return
 */
function showHideContainer(containerId, useEffect)
{
  if (!dojo.byId(containerId)) {
    return;
  }

  var bIsHidden = dojo.hasClass(containerId, 'off');
  if (!bIsHidden) {
    dojo.style(containerId, {'overflow': 'hidden'});
    var coords = dojo.coords(containerId);
    showHideContainerData[dojo.byId(containerId).id] = parseInt(coords.h, 10);
  }

  if (!showHideContainerData[dojo.byId(containerId).id]) {
    useEffect = false;
  }
  
  var showLinkNode = dojo.byId(containerId + '_show_link');
  var hideLinkNode = dojo.byId(containerId + '_hide_link');

  if (useEffect) {
    if (bIsHidden) {
      dojo.style(containerId, {'height': 0, 'overflow': 'hidden'});
      dojo.removeClass(containerId, 'off');
      var anim = dojo.animateProperty({'node' : dojo.byId(containerId), properties: {
        'height': {end: showHideContainerData[dojo.byId(containerId).id], unit: 'px'}
      }});
      dojo.connect(anim, "onEnd", function(){
        if (showLinkNode && hideLinkNode) {
          dojo.addClass(showLinkNode, 'off');
          dojo.removeClass(hideLinkNode, 'off');
        }
        dojo.style(containerId, {overflow: 'none'});
      });
    } else {
      dojo.style(containerId, {'overflow': 'hidden'});
      var anim = dojo.animateProperty({'node' : dojo.byId(containerId), properties: {
        'height': {end: 0, unit: 'px'}
      }});
      dojo.connect(anim, "onEnd", function(){
        dojo.addClass(containerId, 'off');
        dojo.style(containerId, {overflow: 'none'});
        if (showLinkNode && hideLinkNode) {
          dojo.removeClass(showLinkNode, 'off');
          dojo.addClass(hideLinkNode, 'off');
        }
      });
    }
    anim.play();
  } else {
    // if is hidden
    if (bIsHidden) {
      dojo.removeClass(containerId, 'off');
      if (showLinkNode && hideLinkNode) {
        dojo.addClass(showLinkNode, 'off');
        dojo.removeClass(hideLinkNode, 'off');
      }
    } else {
      dojo.addClass(containerId, 'off');
      if (showLinkNode && hideLinkNode) {
        dojo.removeClass(showLinkNode, 'off');
        dojo.addClass(hideLinkNode, 'off');
      }
    }
  }
}

/**
 * Function for decrypting emails
 */

function decryptCharcode(n,start,end,offset){
  n = n + offset;
  if(offset>0&&n>end){
    n = start + (n - end - 1);
  } else if(offset<0&&n<start){
    n = end - (start - n - 1);
  }
  return String.fromCharCode(n);
}

function decryptString(enc,offset){
  var dec = "";
  var len = enc.length;
  for(var i=0;i<len;i++){
    var n = enc.charCodeAt(i);
    if(n>=0x2B&&n<=0x3A){
      dec += decryptCharcode(n,0x2B,0x3A,offset);
    } else if(n>=0x40&&n<=0x5A){
      dec += decryptCharcode(n,0x40,0x5A,offset);
    } else if(n>=0x61&&n<=0x7A){
      dec += decryptCharcode(n,0x61,0x7A,offset);
    }else{
      dec += enc.charAt(i);
    }
  }
  return dec;
}

function linkTo_UnCryptMailto(s){
  location.href = decryptString(s, -2);
}