/* Set image url depending on environment
------------------------------------------------------------*/
var img_url;
if (window.location.host.indexOf('.dev') > 0) {
    img_url = '/img';
} else {
    img_url = '/vendor/client_btoken/img';
}


/* Cufon
------------------------------------------------------------*/
//Cufon.replace('.century-gothic, .team_member_name .name', { fontFamily:'century-gothic', hover:true});
//Cufon.replace('.century-gothic-bold, #navigation li, #language li, #sub_navigation li, .button, thead th, thead td, .sizes, .team_member .function, h2,.scrollable .title', { fontFamily:'century-gothic-bold', hover:true});
//Cufon.replace('.century-gothic-bold-shadow', { fontFamily:'century-gothic-bold', textShadow: '#999 1px 1px' });

window.onload = function(){
  /* Masonry
  ------------------------------------------------------------*/
  try { masonrify(); }          catch(e) { /*console.log(e);*/ }
}

$(document).ready(function() {
  
  /* Add class to body so we know javascript is enabled
  ------------------------------------------------------------*/
  $('body').addClass('js');
  
  
  /* Local scroll
  ------------------------------------------------------------*/
  $.localScroll();
  
  
  /* Navigation
  ------------------------------------------------------------*/
  $("#language, #navigation").handleLanguageItems();
  $("a[rel='t_blank']").tBlank();
  $(".button").buttonify();
  
  
  /* Slideshows
  ------------------------------------------------------------*/
  try { slideshows(); }         catch(e) { /*console.log(e)*/ }
  
  
  /* Coins
  ------------------------------------------------------------*/
  try { coinsColors(); }        catch(e) { /*console.log(e);*/ }
  try { coinsSizes(); }         catch(e) { /*console.log(e);*/ }
  try { coinsScrollable(); }    catch(e) { /*console.log(e);*/ }
  
  
  /* Newsletter
  ------------------------------------------------------------*/
  try { newsletter(); }        catch(e) { /*console.log(e);*/ }
  
  
  /* The map
  ------------------------------------------------------------*/
  if($("#map").length>0){
    var latlng = new google.maps.LatLng(51.273244, 5.078140);
    
    var myOptions = {
      zoom: 12, 
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      scaleControl: true,
      mapTypeControl: true,
      mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
    };
    var map = new google.maps.Map(document.getElementById("map"), myOptions);
    var marker = new google.maps.Marker({
      position: latlng, 
      map: map,
      title:"B-Token"
    });
  }
  
  
  /* Contact form
  ------------------------------------------------------------*/
  if($('#contact_form').length>0){
    $("#contact_form").validate({
        rules: {
          "contact[name]": "required",
          "contact[body]": "required",
          "contact[email]": {
            required: true,
            email: true
          }
        },
        messages: {
          "contact[name]": {
            required: ""            
          },
          "contact[body]": {
            required: ""            
          },
          "contact[email]": {
            required: "",
            email: ""            
          }
        }
      });
    
  }
  
  /* Stylish stuff
  ------------------------------------------------------------*/
  $('table').zebrafy();
  
  
  /* Gallery box (http://fancybox.net)
  ------------------------------------------------------------*/
  try { $('.gallery .album a').fancybox(); } catch(e) { }
  try { $('.gallery').accordion({ header: 'h2', autoHeight: false }); } catch(e) { console.log(e); }
  
  
  /* Accordionfader (https://github.com/mrhenry/jquery-accordionfader)
  ------------------------------------------------------------*/
  if ($("body.home").length > 0) {
    $(".cta").accordionfader();
  }
  
});


/* Functions
------------------------------------------------------------*/
jQuery.fn.handleLanguageItems = function(){
  $(this).each(function(){
    var min_op = 0.4;
    var max_op = 0.9;
    if($(this).attr("id")=="navigation"){
      min_op = 0.6;
      max_op = 1;
    }
    $(this).find("a").each(function(){
      if(!$(this).parent().hasClass("active")){
        $(this).css("opacity",min_op);
        $(this).hover(
          function(){
            $(this).stop();
            $(this).fadeTo('fast',max_op);
          },
          function(){
            $(this).stop();
            $(this).fadeTo('slow',min_op);
          }
        );
      }
    });
  });
};

jQuery.fn.handleNavItems = function(){
  $(this).find("a").each(function(){
    if(!$(this).parent().hasClass("active")){
      $(this).css("opacity",0.75);
    }
  });
};

jQuery.fn.tBlank = function(){
  $(this).each(function(){
    $(this).attr("target","blank");
  });
};

jQuery.fn.buttonify = function(){
  var original_bg = $(this).css("background-color");
  $(this).hover(
    function(){
        var btn = $(this);
        btn.stop();
        btn.animate({backgroundColor:'#31c589'},100);
    },
    function(){
      var btn = $(this);
      btn.stop();
      btn.animate({backgroundColor:original_bg},300);
    }
  );
};

function addLoader(container){
    if (container == undefined){
        return false;
    } else {
        $('<p class="loader"></p>').insertBefore(container.find('form'));
        return true;
    }
}

function removeLoader(container){
    if (container == undefined){
        return false;
    } else {
        container.find('.loader').remove();
        return true;
    }
}

function coinsColors(){
  var colors            = $('.colors li');
  var colors_length     = $('.colors').children().size();
  var title_bg          = 'bg-colors-title';
  var title_bg_ext      = '.png';
  var title_bg_count    = 5;
  var title_color       = colors.css('color');
  var coins_min         = 3;
  var coins_max         = 6;
  var coin_width        = 130;
  var coin_height       = 10;
  var coin              = '<div class="coin"><div class="color"></div><div class="overlay"></div></div>';
  var coin_max_offset_x = 10;
  
  var idx = 0;
  
  colors.each(function(){
    var obj             = $(this);
    var css_class       = obj.attr('class');
    var coins           = Math.round(coins_min + (Math.random() * (coins_max - coins_min)));
    var color           = obj.children('.coin').css('backgroundColor');
    var title           = obj.children('.title');
    var title_height    = title.height();
    obj.children('.coin').remove();
    var s_idx = 0;
    for (i = 0; i < coins; i++) {
      var offset_x  = 0;
      if (i > 0) {
        offset_x  = Math.round((0 - coin_max_offset_x) + (Math.random() * coin_max_offset_x));
      }
      obj.append(coin);
      var coin_top = i * coin_height;
      if(idx==0){
        coin_top+=27;
      }
      
      obj.children('.coin:last').css({ 'top' : (coin_top) + 'px', 'left' : (offset_x) }).children('.color').css({ 'backgroundColor' : color });
      if(idx == 0 && s_idx == 0){
        obj.addClass("shadow_top_container");
        obj.prepend("<div class=\"shadow_top\"></div>");
      }
      
      if(idx == colors_length-1 && s_idx == coins-1){
        obj.addClass("shadow_top_container");
        obj.append("<div class=\"shadow_bottom\" style=\"left:"+(offset_x+12)+"px;\"></div>");
      }
      s_idx++;
    }
    var obj_height = coins * coin_height;
    if(idx==0 || idx==colors_length-1){
      obj_height+=27;
    }
    
    obj.css({ 
      'height'            : obj_height + 'px',
      'background-image'  : 'url(' + img_url + '/' + title_bg + '-' + (1 + Math.round(Math.random() * (title_bg_count - 1))) + title_bg_ext + ')'
    });
    title.css({ 'margin-top' : (0 - (title_height/2)) + 'px' });
    idx++;
  });
  
  

  
  colors.hover(
      function(){
          $(this).animate({ 'color' : '#FFFFFF' }, 100);
      },
      function(){
          $(this).animate({ 'color' : title_color }, 200);
      }
  );
  
}

function coinsSizes(){
  var sizes = $('.sizes li');
  var fade_value  = 0.60;
  if (!($.browser.msie)) {
    sizes.css({ 'opacity' : fade_value });
    sizes.hover(
      function(){
        $(this).stop();
        $(this).animate({ 'opacity' : 1 }, 100);
      },
      function(){
        $(this).stop();
        $(this).animate({ 'opacity' : fade_value }, 300);
    });
  }
}

function coinsScrollable(){
    $('.scrollable').scrollable({ size: 7 });
}

function masonrify(){
    if ($('.overview .item').length > 0) {
        $('.overview').masonry({
            itemSelector: '.item'
        });
    }
}

function newsletter(){
    //var newsletter  = $('#newsletter-subscribe');
    //var form        = newsletter.find('form');
    //if (newsletter.length > 0) {
    //    newsletter.find('button[type=submit]').click(function(){
    //        addLoader(newsletter);
    //        form.animate({ 'opacity' : '0.5' });
    //        $.ajax({
    //            url: form.attr('action'),
    //            data: form.serialize(),
    //            type: 'post',
    //            success: function(data){
    //                newsletterHandleResponse(data, newsletter);
    //            }
    //        });
    //        return false;
    //    });
    //}
}

function newsletterHandleResponse(data, container){
    /* 
        data.status:    'ok' or 'error' 
        data.message:   string or array
    */
    var class_error     = '.error';
    var class_success   = '.success';
    var class_notice    = '.notice';
    var form            = container.find('form');
    var wrapper;
    
    removeLoader(container);
    
    if (container.find(class_error + ', ' + class_success + ', ' + class_notice).length > 0) {
        container.find(class_error + ', ' + class_success + ', ' + class_notice).remove();
    }
    
    if (data.status == 'error') {
        wrapper = $('<ul class="' + data.status + '"></ul>');
    } else {
        wrapper = $('<p class="' + data.status + '"></p>');
    }
    wrapper.insertBefore(form).hide();
    
    if (typeof(data.message) == 'object') {
        $.each(data.message, function(key, value){
            wrapper.append('<li>' + value + '</li>');
        });
    } else {
        wrapper.html(data.message);
    }
    wrapper.slideDown('200');
    
    if (data.status == 'error'){
        form.animate({ 'opacity' : '1' });
    } else if (data.status == 'success') {
        form.hide();
    }
}

function slideshows(){
    var slideshow   = $('.slideshow');
    if (slideshow.length > 0) {
        slideshow.css({ 'height':'300px' });
        slideshow.cycle();
    }
}

jQuery.fn.zebrafy = function(){
  $(this).each(function(){
      el = $(this);
      el.find('tr:even').each(function(){
          $(this).addClass('even');
      });
      el.find('tr:odd').each(function(){
          $(this).addClass('odd'); 
      });
  });
};

