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();
		$(document).pngFix();
		
		Init.Newsletter("#newsletter");
		
		$("#contact-form form").submit(function(e) {
			e.preventDefault();
			var data = $(this).serialize();
			$("#contact-form .submit").attr("disabled","disabled").fadeTo("fast",0.3);
			$("#contact-form .success").hide();
			$("#contact-form .errors").hide();
			$("#contact-form .loading").show();
			$.post("/sendMessage.php",data, function(data){
				$("#contact-form .loading").hide();
				$("#contact-form .submit").attr("disabled","").fadeTo("fast",1);
				if(data.messageResult==true )
				{
					$("#contact-form .success").slideDown();
					$("#contact-form input").val("");
					$("#contact-form textarea").val("");
				}
				else
				{
					$("#contact-form .errors").slideDown();
				}
				
			}, "json");
			
			
			return false;

		});
		
		$("#menu ul li img.arrow").each(function() {
			var link = $(this).parent();
			link.click(function(e) {
				e.preventDefault();
				if($(this).children(".arrow").attr("src").indexOf("down") > 0) {
					$(this).children(".arrow").switchImg("/statics/img/site/menu-arrow.png");
					//$(this).children(".arrow").attr("src","includes/img/site/menu-arrow.png");
				} else {
					$(this).children(".arrow").switchImg("/statics/img/site/menu-arrow-down.png");
					//$(this).children(".arrow").attr("src","includes/img/site/menu-arrow-down.png");
				}
				//$(this).parent().children(".submenu").slideToggle();
				$(this).parent().children(".submenu").css("position","");
				slideToggle($(this).parent().children(".submenu"));
	
			});
		});
		$("#content").addClass(fontSize);

		$("a.select-size").click(function(e) {
			e.preventDefault();
			$("body").removeClass("tenpoint").removeClass("fourteenpoint").removeClass("sixteenpoint");
			$("#content").removeClass("tenpoint").removeClass("fourteenpoint").removeClass("sixteenpoint");
			$("#content ul li").removeClass("tenpoint").removeClass("fourteenpoint").removeClass("sixteenpoint");
			fontSize = "tenpoint";
			if($(this).hasClass("sixteenpoint")) {
				fontSize = "sixteenpoint";
			} else if($(this).hasClass("fourteenpoint")) {
				fontSize = "fourteenpoint";
			}
			$("#content").addClass(fontSize);
			$("#content ul li").addClass(fontSize);
			$("body").addClass(fontSize);
			var img = new Image();
			img.src = "/index.php?fontSize="+fontSize;
		});
	
	},
	
	'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);


function slideToggle(el, bShow){
  var $el = $(el), height = $el.data("originalHeight"), visible = $el.is(":visible");
  
  // if the bShow isn't present, get the current visibility and reverse it
  if( arguments.length == 1 ) bShow = !visible;
  
  // if the current visiblilty is the same as the requested state, cancel
  if( bShow == visible ) return false;
  
  // get the original height
  if( !height ){
    // get original height
    height = $el.show().height();
    // update the height
    $el.data("originalHeight", height);
    // if the element was hidden, hide it again
    if( !visible ) $el.hide().css({height: 0});
  }

  // expand the knowledge (instead of slideDown/Up, use custom animation which applies fix)
  if( bShow ){
    $el.show().animate({height: height}, {duration: 250});
  } else {
    $el.animate({height: 0}, {duration: 250, complete:function (){
        $el.hide();
      }
    });
  }
}



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

Analytics = function(account,track) {
	
	var self = this;
	var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
	
	$.getScript(gaJsHost + "google-analytics.com/ga.js", function(){
		try {
			self.tracker = _gat._getTracker(account);
			self.account = account;
			if(!track) {}
			else {
				if(typeof track == "string") { self.track(track); }
				else { self.track(); }
			}
		} 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;

	}
};

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


Init.Newsletter = function(selector,options) {

	var $el = jQuery(selector);
	if(!$el.length) { return; }
	
	var $form = $el.find("form");
	
	$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) {
				
				//App.Event('Newsletter','Add',email);
				
				$form.append("<div class='success'>"+data.msg+"</div>");
				$form.find("input[name=email]").val($form.find("input[name=email]").attr("title")).addClass("hasHint");
				
			} else {
				
				$form.append("<div class='error'>"+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");
		
	});
	
};
