var welcomeImage = 0;
var welcomeTimeout = 12000;

$(document).ready( function () {

  // Welcome image changer
  setWelcomeimages();
  if ($('#welcome').size() && welcomeImages.length) setTimeout(changeWelcomeImage, welcomeTimeout);
  
  // Orion Diagnostica -logo
  $('h1.bg-replaced').html('');
  
  // Orion Websites -button/menu
  var sites = false;
  var sitesTimeout = '';
  
  var sitesArrow = $('#sitesButton img');
  var sitesArrowOff = '/files/oriondiagnostica/images/productgroup-arrow.png';
  var sitesArrowOn = '/files/oriondiagnostica/images/productgroup-arrow-down.png';
  
  $('a#sitesButton').click( function () {
    if (!sites) {
      $(sitesArrow).attr("src", sitesArrowOn);
      $('div#sites').slideDown("slow");
      sites = true;
    } else {
      clearTimeout(sitesTimeout); 
      $(sitesArrow).attr("src", sitesArrowOff);
      $('div#sites').slideUp("slow");
      sites = false;
    }
  });
  $('div#sites').hover( 
    function () { clearTimeout(sitesTimeout); },
    function () {
      clearTimeout(sitesTimeout); 
      sitesTimeout = setTimeout(function () { 
        $(sitesArrow).attr("src", sitesArrowOff);
        $('div#sites').slideUp("slow");
        sites = false;
      }, 
      2000); 
    }
  );

  // Navi images
  $('#head-navi a').not('.selected').hoverImages();
  
  // Set font size
  if ($.cookie('oriondiagnostica_font-size')) { 
    $('#container').css('font-size', $.cookie('oriondiagnostica_font-size')); 
  }
  
  // Replace site-tree dashes with images
  $('p.site-tree').each(function() {
    $(this).html($(this).html().replace(/ - /g, ' <img src="/files/oriondiagnostica/images/site-tree-divider.gif" alt="" /> '));
  });
  
  // Add H1 corners
  $('.info > h1').append('<img src="/files/oriondiagnostica/images/info-h1-ur-corner.gif" alt="" />');
  
  // IE fixes
  if($.browser.msie) { 
    $('.info > h1 img').css('top', '4px'); 
  }
  
  // Product sections
  $('#product-sections').product_sections();
  
  // Guidelabels
  $('#product-page-search input:first').add('#frontpage-search-input').guideLabel();
  
  // Print button
  $("a#print").click( function () {
    window.print();
    // Print layout preview
    //$("#printCSS").attr("media", "all");
    //setTimeout(function (){ $("#printCSS").attr("media", "print")}, 3000);
    //$("#logo").click( function () { $("#printCSS").attr("media", "print") }); 
    return false;
  });
  
  // Tables odd/even rows
  $('table tr:even').addClass('nth-child-even');
  $('table tr:odd').addClass('nth-child-odd');
    
  // Sitemap 
  $("#sitemap").siteMap();
  
  // ROT13 emails
  rot13_mails();
  
});  


// Create img-tags for welcome-images, set first image randomly
function setWelcomeimages (num) {
  var welcome = $('#welcome');
  $.each(welcomeImages, function (num, image) {
    $(welcome).append('<img src="'+ image +'" alt="'+ num +'" />');
  });
/*  welcomeImage = Math.floor(Math.random() * welcomeImages.length); */
	welcomeImage = 0;
  $(welcome).find("img[@alt="+ welcomeImage +"]").show();
}


// Changes welcome image
function changeWelcomeImage () {
  var welcome = $('#welcome');
  
  var prev = welcomeImage;
  var next = welcomeImage + 1;
  if (next == welcomeImages.length) next = 0;
  welcomeImage = next;
 
  var oldImg = $(welcome).find("img[@alt="+ prev +"]");
  var newImg = $(welcome).find("img[@alt="+ next +"]");
  
  $(newImg).css({"opacity": 0.10, "z-index": 1}).show();
  $(oldImg).animate({ opacity: 0 }, 750, '', function () {
    $(newImg).animate({ opacity: 1 }, 750).css({"z-index": 2});
    $(oldImg).hide();
  });
  
  setTimeout(changeWelcomeImage, welcomeTimeout);
}


// Sitemap
jQuery.fn.siteMap = function () {

  // Style-classes
  var openClass = 'open';
  var lastClass = 'last';
  var closeClass = 'close';
  
  // Hide all > 2. level links
  $(this).find("div div").hide();
   
  // Wrap into P, add SPAN for image
  $(this).find("a").each( function () { $(this).wrap('<p></p>').before('<span></span>'); });
  
  // Images
  $(this).find("span")
    .css({"opacity": 0.5})
    
    .hover( 
      function () { $(this).css({"opacity": 1.0}) },
      function () { $(this).css({"opacity": 0.5}) }
    )
    
    .each( function () {
      // Product groups show empty DIV, check with children()
      if ($(this).parent("p").next("div").children().size())
        $(this).addClass(openClass);
      else
        $(this).addClass(lastClass);
    })
    
    .click( function () {
      if ($(this).is("."+ openClass)) {
        $(this).removeClass(openClass).addClass(closeClass);
        $(this).parent().next("div").slideDown("fast");
      }
      else if ($(this).is("."+ closeClass)) {
        $(this).removeClass(closeClass).addClass(openClass);
        $(this).parent().next("div").slideUp("fast");
      }
    });
    
  // Show 2. level trees
  $(this).find("> div > p > span").trigger("click");
    
};


// Hover-images for navigation
jQuery.fn.hoverImages = function() {
  this.hover(function() {
    $(this).find('img').each(function() {
      this.src = this.src.replace('_off', '_on');
    });
    $(this).addClass('hover');
  }, function() {
    $(this).find('img').each(function() {
      this.src = this.src.replace('_on', '_off');
    });
    $(this).removeClass('hover');
  });
}


// Guide-labels inside inputs
jQuery.fn.guideLabel = function() {
  this.each(function() {
    $(this).attr('default_value', $(this).attr('value'));
    
    $(this).click(function() {
      if(this.value == $(this).attr('default_value')) {
        this.value = '';
      }
    }).blur(function() {
      if(this.value == '') {
        this.value = $(this).attr('default_value');
      }
    });
  });
}


// Text size modify on-the-fly
function text_size(change) {
  new_size = (parseInt($('#container').css('font-size'))+change);
  if(new_size < 11) {
    new_size = 11;
  }
  else if(new_size > 14) {
    new_size = 14;
  }
  $('#container').css('font-size', new_size+'px');
  $.cookie('oriondiagnostica_font-size', new_size+'px')
}


// Product finder - Product groups resolving by using asynchronous XML
function product_finder_subsearch(parent_select, level) {

  // Use <body>'s ID as cm_lang
  var cm_lang = $("body").attr("id");

  parent_value = parent_select.value;
  
  if (parent_value == 0) {
    return(false);
  }
  
  $.get('/product_finder_groups_xml?cm_lang='+ cm_lang +'&parent='+parent_value, function(response) {
  
    var selectText = '';
    var pageUrl = '';
    if (cm_lang == 'en_GB') {
      selectText = 'Select '+ (level + 1) +'. product group';
      pageUrl = '/product-groups';
    }
    if (cm_lang == 'fi_FI') {
      selectText = 'Valitse '+ (level + 1) +'. tuoteryhmä';
      pageUrl = '/tuoteryhmat';
    }
    if (cm_lang == 'da_DK') {
      selectText = 'Välg '+ (level + 1) +'. produktgruppe';
      pageUrl = '/produktgrupper';
    }
    if (cm_lang == 'nn_NO') {
      selectText = 'Velg '+ (level + 1) +'. produktgruppe';
      pageUrl = '/produktgrupper_no';
    }
    if (cm_lang == 'sv_SE') {
      selectText = 'Välj '+ (level + 1) +'. produktgrupp';
      pageUrl = '/produktgrupper_se';
    }
    if (cm_lang == 'cs_CZ') {
      selectText = 'Vybrat '+ (level + 1) +'. skupinu produktů';
      pageUrl = '/skupiny-produktu';
    }
    if (cm_lang == 'hu_HU') {
      selectText = (level + 1) + '. termékcsoport kiválasztása';
      pageUrl = '/termekcsoportok';
    }
    if (cm_lang == 'sk_SK') {
      selectText = 'Zobraziť všetko '+ (level + 1) +'. skupiny produktov';
      pageUrl = '/product-groups-sk';
    }
    if (cm_lang == 'pl_PL') {
      selectText = 'Wybierz '+ (level + 1) +'. product group';
      pageUrl = '/product-groups-pl';
    }
    
    new_select =  '<select style="display: none;" onchange="product_finder_subsearch(this, '+(level+1)+');">';
    new_select += '<option value="0" disabled selected>'+ selectText +'</option><option value="0" disabled>---------------</option>';
    
    $('group', response).each(function() {
      new_select += '<option value="'+$(this).attr('id')+'">'+$(this).text()+'</option>';
    });
    
    new_select += '</select>';
    
    if($('group', response).size() > 0) {
      // Destroy old selects
      $(parent_select).parent().find('select:gt('+(level-1)+')').remove();
      $(parent_select).after(new_select).next().fadeIn('slow');
      $('#product-finder-show').css('opacity', '0.33');
    }
    else {
      $('#product-finder-show').css('opacity', '1').attr('href', pageUrl +'?group='+ parent_value);
    }
  });
}


// Product information sections by using asynchronous xHTML
$.fn.product_sections = function() {

  // Use <body>'s ID as cm_lang
  var cm_lang = $("body").attr("id");

  product_code = $(this).find('#product-code').attr('value');
  $(this).find('a').click(function() {
    $(this).addClass('selected').siblings('a').removeClass('selected');
    
    sectionName = $(this).text();
    sectionId = $(this).attr("id");
    
    $('.product-left p.ajax-loader').show();
    
    $.get('/product-info-ajax?cm_lang='+ cm_lang +'&product='+ product_code +'&section='+ sectionId, function(response) {
      $('#product-info-ajax').html('<h2>'+ sectionName +'</h2><div class="inner">'+ response +'</div>');
      $('.product-left p.ajax-loader').fadeOut('slow');
    });
    this.blur();
    return(false);
  })
  $(this).find('a.selected:first').trigger("click");
}



// ROT13 Obfuscation
 
var rot13map = '';
 
function rot13init () {
  var map = new Array();
  var s = "abcdefghijklmnopqrstuvwxyz";
  for (i = 0; i < s.length; i++)
    map[ s.charAt(i) ] = s.charAt((i + 13) % 26);
  for (i = 0; i < s.length; i++)
    map[ s.charAt(i).toUpperCase() ] = s.charAt((i + 13) % 26).toUpperCase();
  return map;
}
 
 
function rot13 (a) {
  if (!rot13map)
    rot13map = rot13init();
  var s = ''
  for (i = 0; i < a.length; i++) {
    var b = a.charAt(i);
    s += (b >= 'A' && b <= 'Z' || b >= 'a' && b <= 'z' ? rot13map[b] : b);
  }
  return s;
}
 
 
function rot13_mails () {
  $('a.rot13').removeClass('rot13').each(function() {
    var new_mail = rot13($(this).attr('href').replace('mailto:', ''));
    $(this).attr('href', 'mailto:'+ new_mail).text(new_mail);
  });
}
