jQuery(function($) {
	$('body').addClass('hasJS'); // Add hasJS class on load for deeper manipulation
});

// Adding transparent mode to Flash object.
var flashFix = {
    fix:function() {
        $('.module .media object').each(function(){
            $(this).wrapAll('<div class="flash-mod"></div>').attr('wmode','transparent');
            $(this).attr('width', '620');
            $(this).children('embed').attr('width', '620');
        });
    }
};
flashFix.fix();


/**
* Global Focus/Blur functionality on input[text]
*/
var inputFocusBlur = {
	init: function() {
		//$('input[type="text"]').addClass("idleField"); //Optional classes can be added for custom styling of on focus to bring attention to field
		$('input[type="text"]').focus(function() {
			//$(this).removeClass("idleField").addClass("focusField");
	        if (this.value == this.defaultValue){
	        	this.value = '';
	    	}
	        if(this.value != this.defaultValue){
		    	this.select();
	        }
	    });
	    $('input[type="text"]').blur(function() {
	    	//$(this).removeClass("focusField").addClass("idleField");
	    	var inputValue = $.trim(this.value);
	        if (inputValue == ''){
	        	this.value = (this.defaultValue ? this.defaultValue : '');
	    	}
	    });
	}
};
inputFocusBlur.init();

var linksDrop = {
    hideTimeoutId:null,
	init:function() {
        $('#top-nav ul li.external-links > a').live('click', function() {
			if($(this).parent().hasClass('open')) {
				$(this).parent().removeClass('open');
				$(this).siblings('.links-dropdown').addClass('offscreen');
			} else {
				$(this).siblings('.links-dropdown').removeClass('offscreen');
				$(this).parent().addClass('open');
			}
			return false;
		});
	}
};
linksDrop.init();

/*var linksDrop2 = {
	init:function() {

		var linksLI = $('#top-nav ul li.external-links a');


		linksLI.mouseover(function () {
            if($(this).parent().hasClass('open')) {
                $(this).parent().removeClass('open');
                $(this).siblings('.links-dropdown').addClass('offscreen');
            } else {
                $(this).siblings('.links-dropdown').removeClass('offscreen');
				$(this).parent().addClass('open');
            }

		});

		$('.links-dropdown').mouseout(function () {
			$('#top-nav>ul>li').removeClass('open');
			$(this).siblings('.links-dropdown').addClass('offscreen');
			
		});

		$('#top-nav ul li.external-links a').live('click', function () {
			$('#top-nav>ul>li').removeClass('open');
			$('#top-nav .links-dropdown').addClass('offscreen');
		});


	}
};
linksDrop2.init();*/


/**
* Main Nav functionality across the website
*/
var mainNav = {
	init:function() {
		$('#main-nav .vr-line').each(function(){
			$(this).height($(this).parent().height());
		});

		var navLI = $('#main-nav ul li');

		$('#main-nav>ul>li:last').addClass('flip');

		navLI.mouseover(function () {
            if($(this).children('.dropdown-holder').size() > 0) {
                $(this).addClass('over tablike');
                $(this).children('.dropdown-holder').removeClass('hidden');
            } else {
                $(this).removeClass('over tablike');
            }
            Cufon('#main-nav li a.main-link', {fontFamily: 'AvenirLT-Medium', hover: true});
		});

		navLI.mouseout(function () {
			if ($(this).hasClass('over')) {
				$(this).removeClass('over');
				$(this).children('.dropdown-holder').addClass('hidden');
			}
            Cufon('#main-nav li a.main-link', {fontFamily: 'AvenirLT-Medium', hover: true});
		});

		$('#main-nav .dropdown ul li a').live('click', function () {
			$('#main-nav>ul>li').removeClass('over');
			$('#main-nav .dropdown-holder').addClass('hidden');
		});


	}
};
mainNav.init();


/**
* Sub Nav functionality across the website
*/
var subNav = {
	init:function() {
		// $('#subnav ul li.current').children('.sub-links').removeClass('hidden');
		$('#subnav li:last-child').addClass('last');
	}
};
subNav.init();


/**
* Toggle of Sub-Accounts Priviledge Lists
*/
var subAccountPriviledges = {
	init: function() {
		$('.sub-account-form .module .section .section-top').click(function() {
			if($(this).parent().hasClass('open')) {
				$(this).parent().removeClass('open');
				$(this).siblings('ul').addClass('hidden');
			} else {
				$(this).parent().addClass('open');
				$(this).siblings('ul').removeClass('hidden');
			}
			return false;
		})
	}
}
subAccountPriviledges.init();


/**
* To see extra events in one day on Calendar
*/
var moreEvents = {
    init:function()
    {
            $('a.main').click(function () {
		if($(this).hasClass('open')) {
			$(this).removeClass('open');
			$(this).parent().siblings('.dropdown').addClass('hidden');
		} else {
			$(' .dropdown').addClass('hidden');
			$('a').removeClass('open');
			$(this).addClass('open');
			$(this).parent().siblings('.dropdown').removeClass('hidden');
		}

		this.blur();
		return false;
	});
    }
};
 moreEvents.init();



/**
* Tabs class for all tab functionality across the website
*/
var tabNav = {
	init:function()
	{
		$(".tab-nav ul li.main span a:not(.link)").live('click', function(){
			var tab = $(this).parent().parent();

			tab.siblings(".current").trigger("close");//if some cleanup is needed the tab should have a close event defined
			tab.siblings(".current").removeClass("current");
			tab.addClass("current");
			tab.siblings('.static-tab').removeClass('open');
			tab.siblings('.static-tab').children('.tab-dropdown').addClass('hidden');
			tab.trigger("open");//tabs in different parts of the site should have this 'open' event defined

			// Content Swap
			tab.parent().parent().parent().find('.tab-content').addClass('offscreen');
			$('div' + $(this).attr('href')).removeClass('offscreen');
            Cufon.replace('.popular .tab-nav' , {
		fontFamily: 'AvenirLT-Roman', hover: true
	});

			return false;
		});

		tabNav.moreTab();
	},
	moreTab:function()
	{
		/** More Tab Functionality **/
		// Toggles class for dropdown of more tab links
		$(".tab-nav ul li.more-tab").live('click', function(){
			var targetTab	= $(this).siblings('.target');
			var dropdown 	= $(this).children().children().children('ul');
			// dropdown.children().removeClass('current');
			$(this).children('.tab-dropdown').toggleClass('hidden');
			$(this).toggleClass('open');
			return false;
		});

		// Swapping of the link in dropdown with last tab
		$(".tab-nav .tab-dropdown ul li a:not(.link)").bind('click',function(){
			var link		= $(this).parent().parent();
			var dropdown	= link.parent('ul');
			var staticTab	= dropdown.parent().parent().parent('.static-tab');
			var targetTab	= staticTab.siblings('.target');
			var targetLink	= targetTab.children().children();

			dropdown.children('.extra').children().children()
				.attr({title:targetLink.attr('title'), href:targetLink.attr('href')})
				.html(targetLink.html());
			dropdown.children().removeClass('extra hidden current');

			targetTab.children().children()
				.attr({title:$(this).attr('title'), href:$(this).attr('href')})
				.html($(this).html());

			link.addClass('hidden extra');
			staticTab.siblings('.current').removeClass('current');
			targetTab.addClass('current').trigger('open');

			dropdown.parent().parent('.tab-dropdown').addClass('hidden');
			staticTab.removeClass('open');

			// Content Swap
			staticTab.parent().parent().parent().find('.tab-content').addClass('offscreen');
			$('div' + $(this).attr('href')).removeClass('offscreen');

			return false;
		});

		tabNav.clickOutside();
	},
	clickOutside:function()
	{
		// Hide the dropdown when clicked outside of it (used in conjunction with clickoutside plugin)
		$('.tab-nav .static-tab').bind( "clickoutside", function(event){
			$(this).removeClass('open').children('.tab-dropdown').addClass('hidden');
		});
	}
};
tabNav.init();


/**
* Main Nav functionality across the website
*/
var listToggle = {
	init:function() {

		var listLI = $('#content ul.toggle-list li, #content ol.toggle-list li');

		listLI.live('click', function () {
			//$(this).siblings().children('ul').addClass('offscreen'); -- uncomment if on click of li prev open li should close
			if ($(this).children('ul, ol').hasClass('offscreen')) {
				$(this).addClass('current');
				$(this).children('ul, ol').removeClass('offscreen');
			} else {
				$(this).removeClass('current');
				$(this).children('ul, ol').addClass('offscreen');
				$(this).children('ul, ol').children('li').children('ul, ol').addClass('offscreen'); // add class offscreen to level 2 nested lists when parent li is closed
			}
			return false;
		});

	}
};
listToggle.init();



/**
* Pagination - Initializes pagination across the entire website
*/
var pagination = {
	init:function()
	{
            $('ul.pagination li.link-next a:not(.link)').click(function(){pagination.getPage($(this)); return false;});
			$('li.page a').click(function(){pagination.getPage($(this)); return false;});
            $('ul.pagination li.link-prev a:not(.link)').click(function(){pagination.getPage($(this)); return false;});
            $('ul.footer-links li a.link-seeall:not(.link)').click(function(){pagination.getPage($(this)); return false;});
    },
    getPage:function(anchor)
	{
	    var resultDiv = anchor.parents(".result-div");
	    // Showing and Hiding Div with ID of a href
	    var myHeight=resultDiv.height();
	    var myWidth=resultDiv.width();
	    var loadDivHTML = '<div class="loading" style="height:'+myHeight+'px; width:'+myWidth+'px;"></div>';

	    resultDiv.html(loadDivHTML);

	    $.ajax({
			url:anchor.attr("href"),
			success:function(result)
			{
			      resultDiv.html(result);
			      pagination.init();
			},
			error:function(XMLHttpRequest,textStatus,error)
			{
			      //handle error
			}
		  });
		return false;
	}
};





// Ajaxize
var ajaxCallSamples = {
	init: function() {
		// Simple ajax call
		$('.ajaxtrigger').click(function(){
			var url = $(this).attr('href');
			var resultDiv = $(this).attr('rel'); // ajax trigger has rel tag with unique
			$('#target').load(url);
			return false;
		});

		// Ajax call with loading image
		var container = $('#target');
		$('.ajaxtrigger').click(function(){
			doAjax($(this).attr('href'));
			return false;
		});
		function doAjax(url){
			$.ajax({
			url: url,
			success: function(data){
				container.html(data);
			},
			beforeSend: function(data){
				container.html('<div class="ajax-loader"><img src="../imgs/icons/ajax-loader.gif" alt="Loading..." /></div>');
			}
			});
		}

		// Ajax call with loading image and error handling + hightligh effect on content change
		var container = $('#target');
		$('.ajaxtrigger').click(function(){
			doAjax($(this).attr('href'));
			return false;
		});
		function doAjax(url){
			if(url.match('^http')){
				var errormsg = 'Ajax cannot load external content';
				container.html(errormsg).effect('highlight',{color:'#ff9966'}, 1000); // highlight effect to show error (fades in/out in 1 second)
			} else {
			$.ajax({
				url: url,
				timeout:5000,
				success: function(data){
		 			container.html(data).effect("highlight",{color:'#ffffcc'},1000); // highlight effect to show sucess (fades in/out in 1 second)
				},
				error: function(req,error){
					if(error === 'error'){error = req.statusText;}
		  				var errormsg = 'There was a communication error: '+error;
		  				container.html(errormsg).effect('highlight',{color:'#ff9966'},1000); // highlight effect to show error (fades in/out in 1 second)
				},
				beforeSend: function(data){
		 			container.html('<div class="ajax-loader"><img src="../imgs/icons/ajax-loader.gif" alt="Loading..." /></div>');
				}
			});
			}
		}


	}
};


// Image Gallery

// Content Slider

// Carousel

// Accordion

// Table Sorter

// Global Popup

// Global Alert

// Datepicker



/**
* Star Rating - Initialization/Extension of jquery-ui-stars.js
*/
var starRating = {
	init: function() {
		starRating.simpleRating();
		starRating.captionRating();
		starRating.insideFormRating();
	},
	simpleRating: function() {
		$("#ratings-radio").children().not(":radio").hide();
		$("#ratings-radio").stars({
			callback: function(ui, type, value)
			{
				$.post("../includes/misc/star-rate.php", {rate: value}, function(data)
				{
					$("#ajax_response").html(data);
				});
			}
		});
	},
	captionRating: function() {
		$("#ratings-select").children().not("select").hide();

		// Create target element for onHover titles
		$caption = $("<span/>");

		$("#ratings-select").stars({
			inputType: "select",
			captionEl: $caption, // point to our newly created element
			callback: function(ui, type, value)
			{
				$.post("demo2.php", {rate: value}, function(data)
				{
					$("#ajax_response").html(data);
				});
			}

		});

		// Make it available in DOM tree
		$caption.appendTo("#ratings-select");
	},
	insideFormRating: function() {
		$("#starify").children().not(":input").hide();

		// Create stars from :radio boxes
		$("#starify").stars({
			cancelShow: false //uncomment to show cancel rating option
		});
	}
};
starRating.init();





/**
* Custom Tooltip - Initialization/Extension of custom-tooltip.js
*/
var customTooltip = {
	init: function() {
		var tooltipTrigger = $('a.tooltip, span.tooltip, p.tooltip');

		tooltipTrigger.mouseover(function () {
			var title = $(this).attr('title');
			tooltip.show(title);
			$(this).attr('title' , '');
		});

		tooltipTrigger.mouseout(function() {
			var title = $('#tt #ttcont').html();
			tooltip.hide();
			$(this).attr('title', title);
		})
	}
};
customTooltip.init();



/**
* Registration Form - type of user toggle
*/
var registrationUserType = {
	init: function() {
		var trigger = $('#register-form #user-type-trigger .set').children('input[checked]').val();

		$('.user-type-form').addClass('hidden');
		$('div#' + trigger).removeClass('hidden');


		$('#register-form #user-type-trigger .set').each(function() {
			$(this).click(function() {
				var trigger = $(this).children('input').val();

				$('.user-type-form').addClass('hidden');
				$('div#' + trigger).removeClass('hidden');
			});

		});
	}
}
//registrationUserType.init();

var courseLauncher = {
    init: function() {
        // Launch all course links in a popup
        $('a.course-launch').live('click',function(){
            window.open($(this).attr('href'),'Luxottica Course','top=0,left=0,height=768,width=1018,resizable=no,scrollbars=false');
            return false;
        });
    }
}
courseLauncher.init();

// End JS
