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);
		
		if(App.Init) {
			if(App.Init.Forms) {
				App.Init.Forms.Contact("form.contact");
			}
		}
		
		if(App.UI) {
			App.UI.Datepicker("input.datepicker");
		}
		
		$('#send-comment').click(function(e){
			$.post("/"+App.lang+"/actions/comment.html", $("#comment-form").serialize(), function(data){
				var comment = '<li id="'+data.xid+'">';
			       comment +='<div class="block">';
				   comment += '<div class="top"><span class="author">';
				   comment += data.name+'</span>';
				   comment += '- <span class="time">'+data.published+' ';
				   comment += data.timeFormat+'</span></div>';
                   comment += '<div class="text">'+data.text+'</div>';
                   comment += '<div class="links"><span class="small"><!--<a href="#" class="reply">Répondre</a> - <a href="#" class="abuse">Signaler un abus</a>--></span></div>';
				   comment += '</div>';
				   comment += '<div class="clear"></div>';   
				   comment += '</li>';
				$('.list ul').append(comment);
				$('li.noresult').hide();
				$('textarea.hint').val('');
				$('input.hint').val('');
				$('div.write').prepend('<p class="success">'+data.confirm+'</p>');
				$('div.write p.success').animate({opacity: 1.0}, 3000).fadeOut('slow');
			}, "json");
			e.preventDefault();
			
		});	

		Init.Newsletter("form.newsletter");
		
		if ($("#map_canvas").length) { 
		$(window).unload(function(e) { GUnload(); }) 
		$(window).load(function(e) { initialize_gmap(); }) 
		
	}
		
	},
	
	'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 MAP API
   function initialize_gmap() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(45.500379,-73.558183), 16);
        map.setUIToDefault();
		
		var point = new GLatLng(45.500379,-73.558183);
		map.addOverlay(new GMarker(point));
		
		map.openInfoWindowHtml(map.getCenter(), "<b>Clusier Habilleur</b><br>432 McGill,<br>Montreal, QC, Canada<br><br><a target='_blank' href='http://maps.google.ca/maps?f=q&amp;source=s_q&amp;hl=fr&amp;geocode=&amp;q=432+mcGill,+Montr%C3%A9al&amp;sll=49.891235,-97.15369&amp;sspn=28.566961,78.75&amp;ie=UTF8&amp;ll=45.501023,-73.558059&amp;spn=0.007565,0.019226&amp;z=16&amp;iwloc=A'><?= T('carte')?></a>");

      }
    }

Init.Newsletter = function(selector,options) {

	var $el = jQuery(selector);
	if(!$el.length) { return; }
	
	var $form = $el;
	
	$form.submit(function(e) {
		e.preventDefault();
		$form.find("div.error, div.success").remove();
		
		var params = $form.serialize();
		var email = $form.find("input[name=email]").val();
		
		$form.find("input[name=email]").val((App.lang == "fr") ? "Chargement...":"Loading...").addClass("hasHint").attr("disabled","disabled");
		
		$.post("/"+App.lang+"/contact/newsletter.json",params,function(data) {
			
			$form.find("input[name=email]").val(email).removeClass("hasHint").attr("disabled","");
			
			if(!data.error && data.success) {
				
				$form.append("<div class='success newsletter-message'>"+data.msg+"</div>");
				$form.find("input[name=email]").val($form.find("input[name=email]").attr("title")).addClass("hasHint");
				
			} else {
				
				$form.append("<div class='error newsletter-message'>"+data.error+"</div>");
				
				if(!$form.find("input[name=email]").val().length) {
					$form.find("input[name=email]").val($form.find("input[name=email]").attr("title")).addClass("hasHint");
				}
				
			}
			
		},"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 = {

	'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;

	}
};
