/* JavaScript Document */

/* 
Author: Form & Code
Author URI: http://www.formundcode.de/
Version: 0.1

Project:  IMAGO DESIGN
Description: imago.js

------------------------------------------------------

------------------------------------------------------
*/

var showThumbs = true;
var contentLoader = {};
var hasHash = false;
var wrapLoaded = 0;
var smallHeight = 690;
var bigHeight = 880;
$(document).ready(function(){
  
  $('.wrap').addClass('currentWrap');
  $(window).resize(resizeHandler);
  //// Configure Top Navigation
  var cur = $('.navigation').attr('ref');
  var count = 1;
  $('.li'+cur).each(function()
  {
    if($(this).attr('ref') !== cur)
    {
      $('.scrollwrap').append('<div class="wrap" ref="'+$(this).attr('ref')+'">'+$(this).find('a').text()+'</div>');
      $('.wrap[ref=\"'+$(this).attr('ref')+'\"]').css('left', count * (parseInt($(window).width()) + 1500) +'px');
      count++;
    }
  });
  
  ///// generate "impressum" page
  $('.scrollwrap').append('<div class="wrap" ref="'+$('.fli1').attr('ref')+'">'+$('.fli1').find('a').text()+'</div>');
  $('.wrap[ref=\"'+$('.fli1').attr('ref')+'\"]').css('left', count * (parseInt($(window).width()) + 1500) +'px');
  
  
  $('.logo h1').find('a').live('click', function(){
    
    window.location.hash = '';
    var offset = parseFloat($('.wrap').first().css('left')) - parseFloat($('.currentWrap').css('left'));
    $('.currentWrap').removeClass('currentWrap');
    $('.wrap').first().addClass('currentWrap');
    $('.wrap').animate({
      left: '-='+offset
    }, 1200, 'easeInOutQuint');
    return false;
  });
  
  $('.navigation div').find('a').live('click', function(){window.location.hash = $(this).attr('href');return false;});
  
  $('.navigation div').find('a').live('navigate', navigationClickHandler);
  $('.fli1').live('click', function(){window.location.hash = $(this).attr('href');return false;});
  $('.fli1').live('navigate', navigationClickHandler);
  
  $('.wrap').not('.currentWrap').each(function(){
    var id = $(this).attr('ref');
    $.ajax({
      type: "GET",
      url: "/index.php?type=999&id="+id,
      async: true,
      success: function(data) {
        wrapLoaded ++;
        var uid = $(data).find('.navigation').attr('ref');
        var nav = '<div class="navigation">'+$(data).find('.navigation').html()+'</div>';
        var logo = '<div class="logo">'+$('.currentWrap').find('.logo').html()+'</div>';
        var footer = '<div class="footer">'+$('.currentWrap').find('.footer').html()+'</div>';
        var col0 = '<div class="col0">'+$(data).find('.col0').html()+'</div>';
        var col1 = '<div class="col1">'+$(data).find('.col1').html()+'</div>';
        var thumbs = ($(data).find('.gallwrapper').length > 0) ? 'block' : 'none';
        
        var gall = (thumbs == 'block') ? $(data).find('.gallwrapper').html() : '&nbsp;'
        var thumbnail = '<div class="gallwrapper" style="display: '+thumbs+';">'+gall+'</div>'; 
        $('.wrap[ref=\"'+uid+'\"]').html('<div class="left">'+logo+col0+footer+'</div><div class="right">'+nav+col1+thumbnail+'</div><div class="ajaxloader"></div>');
        $('.ajaxloader').ajaxStop(function(){
          $(this).fadeOut();
        });
        $('.ajaxloader').ajaxStart(function(){
          $(this).fadeIn();
        });
        if(wrapLoaded >= $('.wrap').length - 1)
        {
          if(window.location.hash != '')
          {
            var hash = window.location.hash.replace('#', '');
            
            var el = $('.navigation').find('a[href=\"'+hash+'\"]');
          
            if($(el).length > 0) {
              hasHash = true;
              $(el).trigger('navigate');
            }
          }
        }
      },
      error: function(){
        alert('error');
      }
    });
  });
  
  
  $('.thumbnailmenu a').live('click', function(){
    if(!$(this).hasClass('current'))
    {
      $(this).parent().find('.current').removeClass('current');
      $(this).addClass('current');
      loadContentOnly($(this).attr('ref'));
    }
    return false;
  });
  $('.csc-thumb').live('click', function(){
    if(!$(this).hasClass('current'))
    {
      $(this).parent().find('.current').removeClass('current');
      $(this).addClass('current');
      var num = parseFloat($(this).text()) - 1;
      $('.currentWrap').find('.currentImage').fadeOut(function(){
        $('.currentWrap').find('.currentImage').fadeIn();
      }).removeClass('currentImage');
      var next = $('.currentWrap').find('.csc-textpic-imagerow')[num];
      $(next).addClass('currentImage');
    }
    return false;
  });
  
  $('.thirdthumb').live('click', function(){
    if(!$(this).hasClass('current'))
    {
      $(this).parent().find('.current').removeClass('current');
      $(this).addClass('current');
      loadOnlyRight($(this).attr('ref'));
    }
  });
  
  $.History.bind(function(state){
    var el = $('.currentWrap').find('a[href=\"'+state+'\"]');
   console.log(state);
   //_gaq.push(['_trackPageview', state]);​
    _gaq.push(['_trackPageview', '/'+state]);
    $(el).trigger('navigate');
  });
  
  $(window).trigger('resize');
});


function navigationClickHandler(){
  stopThumbScroller();
  if($(this).parent().parent().parent().hasClass('navigation') || $(this).hasClass('fli1') || hasHash)
  {
    
    var ref = ($(this).hasClass('fli1')) ? $(this).attr('ref') : $(this).parent().attr('ref');
    var offset = parseFloat($('.wrap[ref=\"'+ref+'\"]').css('left')) - parseFloat($('.currentWrap').css('left'));
    if(isNaN(offset))
    {
      ref = parseFloat($(this).parent().parent().parent().attr('ref'));
      var offset = parseFloat($('.wrap[ref=\"'+ref+'\"]').css('left')) - parseFloat($('.currentWrap').css('left'));
    }
    
    $('.currentWrap').removeClass('currentWrap');
    $('.wrap[ref=\"'+ref+'\"]').addClass('currentWrap');
    $('.wrap').animate({
      left: '-='+offset
    }, 1200, 'easeInOutQuint');
    hasHash = false;
  }
  
  $('.currentWrap').find('.col0').fadeOut('fast');
  $('.currentWrap').find('.col1').fadeOut('fast');
  $('.currentWrap').find('.thumbnailmenu').fadeOut('fast');
  $('.currentWrap').find('.thumbwrapper').fadeOut('fast');
  $('.currentWrap').find('.scrollbar').fadeOut('fast');
  $('.currentWrap').find('.footer').fadeOut('fast');
  
  if($('.currentWrap').find('.current').parent().parent().parent().hasClass('navigation')){
    $('.currentWrap').find('.current').removeClass('current').addClass('section');
  } else {
    $('.currentWrap').find('.current').removeClass('current');
  }
  var link = $(this).attr('href');
  
  $('.currentWrap').find('.navigation').find('a').each(function(){
    if($(this).attr('href').search(link) > -1){
      $(this).addClass('current');
    }
  });
  
  if($('.currentWrap').find('.current').hasClass('section')) ///// HAS CHILDREN
  {
    $('.currentWrap').find('.current').next().children().first().find('a').trigger('click');
  }
  else
  {
    var id = ($(this).hasClass('fli1')) ? $(this).attr('ref') : $(this).parent().attr('ref');
    window.location.hash = $(this).attr('href');
    contentLoader = $.ajax({
      type: 'GET',
      async: true,
      url: "/index.php?type=999&id="+id,
      success: function(data){
        $('.currentWrap').find('.col0').html($(data).find('.col0').html()).fadeIn('fast');
        $('.currentWrap').find('.col1').html($(data).find('.col1').html()).fadeIn('fast');
        
        if($(data).find('.gallwrapper').length > 0){
          var gall = $(data).find('.gallwrapper').html();
          $('.currentWrap').find('.gallwrapper').html(gall);
          var anz = $('.currentWrap').find('.thumbnailmenu a').length;
          $('.currentWrap').find('.thumbnailmenu').width(anz * (143 + 10));
          $('.currentWrap').find('.gallwrapper').fadeIn('fast');
          $('.currentWrap').find('.thumbnailmenu').children().first().addClass('current');
          loadContentOnly($('.currentWrap').find('.thumbnailmenu').children().first().attr('ref'));
          startThumbScroller();
          setTimeout(function(){
            if(!showThumbs)
            {
              $('.currentWrap').find('.thumbnailmenu').animate({
                  top: '120px'
                }, 600, 'easeOutQuint', function(){
                  
                });
                showThumbs = false;
            }
          },
          5000);
        } else if ($(data).find('.thumbwrapper').length > 0)
        {
          $('.currentWrap').find('.thumbwrapper').remove();
          var s = '<div class="thumbwrapper">'
          var count = 1;
          $(data).find('.thumbwrapper').children().each(function(){
            s += '<div class="thirdthumb" ref="'+$(this).attr('ref')+'">'+count+'</div>';
            count++;
          });
          s += '</div>';
          $('.currentWrap').find('.right').append(s);
          $('.currentWrap').find('.thirdthumb').first().addClass('current');
          loadOnlyRight($(s).children().first().attr('ref'));
        }
        $('.currentWrap').find('.footer').fadeIn('fast');
      },
      error: function()
      {
        alert('error');
      }
    });
  }
  return false;
}

function startThumbScroller()
{
  $('.currentWrap').find('.right').mousemove(function(e){
    tWidth = parseFloat($('.currentWrap').find('.thumbnailmenu').css('width'));
    if(tWidth > 960)
    {
      var left = $(this).offset().left + 50;
      var tx = ((e.pageX - left) / 918) * -(tWidth - 718);
      if(tx > 0){tx = 0;}else if(tx < -(tWidth - 918)){tx = -(tWidth - 918)};
      $('.currentWrap').find('.thumbnailmenu').css('left', tx);
    }
    
    /*
    100% === target.width - 960px
    */
    
  });
  $('body').mousemove(function(e){
    var top = $(this).offset().top;
    var g = ($('#smallStyle').length > 0) ? 420 : 640;
    if(e.pageY - top > g)
    {
      if(!showThumbs)
      {
        $('.currentWrap').find('.thumbnailmenu').animate({
          top: 0
        }, 600, 'easeOutQuint', function(){
          
        });
        showThumbs = true;
      }
    }
    else
    {
      if(showThumbs)
      {
        $('.currentWrap').find('.thumbnailmenu').animate({
          top: '120px'
        }, 600, 'easeOutQuint', function(){
          
        });
        showThumbs = false;
      }
    }
  });
  $('.currentWrap').find('.right').mouseleave(function(){
    var tWidth = parseFloat($('.currentWrap').find('.thumbnailmenu').css('width'));
    var left = parseFloat($('.currentWrap').find('.thumbnailmenu').css('left'));
    if(left > -400) {
      $('.currentWrap').find('.thumbnailmenu').animate({left: 0}, 200);
    } else if(left <  -(tWidth - 960) + 400) {
      var tx = -(tWidth - 960);
      $('.currentWrap').find('.thumbnailmenu').animate({left: tx}, 200);
    }
  });
}
function stopThumbScroller()
{
  showThumbs = false;
  $('body').unbind('mousemove');
  $('.currentWrap').find('.right').unbind('mousemove');
  $('.currentWrap').find('.right').unbind('mouseleave');
}

function loadContentOnly(ref){
  $('.currentWrap').find('.col0').fadeOut();
  $('.currentWrap').find('.col1').fadeOut();
  $('.currentWrap').find('.footer').fadeOut();
  contentLoader = $.ajax({
    type: 'GET',
    async: true,
    url: "/index.php?type=999&id="+ref,
    success: function(data){
      var col1 = '<div class="col1">'+$(data).find('.col1').html()+'</div><div class="thumbwrapper">';
      var count = 1;
      $(data).find('.csc-textpic-image').each(function(){
        col1 += '<div class="csc-thumb">'+count+'</div>';
        count++;
      });
      col1 += '</div>';
    /*/fileadmin/template_imago/gfx/thumb.png*/
      $('.currentWrap').find('.col0').html($(data).find('.col0').html()).fadeIn();
      $('.currentWrap').find('.thumbwrapper').remove();
      $('.currentWrap').find('.col1').replaceWith(col1).fadeIn();
      $('.currentWrap').find('.col1').find('img').each(function(){$(this).removeAttr('width');$(this).removeAttr('height');});
      $('.currentWrap').find('.footer').fadeIn();
      $('.currentWrap').find('.csc-textpic-imagerow').css('display', 'none');
      $('.currentWrap').find('.csc-textpic-imagerow').first().addClass('currentImage').css('display', 'block');
      $('.currentWrap').find('.csc-thumb').first().addClass('current');
      },
    error : function(){
      alert('error');
    }
  });
}
function loadOnlyRight(ref)
{
  $('.currentWrap').find('.col1').fadeOut();
  contentLoader = $.ajax({
    type: 'GET',
    async: true,
    url: "/index.php?type=999&id="+ref,
    success: function(data){
      var col1 = '<div class="col1">'+$(data).find('.col1').html()+'</div>';
      $('.currentWrap').find('.col1').replaceWith(col1);
      $('.currentWrap').find('.col1').fadeIn();
    }
  });
}
function resizeHandler() {
  var curHeight = ($('#smallStyle').length > 0) ? smallHeight : bigHeight;
  if((parseInt($(window).height())<curHeight)||(parseInt($(window).width())<1440)){
    $('body').css({
            overflow: 'auto',
            width: '100%'
          });
    $('.scrollwrap').css({
            minWidth: '1600px'
          });  
    
  } else {
    $('body').scrollLeft('0');
    $('body').css({
            overflow: 'hidden',
            width: '100%'
          });
    $('.scrollwrap').css({
            minWidth: '1400px'
          });
  }
  var wh = ($.browser.msie) ? $(window).height() + 100 : $(window).height();
  if((wh<bigHeight)){
    if($('#smallStyle').length == 0)
    {
      $('.scrollwrap').css({minHeight : '690px', height: '690px'});
      $("head").append('<link id="smallStyle">');
      css = $("head").children(":last");
      css.attr({
        rel:  "stylesheet",
        type: "text/css",
        href: "/fileadmin/template_imago/css/screen-small.css"
      });
    }
  } else {
    if($('#smallStyle').length > 0)
    {
      $('.scrollwrap').css('minHeight', '900px');
      $('#smallStyle').remove();
      
    }
    $('.scrollwrap').css({
          height: '900px'
        });
  }
  var num = ($(window).width()-  1440) / 2;
  if(num < 0) num = 0;
  $('.currentWrap').css({
          left: num+'px'
        });
  
}
