var App; if (!App) App = {};
var Init; if (!Init) Init = {};
var Options; if (!Options) Options = {};


App = {
	
	'Stats' : null,
	'ie' : false,
	'ieVersion' : 0,
	'ie6' : false,
	'ie7' : false,
	'ie8' : false,

	'init' : function() {
		
		App.detectIE();
		
		$("input.hint, textarea.hint").hint();
		$('textarea.rich').ckeditor(Options.ckeditor);
		
		$("div.category, div.item").fadeTo(1,0.9);
		
		$(".png").pngFix();
		
		if(App.Init) {
			if(App.Init.Forms) {
				App.Init.Forms.Contact("form.contact");
			}
			$("a.preview").each(function() {
				if($(this).attr("rel")) {
					App.Init.ImagePreview($(this));
				}
			});
			new App.Init.DropDownMenu("ul#menu");
		}
		
		
		if(App.UI) {
			App.UI.Datepicker("input.datepicker");
			var i = 6;
			$(".carousel").each(function() {
				var $carousel = $(this);
				window.setTimeout(function() {
					new App.UI.Carousel($carousel,{
						'delay' : 5000		  
					});
				},250*Math.floor(Math.random()*i));
				i++;
			});
		}
		
		$("a.video").each(function() {
			$(this).click(function(e) { e.preventDefault(); });
			$(this).flash({
				src : '/statics/videos/promo.swf',
				width:670,
				height:490,
				wmode:'transparent'
			});
			
		});
		
		$("img.rollover").each(function() {
			
			//var img = new Image($(this).attr("rel"));
			
			$(this).parents("a").mouseover(function() {
				var $img = $(this).find("img.rollover");
				var originalSrc = $img.attr("src");
				$img.attr("src",$img.attr("rel"));
				$img.attr("rel",originalSrc);
				$img.attr("width",110);
				$img.attr("height",110);
			});
			
			$(this).parents("a").mouseout(function() {
				var $img = $(this).find("img.rollover");
				var originalSrc = $img.attr("src");
				$img.attr("src",$img.attr("rel"));
				$img.attr("rel",originalSrc);
				$img.attr("width",100);
				$img.attr("height",100);
			});
		});
		
		new App.UI.Gmap(".gmap");
		
		$("table.prices td.price").mouseover(function() {
			$("table.prices td.price").removeClass("hover");
			var columnIndex = $(this).parents("tr").find("td").index($(this))-1;
			var rowIndex = $("table.prices tr").index($(this).parents("tr"));
			var prevHeader = $("table.prices tr").index($(this).parents("tr").prevAll(".header").eq(0));
			//console.log(prevHeader);
			for(var i = prevHeader; i < rowIndex; i++) {
				//console.log(i);
				$("table.prices tr").eq(i).find("td.price").eq(columnIndex).addClass("hover");
			}
		});
		$("table.prices").mouseout(function() {
			$("table.prices td.price").removeClass("hover");		  
		});
		
	},
	
	'detectIE' : function() {
		if ($.browser.msie) {
			App.ie = true;
			App.ieVersion = parseInt($.browser.version.substr(0,1));
			if(App.ieVersion == 6) { App.ie6 = true; }
			if(App.ieVersion == 7) { App.ie7 = true; }
			if(App.ieVersion == 8) { App.ie8 = true; }
		}
	}
	
};

$(App.init);

/*********************************************
*
* Google Analytics Object
*
**********************************************/


Analytics = function(account) {

	var self = this;
	
	try {
		self.tracker = _gat._getTracker(account);
		self.tracker._setDomainName("none");
		self.tracker._setAllowLinker(true);
		self.account = account;
	} catch(err) {}
	
};

Analytics.prototype.tracker = null;
Analytics.prototype.account = null;

Analytics.prototype.setVar = function(visitor) {
	if(!this.tracker) { return; }
	try {
	
		this.tracker._setVar(visitor);
		
	} catch(err) {}
};

Analytics.prototype.track = function(page) {
	if(!this.tracker) { return; }
	try {
	
		if(!page) { this.tracker._trackPageview(); }
		else{ this.tracker._trackPageview(page); }
		
	} catch(err) {}
};

Analytics.prototype.event = function(cat,action,label) {
	if(!this.tracker) { return; }
	try {
	
		this.tracker._trackEvent(cat, action, label);
		
	} catch(err) {}
};

/*********************************************
*
* Common options
*
**********************************************/

Options = {

	'datepicker' : {
		buttonImageOnly: true,
		buttonImage: "/statics/icons/date.png",
		showOn: "both",
		dateFormat: 'yy-mm-dd',
		changeYear: true,
		changeMonth: true,
		showOtherMonths: true,
		constrainInput: true,
		yearRange: '-3:+50',
		dayNames: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
		dayNamesMin: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'],
		dayNamesShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
		monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Juin','Juil','Aoû','Sep','Oct','Nov','Déc'],
		appendText: "(AAAA-MM-JJ)"
	}

};

/*********************************************
*
* Templates
*
**********************************************/

Templates = {

	"render" : function(text,values) {
		var re_cache = {};
		var tmpl = text.replace(/%7B/ig,'{').replace(/%7D/ig,'}');
		$.each(values, function(k,v) {
			tmpl = tmpl.replace( new RegExp('{'+k+'}', 'gm'), v );	
		});
		
		return tmpl;

	}
};
