$(init_page);
var page_height;
var cur_caption = 0;
var sux_browser = false;

init_sifr();  
  
function init_page(){
  BrowserDetect.init();
  if(BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 8)sux_browser = true;
  //$('#main_menu').superfish(); 
  
  // Toggle Items
  //init_toggle_items();
  
  // Setup Lightbox
  $('a.lightbox').lightBox();

  init_gallery_thumbnails();

  init_scrollables(); 

  if(sux_browser){ 
    $('body').css('padding-top',50);
    switch_main_menu();
  }
 
  if($('.flash_warning').get(0)!=undefined){
    if(FlashDetect.major < 10){
      $('.flash_warning').show().html('This page component require Flash Version 10. <a href="http://get.adobe.com/flashplayer/" target="_blank">Download the latest Flash player here</a>');  
    }
  }
 
}

function switch_main_menu(){
  var offset = $('#main_menu_container').offset();
   
  var page_offset = $('#page').offset();
  $('#page').append($('#main_menu_container'));
  $('#main_menu_container').css('left',offset.left - page_offset.left);
  $('#main_menu_container').css('top',offset.top - page_offset.top);
  
}
function init_scrollables(){
 
  $('.content-left .scrollable, .content-scroll .scrollable').each(function(){
    var content_height = $('#content').height();
    var content_offset = $('#content').offset();
    var this_offset = $(this).offset();

    new_height =  content_height -(this_offset.top - content_offset.top) - 36;
    if(new_height < $(this).height()){
       $(this).height(new_height);
    }
    
  });  
  // Setup Scrollables
  if($.fn.jScrollPane){
    // Init Scrollbar
    $('.scrollable').jScrollPane({scrollbarWidth:5, animateTo:true, animateInterval:50,scrollbarMargin:10}); 
  }    
  
  // remove unnecessary scrollbars
  $('.jScrollPaneContainer').each(function(){
    var diff =   $(this).find('.scrollable').height() - $(this).height()  ;
    if(diff < 30){
      $(this).find('.jScrollPaneTrack').remove();  
    }
  });
}

function init_gallery_thumbnails(){

  $('.gallery[screen], .content-left .gallery').each(function(){
    
    if ($('#content').hasClass('content-left')){
      // resize for scroller
      // set width

      if($(this).parent().hasClass('gallery_buttons')){
        $(this).width(($(this).children().width() + 2) * $(this).children().length );

        // add navigation button
        $(this).parent().append('<div class="nav"><a href="#" id="gallery_prev" class="prev">Prev</a><a href="#" class="next" id="gallery_next" >Next</a></div>');
        setup_gallery_scroller($(this), $('#gallery_prev'),$('#gallery_next'), $(this).children().width());
      }
      
    }
    
    var screen = $(this).attr('screen');
    if(screen ){
      $(screen).css({
          'height':$(screen).height() + 'px',
          'width':$(screen).width() + 'px',
          'position':'relative'});
      $(screen  + ' img').remove();
  		// Initialize Galleriffic
  		$(this).galleriffic({
  		  childrenSelector:'.gallery_item .frame',
  			imageContainerSel:screen,
  			selectedClass: 'current-page-item',
  			syncTransitions:true
  		});
    }
    
  });

  // Home page gallery
  $('.home_gallery[screen]').each(function(){
    
    var screen = $(this).attr('screen');
    $(screen).css({
        'height':$(screen).height() + 'px',
        'width':$(screen).width() + 'px',
        'position':'relative'});
    $(screen  + ' img').remove();
		// Initialize Galleriffic
		$(this).galleriffic({
		  childrenSelector:'.gallery_item .frame',
			imageContainerSel:screen,
			selectedClass: 'current-page-item',
			syncTransitions:true,
			autoStart:true,
			delay:4000,
			clickToLink:true
		});

    
  });
  

  
}

function show_more(obj){
  if(BrowserDetect.browser == 'Explorer'){
    if(BrowserDetect.version < 8 ){
      $(obj).next().show();    
    }else{
      $(obj).next().fadeIn();    
    }
  }else{
    $(obj).next().fadeIn();
  }
  $(obj).remove();
}

function show_media_caption(idx){ 
  setTimeout(function(){real_show_media_caption(idx)},1300);
}
function real_show_media_caption(idx){
  if(cur_caption != idx){
    $('#media_caption_' + cur_caption).fadeOut('slow');
    $('#media_caption_' + idx).hide();
    $('#media_caption_' + idx).css('top',0).fadeIn('slow');
  }
  

  cur_caption = idx;
  
}

var gallery_on_scroll = false;
var gallery_curr_idx = 0;
var gallery_length = 0;

function setup_gallery_scroller(container,prev,next,size){
  $(container).css({'position':'absolute'});
  gallery_length = container.children().length ;
  
  container.children().each(function(idx){
    if($(this).hasClass('current-page-item')){
      var ofs = $(this).offset();
      var container_ofs = container.parent().offset();
      
     // alert(container_ofs.left + ' --- ' + container.parent().width());
      

      item_left = ofs.left - container_ofs.left;
      if(item_left > container.parent().width()){
         gallery_curr_idx = idx-2;
         container.css( {'left': -(item_left - 2-(2*size))} ); 
      }
      
      
    }
  });
  $(prev).click(function(){
    if(gallery_on_scroll)return false;
    
    if(gallery_curr_idx <1) return false;
    
    gallery_on_scroll = true;
    var left = parseFloat(container.css('left').replace(/px/,'')); 
    if(isNaN(left)) left =0;

    container.animate({'left': left + size },{  complete:function(){
        gallery_on_scroll = false;
        gallery_curr_idx --;
        reload_gallery_nav(container);
    }});
    return false;
  });
  $(next).click(function(){
    if(gallery_on_scroll)return false;
    if(gallery_curr_idx > (gallery_length   -4)) return false;

    gallery_on_scroll = true;
    var left = parseFloat(container.css('left').replace(/px/,'')); 

    if(isNaN(left)) left =0;

    container.animate({
    'left': (left - size) },
    { 
      'complete': function(){ 
        gallery_on_scroll = false;
        gallery_curr_idx ++;
        reload_gallery_nav(container);
      }
    });
    return false;
  });
  reload_gallery_nav(container);
}

function reload_gallery_nav(container){
  if(gallery_curr_idx == 0){
    $('#gallery_prev').addClass('disabled');
  }else{
    $('#gallery_prev').removeClass('disabled');
  }
 
  if(gallery_curr_idx > gallery_length  - 4){
    $('#gallery_next').addClass('disabled');
 
  }else{
    $('#gallery_next').removeClass('disabled');
  }
    
}
 
/* Toggle Items */
function init_toggle_items(){
  $('.toggle_body').hide();
  $('.toggle_arrow a').bind('click', function(){
    var o_next = $(this).parent().next();
    if(o_next.css('display')=='none'){
      o_next.slideDown(); 
      
      $('.toggle_arrow.selected a').trigger('click');
      $(this).parent().addClass('selected'); 
      
    }else{
      o_next.slideUp();  
      $(this).parent().removeClass('selected'); 
    }
    return false;  
  });
  var anchor = window.location.hash;

  if(anchor !=''){
    $('.toggle_arrow.selected').removeClass('selected');
    
    $('a').each(function(i){
      if($(this).attr('href')== anchor){
        $(this).trigger('click');
      }
    });
  }else{
    $('.toggle_arrow.selected').next().show();
  }

}





/* Helper functions */

function has_flash(){
  return FlashDetect.installed;
}


function is_valid_email(email) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   if(reg.test(email) == false) {
      return false;
   }
   return true;
}



/* Browser Detection Class */
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]
};


