var w;
var marginTop;

Number.prototype.format=function(decimalPoints,thousandsSep,decimalSep){
	 var val=this+'',re=/^(-?)(\d+)/,x,y;
	 if (decimalPoints!=null) val = this.toFixed(decimalPoints);
	 if (thousandsSep && (x=re.exec(val))) {
			 for (var a=x[2].split(''),i=a.length-3;i>0;i-=3) a.splice(i,0,thousandsSep);
			 val=val.replace(re,x[1]+a.join(''));
	 }
	 if (decimalSep) val=val.replace(/\./,decimalSep);
	 return val;
};

if (typeof Number.prototype.toFixed!='function' || (.9).toFixed()=='0' || (.007).toFixed(2)=='0.00') Number.prototype.toFixed=function(f){
	if (isNaN(f*=1) || f<0 || f>20) f=0;
	var s='',x=this.valueOf(),m='';
	if (this<0){ s='-'; x*=-1; }
	if (x>=Math.pow(10,21)) m=x.toString();
	else{
	 m=Math.round(Math.pow(10,f)*x).toString();
	 if (f!=0){
		var k=m.length;
		if (k<=f){
		 var z='00000000000000000000'.substring(0,f+1-k);
		 m=z+m;
		 k=f+1;
		}
		var a = m.substring(0,k-f);
		var b = m.substring(k-f);
		m = a+'.'+b;
	 }
	}
	if (m=='0') s='';
	return s+m;
};

function initShowcase() {
	if ($("#showcase").length == 0) return false;

	$("#showcase").awShowcase({
		content_width: 1211,
		content_height: 695,
		fit_to_parent: false,
		dynamic_height: true,
		auto: true,
		transition: "fade",
		interval: 10000,
		continuous: true
	});
	$('#showcase .showcase-button-wrapper').wrap('<div class="container" />');
	
	$(window).resize(function() {
		$('#showcase .showcase-content-container, #showcase .showcase-content').height($('#showcase').height());
	});
}

function initConfigurator() {
	if ($('#frm-configurator').length == 0) return false;
	prices = {
		product: 0,
		hardware: 0,
		packages: 0,
		carte: 0
	};
	$('#configurator-tabs').tabs();
	
	var magazine_img = [
		'/pub/images/fluid/img-magazine1.jpg',
		'/pub/images/fluid/img-magazine2.jpg',
		'/pub/images/fluid/img-magazine3.jpg',
	];
	$('#catalog-products li.magazine .photo img').iskip({images:magazine_img, method:'mousemove', 'cycle': 1});
	
	var catalog_img = [
	'/pub/images/fluid/img-catalog1.jpg',
	'/pub/images/fluid/img-catalog2.jpg',
	'/pub/images/fluid/img-catalog3.jpg',
	'/pub/images/fluid/img-catalog4.jpg',
	'/pub/images/fluid/img-catalog5.jpg',
	];
	$('#catalog-products li.catalog .photo img').iskip({images:catalog_img, method:'mousemove', 'cycle': 1});

	var directory_img = [
		'/pub/images/fluid/img-directory0.jpg',
		'/pub/images/fluid/img-directory1.jpg',
		'/pub/images/fluid/img-directory2.jpg',
		'/pub/images/fluid/img-directory3.jpg',
	];
	$('#catalog-products li.directory .photo img').iskip({images:directory_img, method:'mousemove', 'cycle': 1});
	
	checkProducts();
	checkCheckboxes();
	
	if ($('#configurator-tabs ul.errorlist').length > 0) {
		var active = $('#configurator-tabs ul.errorlist').first().closest('div.ui-tabs-panel').index();
		$('#configurator-tabs').tabs("select", active-1);
	}
	
	var latlng = new google.maps.LatLng(45.535153,-122.668362);
	var myOptions = {
		zoom: 10,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	var map = new google.maps.Map(document.getElementById("catalog-map"), myOptions);
	
	$('#configurator-tabs').bind('tabsshow', function(event, ui) {
		if (ui.panel.id == "request-quote") {
			google.maps.event.trigger(map, 'resize');
			map.setZoom( map.getZoom() );
		}
	});
	$('#configurator-tabs').bind('tabsselect', function(event, ui) {
		$('#fixed-price').css({
			position: 'relative',
			top: 0,
			left: 0
		});
	});
	
	$('#catalog-products a.choose').click(function() {
		$('#id_product').val($(this).attr('rel'));
		checkProducts();
		return false;
	});

	$('#catalog-packages td.action a').click(function() {
		if ($('#id_package').val() == $(this).attr('rel')) {
			$('#id_package').val('');
		} else {
			$('#id_package').val($(this).attr('rel'));
		}
		checkProducts();
		return false;
	});
	
	$('#catalog-hardware td.photo a').click(function() {
		$('#hardware-photo').attr('src', $(this).attr('href'));
		return false;
	});
	$('#catalog-packages td.photo a').click(function() {
		$('#packages-photo').attr('src', $(this).attr('href'));
		return false;
	});
	$('#catalog-carte td.photo a').click(function() {
		$('#carte-photo').attr('src', $(this).attr('href'));
		return false;
	});

	$('#catalog-hardware td.action a, #catalog-carte td.action a.add').click(function() {
		var checkbox = $('#id_'+$(this).attr('rel'));
		checkbox.attr('checked', !checkbox.attr('checked') ); 
		checkCheckboxes();
		return false;
	});

	$('#catalog-carte td.action a.increase').click(function() {
		var input = $('#id_'+$(this).attr('rel'));
		if (isNaN(input.val())) {
			input.val(0);
		}
		input.val(parseInt(input.val())+1); 
		checkCheckboxes();
		return false;
	});
	$('#catalog-carte td.action a.decrease').click(function() {
		var input = $('#id_'+$(this).attr('rel'));
		if (isNaN(input.val())) {
			input.val(0);
		}
		var val = parseInt(input.val());
		if (val > 0)
			input.val(val-1); 
		checkCheckboxes();
		return false;
	});

	$('#configurator-tabs a.continue').click(function() {
		$('#configurator-tabs').tabs('select', $('#configurator-tabs').tabs('option', 'selected')+1);
		return false;
	});
}

function initFixedPrice() {
	w = $('.price-col');
	marginTop = $('.price-col').offset().top;
	
	$('#fixed-price').css({
		width: w.width()
	});
	$(window).scroll(function() { positionPrice(w, marginTop); });
	$(window).resize(function() {
		marginTop = $('.price-col').offset().top;
		$('#fixed-price').css({
			width: $('.price-col').width()
		});

		positionPrice( $('.price-col'), $('.price-col').offset().top);

		if ($('#fixed-price').css('position') == 'fixed') {
			$('#fixed-price').css({
				width: $('.price-col').width(),
				left: $('.price-col').offset().left
			});
		}

	});
	
	positionPrice(w, marginTop);
}

function isiPad(){
	return (navigator.platform.indexOf("iPad") != -1);
}
function positionPrice(w, marginTop) {
	var scrollTop = $(window).scrollTop();
	var positioning = $('#fixed-price').css('position');
	
	if ($(window).width() < 767) {
		$('#fixed-price').css({
			position: 'relative',
			top: 0,
			left: 0
		});
		return;
	}
	
	if (isiPad()) {
		if (scrollTop > marginTop-10) {
			$('#fixed-price').css({
				position: 'absolute',
				left: 0
			});
			$('#fixed-price').stop().animate({
				top: (scrollTop-marginTop+10)+'px',
				left: 0
			}, 500);
		} else {
			$('#fixed-price').css({
				position: 'relative',
				left: 0
			});
			$('#fixed-price').stop().animate({
				top: 0
			}, 500);
		}
	} else {
		if (positioning == 'relative' && scrollTop > marginTop-10) {
			$('#fixed-price').css({
				position: 'fixed',
				top: '10px',
				left: w.offset().left
			});
		} else if (scrollTop <= marginTop-10 && positioning == 'fixed') {
			$('#fixed-price').css({
				position: 'relative',
				top: 0,
				left: 0
			});
		}
	}
}

var prices;
var counterTimer;
var counterEnd = 0;
var counterCurrent = 0

function countTotal(curr) {
	counterCurrent = curr;
	counterEnd = prices['product']+prices['hardware']+prices['packages']+prices['carte'];

	val = counterCurrent;

	if (counterEnd > counterCurrent) {
		val = counterCurrent+(Math.ceil((counterEnd-counterCurrent)/5));
	} else if (counterEnd < counterCurrent) {
		val = counterCurrent-(Math.ceil((counterCurrent-counterEnd)/5));
	}
	
	$('#total, #total-price').text('$'+val.format(0, ',', '.'));
	
	if (counterEnd != counterCurrent)
		setTimeout("countTotal("+val+")", 20);
}

function updatePrices() {
	var total = prices['product']+prices['hardware']+prices['packages']+prices['carte'];
	var curr = parseInt($('#total').text().replace('$', '').replace('.00', '').replace(',', ''));
	countTotal(curr);
//	$('#total-price').text('$'+total.format(0, ',', '.'));
	$('#price-application').text('$'+prices['product'].format(0, ',', '.'));
	$('#price-hardware').text('$'+prices['hardware'].format(0, ',', '.'));
	$('#price-packages').text('$'+prices['packages'].format(0, ',', '.'));
	$('#price-carte').text('$'+prices['carte'].format(0, ',', '.'));
}

function checkCheckboxes() {
	prices['hardware'] = prices['carte'] = 0;
	$('#hardware input[type=checkbox], #carte input[type=checkbox]').each(function() {
		var checkbox = $(this);
		if (checkbox.attr('checked')) {
			$('td.action a.add[rel='+checkbox.attr('name')+']').text('REMOVE');
			var parentDiv = checkbox.closest('.ui-tabs-panel');
			prices[parentDiv.attr('id')] += parseInt($('input#price_'+checkbox.attr('name')).val());
		} else {
			$('td.action a.add[rel='+checkbox.attr('name')+']').text('ADD');
		}
	});
	$('#carte input[type=text]').each(function() {
		var input = $(this);
		prices['carte'] += parseInt($('input#price_'+input.attr('name')).val()*parseInt(input.val()));
		
	});
	updatePrices();
}

function checkProducts() {
	prices['product'] = 0
	$('#catalog-products li').removeClass('active');
	if ($('#id_product').val() != "") {
		$('#catalog-products li.'+$('#id_product').val()).addClass('active');
		prices['product'] = parseInt($('input#price_'+$('#id_product').val()).val());
	}
	
	prices['packages'] = 0
	$('#catalog-packages tr').removeClass('active');
	if ($('#id_package').val() != "") {
		$('#catalog-packages tr.'+$('#id_package').val()).addClass('active');
		prices['packages'] = parseInt($('input#price_'+$('#id_package').val()).val());
	}
	updatePrices();
}

function initIEclasses() {
	if (!$.browser.msie) return false;
	
	if ($.browser.version < 8)
		$('section > ul > li').css({'display': 'inline'});
		
	$('.helena > ul > li:nth-child(2n), .cascadia > ul > li:nth-child(2n), .clancy > ul > li:nth-child(2n), .lolo > ul > li:nth-child(2n)').addClass('second');
	$('.clancy > ul > li:nth-child(3n), .darby > ul > li:nth-child(3n), .denton > ul > li:nth-child(3n), .cascadia > ul > li:nth-child(3n)').addClass('third');
	$('.lolo > ul > li:nth-child(4n), .cascadia > ul > li:nth-child(4n)').addClass('fourth');
	$('.col:last-child, section > ul > li:last-child').addClass('last');
	$('section > ul > li:first-child').addClass('first');
}

function initSublime() {
	$('a.zoomvideo.sublimed').prepend("<span class=\"overlay\"></span><span class=\"play\"></span>");
	$('a.zoomvideo.sublimed').hover(function() {
		$(this).find('span.overlay').stop().animate({opacity: 0}, 200);
	}, function() {
		$(this).find('span.overlay').stop().animate({opacity: 1}, 200);
	});
}

$(document).ready(function() {
	initShowcase();
	initConfigurator();
});
$(window).load(function() {
	initIEclasses();
	initFixedPrice();
	// initSublime();
});

