var action;
var id;

var idCategory=0;
var idService=0;

var baseTransitionTime=120;
var hideMenuTimeout=4000;
var hideTnTimeout=6000;

var menuCloseTimer;
var tnCloseTimer;

var loadService=false;

var photosFull=[];

var jspApi;

$(function()
{
  $.each($('#body').attr('class').split(' '),getBodyData);

  $('#menu-box').mousemove(clearMenuCloseTimer);

  $('#open-categories').click(function(){$('.category.sel').click()});
  $('#open-services').click(function(){$('.service.sel').click()});

  $('#menu-open').click(clickMenu);
  $('.category').click(clickCategory);
  $('.service').click(clickService);

  $('#profile').click(function(){document.location=this.href;return false;});

  if(action=='home')
  {
    $('#open-categories, #open-services').hide();

    if(photos.length>0)
    {
      for(var i=0;i<photos.length;i++)
      {
        photosFull.push(photos[i]);
        photosFull[i].image=photosFull[i].image.replace('##SIZE##',getFullPhotoSize());
      }

      $.supersized({
        keyboard_nav: 0,
        performance: 0,
        image_path: '/images/supersized/',
        min_width: 960,
        navigation: 0,
        thumbnail_navigation: 0,
        slide_counter: 0,
        slide_captions: 0,
        slides: photosFull
      });
    }

    setTimeout(function(){if(!$('#menu-box').hasClass('open')){$('#home-text').fadeIn(1500);}},1500);

    if($('#browser-update').size()>0)
      {$('#browser-update-continue').click(function(){$('#browser-update').fadeOut(600);return false;});}
  }
  else if(action=='profile')
  {
    $('#open-categories, #open-services').hide();

    setTimeout(function(){$('#profile-box, #profile-contact, #profile-address, #show-references').animate({'left':'+=32em'},600);},400);

    $.supersized({
      keyboard_nav: 0,
      performance: 0,
      image_path: '/images/supersized/',
      min_width: 960,
      navigation: 0,
      thumbnail_navigation: 0,
      slide_counter: 0,
      slide_captions: 0,
      slides: [{image:'/images/profile_'+getFullPhotoSize()+'.jpg'}]
    });

    $('.profile-heading').click(showProfileSection);
    $('#profile-content-press .press-item').click(showPress);

    $(window).resize(profileResize);
    setTimeout(function(){$(window).resize();},1000);
  }
  else if(action=='service')
  {
    if(id>0)
    {
      idService=id;
      idCategory=parseInt($('#service-'+idService).parent().attr('id').substr(9));

      $('#category-'+idCategory).addClass('sel');
      $('#service-'+idService).addClass('sel');

      $('.category').show();
      $('.category:gt('+$('.category').index($('.category.sel'))+')').hide();
      $('#categories').css({'margin-top':'-'+(3.5+$('.category').index($('.category.sel'))*3)+'em'});

      $('#services-'+idCategory+', #services-'+idCategory+' .service').show();
      $('#services-'+idCategory+' .service:gt('+$('#services-'+idCategory+' .service').index($('#services-'+idCategory+' .service.sel'))+')').hide();
      $('#services').css({'margin-top':'-'+(3.5+$('#services-'+idCategory+' .service').index($('#services-'+idCategory+' .service.sel'))*3)+'em'});

      menuCloseTimer=setTimeout(hideMenu,hideMenuTimeout);

      $('#tn-open').click(clickTn);

      $('#tn').mousemove(clearTnCloseTimer);
    }

    if(photos.length>0)
    {
      for(var i=0;i<photos.length;i++)
      {
        photosFull.push({image:photos[i].image.replace('##SIZE##',getFullPhotoSize())});
        $('#tn-list-content').append('<a href="#"'+((i==0)?' class="sel"':'')+'><img src="'+photos[i].image.replace('##SIZE##',getTnPhotoSize())+'" /></a>');
      }

      $.supersized({
        slideshow: 1,
        autoplay: 1,
        keyboard_nav: 0,
        performance: 0,
        image_path: '/images/supersized/',
        min_width: 960,
        navigation: 0,
        thumbnail_navigation: 0,
        slide_counter: 0,
        slide_captions: 0,
        slides: photosFull
      });
    }

    var jsp=$('#tn-list').jScrollPane();
    jspApi=jsp.data('jsp');
    $(window).resize(function(){var jsp=$('#tn-list').jScrollPane();jspApi=jsp.data('jsp');});

    setTimeout(function(){$(window).resize();},100);

    $('#next').click(nextPhoto);
    $('#prev').click(prevPhoto);

    $('#play-pause').click(playPause);
    $('#tn-list-content a').click(goToPhoto);
    theme={beforeAnimation:updateTnSel};

    $(window).resize(function(){ $('#next, #prev').css('bottom',Math.max($('#tn-box').outerHeight(true),Math.round(($(window).height()-$('#next').outerHeight(true))/2)));  });
  }
});



function getBodyData(index,value)
{
  if(value.substr(0,2)=='a-')
    {action=value.substr(2);}
  else if(value.substr(0,3)=='id-')
    {id=value.substr(3);}
}

function getFullPhotoSize()
{
  if(window.screen.width>1366)
    {return '1920';}
  else if(window.screen.width>1024)
    {return '1366';}
  else
    {return '1024';}
}

function getTnPhotoSize()
{
  if(window.screen.width>1024)
    {return '180';}
  else
    {return '90';}
}


/* menu */

function clearMenuCloseTimer()
{
  if(menuCloseTimer)
  {
    clearTimeout(menuCloseTimer);
    menuCloseTimer=setTimeout(hideMenu,hideMenuTimeout);
  }
}


function clickMenu()
{
  if($('#menu-box').hasClass('open'))
    {hideMenu();}
  else
    {showMenu();}

  return false;
}

function hideMenu()
{
  $('#menu-open').attr('title','Open Menu');

  clearTimeout(menuCloseTimer);
  menuCloseTimer=null;

  $('#menu-box').removeClass('open');

  if($('.category.sel').size()>0 && $('.service.sel').size()>0 && $('#services').hasClass('open'))
  {
    $('.service.sel').click();
  }
  else if($('.category.sel').size()>0 && $('#services').hasClass('open'))
  {
    hideServices();
  }
  else if($('.category.sel').size()>0 && $('#categories').hasClass('open'))
  {
    $('.category.sel').click();
  }
  else if($('#categories').hasClass('open'))
  {
    hideCategories();
  }
  else
    {hideMenu2();}
}

function hideMenu2()
{
  $('#menu-box').animate({'right': '-52.5em'},600);

  if($('.category.sel').size()>0 && $('.service.sel').size()==0)
    {$('.category.sel').removeClass('sel');}

  $('#categories').removeClass('open');

  setTimeout(function(){$('#menu-box').removeClass('open');},600);
}

function showMenu()
{
  $('#home-text').stop().fadeOut(1200);

  clearTimeout(menuCloseTimer);
  menuCloseTimer=null;

  if($('#tn-box').hasClass('open'))
    {hideTn();}

  $('#menu-open').attr('title','Close Menu');

  if($('.category.sel').size()>0 && $('.service.sel').size()>0)
    {$('#menu-box').animate({'right':'0'},600);}
  else
    {$('#menu-box').animate({'right':'0'},600,showCategories);}
  setTimeout(function(){$('#menu-box').addClass('open');},600);
}

function showCategories()
{
  if(idCategory>0)
  {
    $('#services-'+idCategory+' .service').fadeOut(600);
    $('.service.sel').removeClass('sel');
    idService=0;
    $('#services').removeClass('open');
    setTimeout(function(){$('.services').hide();},600);
  }

  $('#open-categories, #open-services').fadeOut();

  if($('.category.sel').size()>0)
  {
    $('.category:hidden').fadeIn(600);
    setTimeout(showCategories2,600);
  }
  else
  {
    $('#categories').css({'margin-top':'-9999'});
    $('.category').show();
    $('#categories').css({'margin-top':-$('#categories').outerHeight()});
    showCategories2();
  }
}

function showCategories2()
{
  transitionTime=baseTransitionTime*$('.category').size();
  $('#categories').animate({'margin-top':'0'},transitionTime).addClass('open');
  $('.category.sel').removeClass('sel');
  idCategory=0;
}


function clickCategory()
{
  clearTimeout(menuCloseTimer);
  menuCloseTimer=null;

  if($('#categories').hasClass('open'))
  {
    idCategory=parseInt(this.id.substr(9));
    $(this).addClass('sel');
    hideCategories();
  }
  else
    {showCategories();}

  return false;
}

function hideCategories()
{
  $('.services').hide();

  if($('.category.sel').size()>0)
  {
    transitionTime=baseTransitionTime*(1+$('.category').index($('.category.sel')));
    $('#categories').animate({'margin-top':'-'+(3.5+$('.category').index($('.category.sel'))*3)+'em'},transitionTime,hideCategories2);
  }
  else
  {
    transitionTime=baseTransitionTime*$('.category').size();
    $('#categories').animate({'margin-top':'-'+(3.5+$('.category').size()*3)+'em'},transitionTime,hideMenu2);
  }
}

function hideCategories2()
{
  $('.category:gt('+$('.category').index($('.category.sel'))+')').fadeOut(600);
  $('#categories').removeClass('open');

  $('#open-categories').fadeIn();

  if($('#menu-box').hasClass('open'))
    {setTimeout(showServices,600);}
  else
    {setTimeout(hideMenu2,600);}
}



function showServices()
{
  $('#open-services').fadeOut();

  if($('.service.sel').size()>0)
  {
    $('#services-'+idCategory+' .service:hidden').fadeIn(600);
    setTimeout(showServices2,600);
  }
  else
  {
    $('#services').css({'margin-top':'-9999'});
    $('.services').hide();
    $('#services-'+idCategory+', .service').show();
    $('#services').css({'margin-top':-$('#services-'+idCategory).outerHeight()});
    showServices2();
  }
}

function showServices2()
{
  transitionTime=baseTransitionTime*$('#services-'+idCategory+' .service').size();
  $('#services').animate({'margin-top':'0'},transitionTime).addClass('open');
}

function clickService()
{
  clearTimeout(menuCloseTimer);
  menuCloseTimer=null;

  if($('#services').hasClass('open'))
  {
    loadService=!$(this).hasClass('sel');
    idService=parseInt(this.id.substr(8));
    $('.service.sel').removeClass('sel');
    $(this).addClass('sel');
    hideServices();
  }
  else
    {showServices();}

  return false;
}

function hideServices()
{
  if($('.service.sel').size()>0)
  {
    transitionTime=baseTransitionTime*(1+$('#services-'+idCategory+' .service').index($('#services-'+idCategory+' .service.sel')));
    $('#services').animate({'margin-top':'-'+(3.5+$('#services-'+idCategory+' .service').index($('#services-'+idCategory+' .service.sel'))*3)+'em'},transitionTime,hideServices2);
  }
  else
  {
    transitionTime=baseTransitionTime*$('#services-'+idCategory+' .service').size();
    $('#services').animate({'margin-top':'-'+(3.5+$('#services-'+idCategory+' .service').size()*3)+'em'},600,hideCategories);
  }
}

function hideServices2()
{
  $('#services-'+idCategory+' .service:gt('+$('#services-'+idCategory+' .service').index($('#services-'+idCategory+' .service.sel'))+')').fadeOut(600);
  $('#services').removeClass('open');

  $('#open-services').fadeIn();

  if($('#menu-box').hasClass('open'))
    {setTimeout(loadServiceUrl,600+100);}
  else
    {setTimeout(hideMenu2,600);}
}

function loadServiceUrl()
{
  if(idService>0 && loadService)
    {document.location=$('#service-'+idService).attr('href');}
}


/* service */

function clickTn()
{
  if($('#tn-box').hasClass('open'))
    {hideTn();}
  else
    {showTn();}

  return false;
}

function hideTn()
{
  clearTimeout(tnCloseTimer);
  tnCloseTimer=null;

  $('#tn-open').attr('title','Show Photos');
  $('#tn-box').animate({'right': '-52.5em'},600).removeClass('open');
}


function showTn()
{
  clearTimeout(tnCloseTimer);
  tnCloseTimer=null;

  if($('#menu-box').hasClass('open'))
    {hideMenu();}

  $('#tn-open').attr('title','Hide Photos');
  $('#tn-box').animate({'right':'0'},600);
  setTimeout(showTn2,600);
}

function showTn2()
{
  $('#tn-box').addClass('open');
  jspApi.scrollToY(Math.floor($('#tn-list-content a').index($('#tn-list-content a.sel'))/(($('#tn-box').hasClass('text'))?3:5))*$('#tn-list-content a').outerHeight(true),true);
  tnCloseTimer=setTimeout(hideTn,hideTnTimeout);
}

function nextPhoto()
{
  if($('#tn-box').hasClass('open'))
    {hideTn();}

  api.nextSlide();

  return false;
}

function prevPhoto()
{
  if($('#tn-box').hasClass('open'))
    {hideTn();}

  api.prevSlide();

  return false;
}

function playPause()
{
  if($('#play-pause').hasClass('pause'))
  {
    $('#play-pause').removeClass('play').addClass('pause');

    $('#next').animate({'right': '-3em'},600);
    $('#prev').animate({'left': '-3em'},600);

    $('#play-pause span.text').text('Pause');
  }
  else
  {
    $('#play-pause').removeClass('pause').addClass('play');

    $('#next').animate({'right': '0'},600);
    $('#prev').animate({'left': '0'},600);

    $('#play-pause span.text').text('Play');
  }

  api.playToggle();

  return false;
}

function goToPhoto()
{
  api.goTo($('#tn-list-content a').index($(this))+1);

  return false;
}

function updateTnSel()
{
  $('#tn-list-content a').removeClass('sel');
  $('#tn-list-content a:nth-child('+(vars.current_slide+1)+')').addClass('sel');
}

function clearTnCloseTimer()
{
  if(tnCloseTimer)
  {
    clearTimeout(tnCloseTimer);
    tnCloseTimer=setTimeout(hideTn,hideTnTimeout);
  }
}



/* profile */

function showProfileSection()
{
  if($(this).hasClass('selected'))
  {
    $('#profile-box .profile-heading').removeClass('selected');
    $('#profile-box .profile-content:visible').slideUp();
  }
  else
  {
    $('#profile-box .profile-heading').removeClass('selected');
    $(this).addClass('selected');

    $('#profile-box .profile-content:visible').slideUp();
    $('#profile-content-'+this.id.substr(16)).slideDown(setScroller);
  }
}

function profileResize()
{
  $('#profile-box .profile-content').css('height',$('#profile-box').height()-$('#profile-heading-profile').outerHeight(true)*5-($('#profile-content-references').outerHeight(true)-$('#profile-content-references').height()));
  setScroller();
  if($('#press-overlay').is(':visible'))
  {
    $('#press-overlay embed, #press-overlay object').css({'width': $('#press-overlay').width(), 'height': $('#press-overlay').height()});
  }
}


function setScroller()
{
  $('#profile-box .profile-content:visible').jScrollPane();
}

function showPress()
{
  $('#press-overlay').html($('#press-item-content-'+this.id.substr(11)).html());
  $('#press-overlay').append('<a id="close-press-overlay">Close</a>')
  $('#close-press-overlay').click(hidePress);
  $('#press-overlay object').css({'position': 'fixed', 'top': '0px', 'bottom': '0px', 'left': '0px', 'right': '0px', 'margin': '3.5em'});
  $('#press-overlay embed, #press-overlay object').css({'width': $('#press-overlay').width(), 'height': $('#press-overlay').height(), 'background-color': '#000000'});
  $('#press-overlay div div').remove();
  $('#press-overlay').show();
}

function hidePress()
{
  $('#press-overlay').html('');
  $('#press-overlay').hide();
}
