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();
		
		$(document).pngFix();
		
		$("input.hint, textarea.hint").hint();
		
		Init.Contact("#contactForm");
		
		$("div.videoFlash").each(function() {
			
			$(this).flash({ 'src' : $(this).attr("rel"), width : $(this).width(), height: $(this).height() });
			
		});
		
		Init.Poll("#poll");
		
		if(App.ie6) {
			$("#content-bg").height($("#content").height());
		}
		
	},
	
	'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);

/*********************************************
*
* Quick Init
*
**********************************************/

Init.Poll =  function(selector) {
	
	var $el = $(selector);
	if(!$el.length) { return; }
	
	function postAnswer(value) {
		$.post("/ajax/poll.json","polid="+$el.attr("rel")+"&value="+escape(value),function(data) {
			
			if(!data.error) {
				$el.find(".answer").after("<div class='success'>Merci!</div>");	
				$el.find(".answer").remove();
				$.cookie('poll_'+$el.attr("rel"), 'true', { expires: 365, path: '/' });
			}
			
		},"json");
	}
	
	$el.find(".answer .yes").click(function(e) {
		
		e.preventDefault();
		
		if($.cookie('poll_'+$el.attr("rel")) == null) { postAnswer("yes"); }
		else { $el.find(".answer").after("<div class='error'>Vous avez déjà voté</div>");	
				$el.find(".answer").remove(); }
	});
	
	$el.find(".answer .no").click(function(e) {
		
		e.preventDefault();
		
		if($.cookie('poll_'+$el.attr("rel")) == null) { postAnswer("no"); }
		else { $el.find(".answer").after("<div class='error'>Vous avez déjà voté</div>");	
				$el.find(".answer").remove(); }
		
	});
	
};

Init.Contact = function(selector) {
	
	var el = $(selector);
	if(!el.length) { return; }
	
	el.find("form").submit(function(e) {
		e.preventDefault();
		var form = $(this);
		el.find("div.success").remove();
		el.find("div.error").remove();
		if(form.validate()) {
			form.block(Options.block_contact);
			$.post("/"+App.lang+"/contact.json",form.serialize(),function(data) {
				form.unblock();
				if(!data.error && data.success) {
					if(App.Stats && App.Stats.event) { App.Stats.event("Contact", "Write", form.find("input[name=email]").val()); }
					el.find("form").before("<div class='success' style='cursor:pointer;'>"+data.msg+"</div>");
					el.find(".success").click(function() { el.find(".success").remove(); });
					form.find("textarea[name=message]").val("");
					form.find("input[type=text]").each(function() {
						$(this).val($(this).attr("title")).addClass("hasHint");
					});
				} else {
					el.find("form").before("<div class='error'>"+data.error+"</div>");
				}
			}, "json");
		}
	});

};

/*********************************************
*
* 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 = {

	

};

/*********************************************
*
* 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;

	}
};
