function getPicSize(){
	return {'w': 1920, 'h': 1040};
}
function getWndSize(){
	return {'w': $(window).width(), 'h': $(window).height()-63}; // deduct 60px and 3px to accomodate the footer and preloader height
}
function init(){
	$('.index', $('#stage')).slider({'cycle':6000});
	$('.product', $('#stage')).slider({
		'cycle':6000,
		'showDesc':false
	});
	$('.qsquare', $('#tab-container')).slider({
		'cycle':6000,
		'showNav':false,
		'sliderClass':'slider-small',
		'width': 500,
		'height': 280
	});
	$('.news, .about-us', $('#stage')).slider({'showNav':false});
	$('.contentwrap a.ajax', $('#stage')).click(function(){
		$('#stage').pageLoader().data('pageloader').loadURL($(this).attr('href'));
		return false;
	});
	$('a', $('#brand-info')).click(function(){
		if ($(this).hasClass('hide')){
			$('#brand-info').slideUp(250);
			showSliderDetails();
			return false;
		}
		var className = $(this).attr('rel').toLowerCase();
		markBackgroundAsActive(className);
		$('ul.nav', $('#menu')).slideUp(250);
		if ($(this).hasClass('selected')) return false;
		updateTitle($(this).attr('title'));
		$('#stage').pageLoader().data('pageloader').loadURL($(this).attr('href'));
		return false;
	});
	var pageTabs = $('ul.page-tabs', $('#stage'));
	if (pageTabs.size())
	{
		$('a', pageTabs).click(function(){
			if ($(this).hasClass('close')){
				markBackgroundAsActive('index');
				clearSelected();
				$('#stage').pageLoader().data('pageloader').loadURL('index.php');
				updateTitle($(this).attr('title'));
				return false;
			}
			if (!$(this).hasClass('selected'))
			{
				var tabContainer = $('#tab-container');
				var newMargin = 0;
				var newSlide = 1;
				
				$('a', pageTabs).removeClass('selected');
				$(this).addClass('selected');
				markBackgroundAsActive($(this).attr('rel'));
				if (tabContainer.length){
					if ($(this).hasClass('qsquare')){
						newMargin = 0;
						newSlide = 1;
					}
					else if ($(this).hasClass('showroom')){
						newMargin = -560;
						newSlide = 2;
					}
					else if ($(this).hasClass('enquiry')){
						newMargin = -1120;
						newSlide = 3;
					}
					tabContainer.animate({'margin-left': newMargin}, {'duration':1000,'easing':'easeInOutQuart'});
					$('.contentwrap', $('#stage')).data('slider').moveToSlide(newSlide);
				}
				updateTitle($(this).attr('title'));
			}
			return false;
		});
		//$('select#country').selectmenu();
	}
	resizeElms(getWndSize());
}
function resize(){
	var wndSize = getWndSize();
	var oldSize = {'w': $('.contentwrap').width(), 'h': $('.contentwrap').height()};
	$('.slider').css('margin-left', function(i,v){
		return parseInt(v)/oldSize.w*wndSize.w;
	}).width(function(i,v){
		var s = v/oldSize.w;
		return s*wndSize.w;
	})
	resizeElms(wndSize);
	return false;
}
function resizeElms(s) {
	var screenRatio = s.w/s.h;
	var picSize = getPicSize();
	picRatio = picSize.w/picSize.h;
	if (screenRatio>picRatio){
		var nw = s.w;
		var nh = s.w/picSize.w*picSize.h;
	} else {
		var nw = s.h/picSize.h*picSize.w;
		var nh = s.h;
	}
	var newTop = 0 - ((nh-s.h) / 2);
	var newLeft =  0 - ((nw-s.w) / 2);
	$('#stage, .contentwrap, .contentwrap ul.slider li', $('#wrap')).css('width',s.w).css('height',s.h);
	$('.background img, .contentwrap ul.slider img', $('#wrap')).css('width',nw).css('height',nh).css('top',newTop).css('left',newLeft);
}
(function($){
	var PageLoader = function(element, options){
		var defaults = {
			'url': undefined
		};
		var options = $.extend(defaults, options);
		var elem = $(element);
		var request = null;
		var preloads = 0;
		var trigger = function(){
			if (--preloads>0) return false;
			$('#preloader').trigger('preload.complete');
			elem.trigger('preload.complete');
		};
		var preload = function(imgs){
			preloads++;
			if (!$('.loaded', $('#preloader')).length) $('<div/>').addClass('loaded').width('0').appendTo('#preloader');
			if (imgs.length>0){
				imgs.preloadImages({
					'each': function() {
						$('.loaded', $('#preloader')).width(function(i, v){
							var preloaderWidth = $('#preloader').width();
							v+= preloaderWidth/$('img', elem).length;
							if (v>preloaderWidth) v = preloaderWidth;
							return v;
						});
					},
					'all': function() {
						trigger();
					}
				});
					
			} else trigger();
		};
		var processResult = function(resp){
			request = null;
			var slider = $('.contentwrap', elem).data('slider');
			if (slider) slider.stop();
				
			$(elem).prepend(resp);
			
			$('.page-scroll', elem).fadeIn(250).css('overflow', 'hidden');
			$('.contentwrap:first', elem).hide();
				
			preload($('.contentwrap:first img', elem));
		};
		var donePreloading = function(){
			var numStages = $('.contentwrap', elem).length;
			init();
			$('#background').fadeIn(1000);
			$('.contentwrap', elem).fadeIn(1000, function(){
				$('.page-scroll,.tab-contentainer', elem).jScrollPane();
			});
			$('#brand-info', elem).slideDown(250);
			return false;
		};
		this.preload = preload;
		this.loadURL = function(url){
			if (request) request.abort();
			$('.contentwrap', elem).fadeOut(1000, function(){
				$(this).remove();
			});
			$.get(url, processResult);
		};
		
		elem.bind('preload.complete', donePreloading);
	};
	$.fn.pageLoader = function(options){
		return this.each(function(){
			var element = $(this);
			if (element.data('pageloader')) return;
			var pageloader = new PageLoader(this, options);
			element.data('pageloader', pageloader);
		});
	};
})(jQuery);
function updateTitle(pageName){
	document.title = pageName+' | QSquare by Marquis';
}
function clearSelected(){
	$('li', $('#brands')).removeClass('selected'); // bottom brand logos
	$('ul.nav a', $('#menu')).removeClass('selected'); // menu
	$('div.location a', $('#footer')).removeClass('selected'); // footer address
}
function markBackgroundAsActive(className){
	if (!$('div.'+className).hasClass('active')){
		$('div.active', $('#background')).addClass('previous').removeClass('active').fadeOut(1000, function(){ $(this).removeClass('previous') });
		$('div.'+className).addClass('active').css('display', 'block');
	}
}
function showSliderDetails(){
	$('.contentwrap', $('#stage')).data('slider').showDetails();
}
function hideSliderDetails(){
	$('.contentwrap', $('#stage')).data('slider').hideDetails();
}
function toggleSliderDetails(){
	$('.contentwrap', $('#stage')).data('slider').toggleDetails();
}
$(document).ready(function(){
	var main = $('<div/>').attr('id', 'preloader').appendTo('#wrap');
	$('#preloader').ajaxStart(function(){
		$('.loaded', $(this)).css({'bottom': 0, 'width': 0});
	}).ajaxError(function(){
		$(this).hide();
	}).bind('preload.complete', function(){
		$('.loaded', $(this)).animate({'bottom':'-3'}, {
			'duration': 100,
			'complete': function(){
				$(this).width(0);
			}
		})
	}).show();
	$('#menu>a').click(function(){
		$('ul.nav', $('#menu')).slideToggle(250);
		$('#brand-info').slideUp(250);
		showSliderDetails();
		return false;
	})
	$('#menu ul.nav a, #footer>div>a', $('#wrap')).click(function(){
		$('ul.nav', $('#menu')).slideUp(250);
		$('#brand-info').slideUp(250);
		showSliderDetails();
		if ($(this).hasClass('selected')) return false;
		clearSelected();
		$(this).addClass('selected');
		markBackgroundAsActive($(this).attr('rel'));
		updateTitle($(this).attr('title'));
		$('#stage').pageLoader().data('pageloader').loadURL($(this).attr('href'));
		return false;
	});
	$('a:not(.noajax)', $('#brands')).click(function(){
		$('ul.nav', $('#menu')).slideUp(250);
		if ($(this).parent('li').hasClass('selected')){
			toggleSliderDetails();
			return false; // skip below if user clicks on an active brand
		}
		var className = $(this).attr('rel').toLowerCase();
		markBackgroundAsActive(className);
		clearSelected();
		$(this).parent('li').addClass('selected');
		updateTitle($(this).attr('title'));
		$('#stage').pageLoader().data('pageloader').loadURL($(this).attr('href'));
		return false;
	});
	$('.contentwrap', $('#stage')).hide();
	$('#stage').click(function(){
		$('#brand-info').slideUp(250);
		$('ul.nav', $('#menu')).slideUp(250);
		showSliderDetails();
	}).pageLoader().data('pageloader').preload($('img', $('#stage')));
});
$(window).resize(resize);
