function SlideShow () 
{

	this.startSlideShow = function(element, delay, before, after) {
		$("#" + element).cycle({
			fx: 'fade',
			delay: delay,
			before : before,
			after : after
		});
	}

}

function ReferenceManager ()
{

	this.init = function() 
	{
		$("#projects").closest('li').click(function() {
			ReferenceManager.openTab();
		});
		
		$(".reference-selector").live('click', function() {
			ReferenceManager.openShortCutMenu();
		});
		
		$(".open-tab").live('click', function(){
			ReferenceManager.closeTab();
		});
	}
	
	this.openShortCutMenu = function()
	{
	
		$("#sub-menu").fadeIn('fast');
		$("#sub-menu ul li").each(function() {
			$(this).click(function() {
				
				var type = $(this).attr('rel');
			
				$("#ajax-content").fadeOut('fast', function() {
					$("#ajax-content").empty();
					$('<img id="big-spinner" src="/wp-content/themes/confect/images/spinner-big.gif" />').appendTo("#ajax-content");
					$(this).fadeIn('fast', function() {
						AjaxManager.fetchContent(type);
					});
					
				});
			});
		});
		$(".reference-selector img").attr('src', '/wp-content/themes/confect/images/selectup.png');
		$(".reference-selector").die('click');
		$(".reference-selector").unbind();
		$(".reference-selector").click(function() {
			ReferenceManager.closeShortCutMenu();
		});
	
	}
	
	this.closeShortCutMenu = function()
	{
		$(".reference-selector img").attr('src', '/wp-content/themes/confect/images/select.png');
		$("#sub-menu").fadeOut('fast');
		$(".reference-selector").unbind();
		$(".reference-selector").click(function() {
			ReferenceManager.openShortCutMenu();
		});
		
	}

	this.openTab = function() 
	{
		
		$("#projects").closest('li').animate({
		
			'top' : '-335px'
		
		}, function() {
			$("#projects").fadeIn('fast');
			$("#projects").closest('li').addClass('open-tab');
			$("#projects").parent('li').unbind('click').unbind('mouseenter').click(function() {
				ReferenceManager.closeTab();
			});
		});
		
		
	}
	
	this.closeTab = function() 
	{
		
		$("#projects").fadeOut('fast', function() {
			$("#footer-menu li[rel='references']").animate({
				'top' : '0px'
			});
			$("#projects").closest('li').removeClass('open-tab').unbind('click').click(function() {
				ReferenceManager.openTab();
			});
		});
		
	}
	
	this.rotateArrowUp = function(object) 
	{
		
		object.find('img.arrow').css({
				'-webkit-transition': 'all 0.25s ease-in-out',
				'-webkit-transform': 'rotate(-90deg)',
				'-moz-transition': 'all 0.25s ease-in-out',
				'-moz-transform': 'rotate(-90deg)'
			});			

	}
	
	this.rotateArrowBack = function(object)
	{
		object.find('img.arrow').css({
				'-webkit-transition': 'all 0.25s ease-in-out',
				'-webkit-transform': 'rotate(0deg)',
				'-moz-transform': 'rotate(0deg)'
		});
	}
	
	this.rotateArrowDown = function(object) 
	{
		object.find('img.arrow').css({
				'-webkit-transition': 'all 0.25s ease-in-out',
				'-webkit-transform': 'rotate(45deg)',
				'-moz-transform': 'rotate(45deg)'
		});
	}

}

function ScrollManager()
{

	this.init = function() {
	
		$(".nav-item, #projects ul li").click(function() {
		
			var type = $(this).attr('rel');
		
			$("#ajax-content").fadeOut('fast', function() {
				$("#ajax-content").empty();
				$('<img id="big-spinner" src="/wp-content/themes/confect/images/spinner-big.gif" />').appendTo("#ajax-content");
				$(this).fadeIn('fast', function() {
					
					if(BrowserDetect.browser == 'Explorer' && BrowserDetect.version == '7') {
						var offset = 300;
					}else	{
						var offset = -100;
					}
				
					$.scrollTo($("#ajax-container"), 800, {axis: 'x', offset: offset, onAfter: function() {
							AjaxManager.fetchContent(type);
							ReferenceManager.closeTab();
						} 
					});
				});
								
					
		
			});
			
		});
		
		this.preventKeyBoardNavigation();
	}
	
	this.preventKeyBoardNavigation = function()
	{
	
		$(window).keydown(function(event) {
			if(event.keyCode == 39 || 37) {
				return false;
			}
		});
	
	}
	
	

}

function AjaxManager()
{

	this.fetchContent = function(type) {
		

				
				$.ajax({
					type     : 'post',
					data     : 'type=' + type,
					url      : 'wp-content/themes/confect/ajax/fetchcontent.php',
					datatype : 'html',
					success  : function(html) {
						$("#ajax-content").fadeOut('fast', function() {
							$(this).empty();
							$(html).appendTo("#ajax-content");
							$("#ajax-content").fadeIn('fast');

							if(type == 'contact') {
								initialize();
							}
						
							if(type != 'contact' && type != 'profile') {
								
								if($(".pirobox_content").length > 0){
									$(".pirobox_content").remove();
									$(".piro_overlay").remove();
								}
													
								PiroManager.init();
								
								$(".reference-selector").click(function() {
									ReferenceManager.openShortCutMenu();
								});
								SlideShow.startSlideShow('large-box', 500);
								SlideShow.startSlideShow('small-upper-box', 1200);
								SlideShow.startSlideShow('small-lowers-box', 1700);
							
							}
						
						});
						
					}
				});
	}

}

function DashboardManager()
{

	this.init = function() {
		
		$("#ajax-nav a").click(function() {
			$.scrollTo($("body"), 800, {axis: 'x'});
		});
		
		$(".nav-item").mouseenter(function() {
			$(this).find("img.arrow").animate({
				'right' : '5px'
			}, 100);
		});
		
		$(".nav-item").mouseleave(function() {
			$(this).find("img.arrow").animate({
				'right' : '20px'
			}, 100);
		});
		
		$(".ref-item").mouseenter(function() {
		
			ReferenceManager.rotateArrowUp($(this));
						
		});
		
		$(".ref-item").mouseleave(function() {
		
			ReferenceManager.rotateArrowBack($(this));
			
		});
		
		$(".temp-ref-item").live('click', function() {
			ReferenceManager.closeTab();
		});
		
		
		
	}

}

function PiroManager()
{
	
	this.init = function()
 	{
 		$().piroBox({
     		 my_speed: 300, //animation speed
     		 bg_alpha: 0.7, //background opacity
     		 slideShow : 'false' // true == slideshow on, false == slideshow off     		 
     	});
			 		
 	}	
}


$(document).ready(function() {

	AjaxManager = new AjaxManager();
	
	PiroManager = new PiroManager();

	SlideShow = new SlideShow();
	SlideShow.startSlideShow('slideshow', 0);
	
	ReferenceManager = new ReferenceManager();
	ReferenceManager.init();
	
	ScrollManager = new ScrollManager();
	ScrollManager.init();
	
	DashboardManager = new DashboardManager();
	DashboardManager.init();
	
	BrowserDetect.init();

	if(BrowserDetect.browser == 'Opera') {
		$(".nav-item[rel='contact'] .arrow").css('right', '-200px');
		$(".nav-item[rel='profile'] .arrow").css('right', '-210px');
		$(".ref-item .arrow").css('right', '-170px');
		
		$(".nav-item").unbind('mouseleave').unbind('mouseenter');
		
	}

});


/* ---------  Browser dection ------------- */

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.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
