
$(function(){ 


		// Initialize history plugin.
		// The callback is called at once by present location.hash. 
		$.historyInit(pageload, "");
		
		
		



// ****** Gestion Menu déroulant ***********
$(".cadre_sous_section").hide();
var deroule=false;
var on_section="";




var banniere_fille_ajax=false;
var article_ajax=false;
var back=true;

var section_change=false;

$(".lien_liste_article").live("click", function(e){
	
	
	if(article_select=="no_ajax"||ajax==false)
		return true;
	
	var tmp=($(this).attr("id")).split("_");
	var url=$(this).attr("href")+"---ajax=article";
	//if(!jQuery.support.hrefNormalized)
	//	url=utf8_encode(url);
	if(article_select==tmp[1])
		return false;
	var hash = url.replace(/^.*#/, '');
	hash=hash.replace("http://"+server_name,"");
	
	back=false;
	$.historyLoad(hash);
	//url=url.replace("---","?");
	//getAjaxArticleArea(url,effect);
	
	return false;

});

$("a.lien_article").live("click", function(e){
	
	
	if(article_select=="no_ajax"||ajax==false)
		return true;
	//alert($(this).attr("href"));
	var url=$(this).attr("href")+"---ajax=articleenfant";
	
	var hash = url.replace(/^.*#/, '');
	hash=hash.replace("http://"+server_name,"");
	back=false;
	$.historyLoad(hash);
	
	return false;

});
$(".lien_chemin").live("click", function(e){
	
	
	if(article_select=="no_ajax"||ajax==false)
		return true;
	var url=$(this).attr("href")+"---ajax=liste";
	
	var hash = url.replace(/^.*#/, '');
	hash=hash.replace("http://"+server_name,"");
	back=false;
	$.historyLoad(hash);
	
	return false;

});


$(".lien_section").bind("click", function(e){

	if(section_select=="no_ajax"||ajax==false)
		return true;
	
	if(section_change)
		return false;
	var tmp=($(this).attr("id")).split("_");
	var bann="url("+sectionsById[tmp[1]]['banniere']+")";
	var url=$(this).attr("href")+"---ajax=liste";
	
	var param=new Array();
	//if(!jQuery.support.hrefNormalized)
	//	url=utf8_encode(url);
	if($(this).attr("href")=="#")
		return false;
	var hash = url.replace(/^.*#/, '');
	hash=hash.replace("http://"+server_name,"");
	back=false;
	$.historyLoad(hash);
	
	return false;
});

function getAjaxArticleArea(url,effect)
{
$.ajax({
  			type: "GET",
  			url: url,
  			dataType: "json",
  			cache: false,
  			success: function(json){
  				
				var exp= new RegExp("ajax=([a-z]*)");
				var param = exp.exec(url);
				
				
				
			
				var new_article_select=json['article_select'];
				var new_section_select=json['section_select'];
				var bann="url("+sectionsById[new_section_select]['banniere']+")";
				
				if(json['title']=="404")
					document.location.href="/main/error404";
				document.title=json['title'];
				
				if(effect!="")
				{
					$("#cadre_contenu_article").hide(effect, function() {

						$("#cadre_contenu_article").html(json['article']);
					});
				}
				else
					$("#cadre_contenu_article").html(json['article']);
					
				$("#chemin").html(json['chemin_navigation']);
				
				$("#cadre_contenu_article").delay("100").show(effect);			
  				
				if(param[0]=="ajax=liste")
				{
					$("#fille_entete").hide();
					$("#fille_entete_"+new_section_select).show();
					$("#fille_entete_"+section_select).hide();
					$("#banniere_photo").css('background-image', bann);
					if(!back&&effect!="")
					{	$("#cadre_liste_article").hide(effect, function() {

						$("#cadre_liste_article").html(json['liste_article']);
					});;}
					else
						$("#cadre_liste_article").html(json['liste_article']);
					
					if(!back)
						$("#cadre_liste_article").delay("100").show(effect);
						
				}
				else
				{
					$("#article_"+article_select).removeClass("active");
					$("#article_"+new_article_select).addClass("active");
				}
				section_select=new_section_select;
				article_select=new_article_select;
				back=true;
				},
			complete: function(json){
  				//section_change=false;
							
  				},
  			error: function(json){
  				var exp= new RegExp("ajax=([a-z]*)");
				var param = exp.exec(url);
				//alert(url);
				document.location.href=url.replace(param[0],"");
  				}});
}

function pageload(hash) {
		 //alert("pageload: " + hash);
		// hash doesn't contain the first # character.
		if(hash) {
			// restore ajax loaded state
			
			if($.browser.msie) {
				// jquery's $.load() function does't work when hash include special characters like aao.
				hash = encodeURIComponent(hash);
			}
			
			hash=hash.replace("---","?");
			hash=hash.replace(/%2F/g,"/");
			hash=hash.replace("%3D","=");
			//alert(back);
			if(back)
				hash=hash.replace("ajax=article","ajax=liste");
			getAjaxArticleArea(hash,effect)
		} else {
			//alert(document.location.href);
			var test=document.location.href;
			test=test.replace("#","");
			//alert(test);
			document.location.href=test;
		}
	}


$(".section").bind("mouseenter", function(e){
	
	
	if(on_section!=$(this).attr("id")&&on_section!="")
	{
		deroule=false;
		$("#cadre_sous_"+on_section).hide("slideUpMenu");
	}
	if(!deroule)
	{	$("#cadre_sous_"+$(this).attr("id")).show("slideUpMenu");
		deroule=true;
		on_section=$(this).attr("id");
	}	
});

/*
function generateAjaxDivByCopy(idbase,ajax_suffixe)
{
		if(ajax_suffixe)
		{
		//$("#"+idbase+"_ajax").remove();
		$("#"+idbase).after('<div id="'+idbase+'_ajax'+'" class="'+idbase+'" style="display: none;"> </div>');
		//$("#corps").append('<div id="'+idbase+'_ajax'+'" class="'+idbase+'" style="display: none;"> </div>');
		$("#"+idbase).remove();
		}
		else
		{
		//$("#"+idbase).remove();
		$("#"+idbase+"_ajax").after('<div id="'+idbase+'" class="'+idbase+'" style="display: none;"> </div>');
		$("#"+idbase+"_ajax").remove();
		//$("#corps").append('<div id="'+idbase+'" class="'+idbase+'" style="display: none;"> </div>');
		}
}
*/

$.fn.delay = function( time, name ) {

    return this.queue( ( name || "fx" ), function() {
        var self = this;
        setTimeout(function() { $.dequeue(self); } , time );
    } );

};







// \Personnalisation Animation slide Menu\
$.effects.slideUpMenu = function(o) {

	return this.queue(function() {

		// Create element
		var el = $(this), props = ['position','top','left'];

		// Set options
		var mode = $.effects.setMode(el, o.options.mode || 'show'); // Set Mode
		var direction = o.options.direction || 'up'; // Default Direction

		// Adjust
		$.effects.save(el, props); el.show(); // Save & Show
		$.effects.createWrapper(el).css('overflow','hidden'); // Create Wrapper
		var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left';
		var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg';
		var distance = o.options.distance || (ref == 'top' ? el.outerHeight({margin:true}) : el.outerWidth({margin:true}));
		if (mode == 'show') el.css(ref, motion == 'pos' ? -distance : distance); // Shift

		// Animation
		var animation = {};
		animation[ref] = (mode == 'show' ? (motion == 'pos' ? '+=' : '-=') : (motion == 'pos' ? '-=' : '+=')) + distance;

		// Animate
		el.animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function() {
			if(mode == 'hide') el.hide(); // Hide
			$.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
			if(o.callback) o.callback.apply(this, arguments); // Callback
			el.dequeue();
		}});

	});
};


// \Personnalisation Animation slide Menu\
$.effects.slideDownMenu = function(o) {

	return this.queue(function() {

		// Create element
		var el = $(this), props = ['position','top','left'];

		// Set options
		var mode = $.effects.setMode(el, o.options.mode || 'show'); // Set Mode
		var direction = o.options.direction || 'down'; // Default Direction

		// Adjust
		$.effects.save(el, props); el.show(); // Save & Show
		$.effects.createWrapper(el).css('overflow','hidden'); // Create Wrapper
		var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left';
		var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg';
		var distance = o.options.distance || (ref == 'top' ? el.outerHeight({margin:true}) : el.outerWidth({margin:true}));
		if (mode == 'show') el.css(ref, motion == 'pos' ? -distance : distance); // Shift

		// Animation
		var animation = {};
		animation[ref] = (mode == 'show' ? (motion == 'pos' ? '+=' : '-=') : (motion == 'pos' ? '-=' : '+=')) + distance;

		// Animate
		el.animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function() {
			if(mode == 'hide') el.hide(); // Hide
			$.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
			if(o.callback) o.callback.apply(this, arguments); // Callback
			el.dequeue();
		}});

	});
};


// \Personnalisation Animation slide Banniere\
$.effects.slideUpBann = function(o) {

	return this.queue(function() {

		// Create element
		var el = $(this), props = ['position','top','left'];

		// Set options
		var mode = $.effects.setMode(el, o.options.mode || 'show'); // Set Mode
		var direction = o.options.direction || 'up'; // Default Direction

		// Adjust
		$.effects.save(el, props); el.show(); // Save & Show
		$.effects.createWrapper(el).css('overflow-y','visible'); // Create Wrapper
		var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left';
		var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg';
		var distance = o.options.distance || (ref == 'top' ? el.outerHeight({margin:true}) : el.outerWidth({margin:true}));
		if (mode == 'show') el.css(ref, motion == 'pos' ? -distance : distance); // Shift

		// Animation
		var animation = {};
		animation[ref] = (mode == 'show' ? (motion == 'pos' ? '+=' : '-=') : (motion == 'pos' ? '-=' : '+=')) + distance;

		// Animate
		el.animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function() {
			if(mode == 'hide') el.hide(); // Hide
			$.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
			if(o.callback) o.callback.apply(this, arguments); // Callback
			el.dequeue();
		}});

	});
};


// Verification des formulaires

$('.ro').each (function (){if( this.value!="") $(this).addClass('rok'); });
$('.so').each (function (){ if( this.value!="0") $(this).addClass('sok'); });
$('.mail').each (function (){ if(!verifemail(this.value)) $(this).removeClass('rok'); });
$('.int').each (function (){ if(isNaN(this.value) )  $(this).removeClass('rok'); });

$(".ro").change( function(e) { 
		
		if($(this).val()!="")
		{
			$(this).addClass("rok");
		}
		if($(this).val()=="")
		{
			$(this).removeClass("rok");
		}
	 } );

$(".mail").change( function(e) { 
		//alert($(this).val());
		if (!verifemail($(this).val()))
  			$(this).removeClass("rok");
		
	 } );
$(".int").change( function(e) { 
		//alert($(this).val());
		if(isNaN($(this).val()) ) 
  			$(this).removeClass("rok");
		
	 } );
$(".so").change( function(e) { 
		//alert($(this).val());
		
		
		if($(this).val()!=0)
		{
			$(this).addClass("sok");
		}
		if($(this).val()==0)
		{
			$(this).removeClass("sok");
		}
	 } );



});





//FORMULAIRE VERIF 

var valide=true;
var message="";
var sub=false;

function verif_valide()
{
	
	if (!valide)
	{
		alert(message);
		valide=true;
		return false;	
	}
	else if(sub)
	{
		sub=false;
		return true;
	}
}

//VALIDATION DU FORMULAIRE
function form_valide()
{
	sub=true;
	message="Attention, certaines informations saisies sont manquantes ou incorrectes : ";
	var err=0;
	$('.so').each (function (){ if( this.value==0){ err++}; });
	if(err>0)
	{
	valide=false;sub=false;
	message=message+"\n\n   - Des listes déroulantes obligatoires n'ont pas été sélectionnées. Elles sont indiquées par un fond rouge.";
	}
	var err=0;
	$('.ro').each (function (){ if( this.value=="") err++;  });
	if(err>0)
	{
		valide=false; sub=false;
		message=message+"\n\n   - Des champs obligatoires n'ont pas été renseignés. Ils sont indiqués par un fond rouge.";
	}
	var err=0;
	$('.mail').each (function (){ if(!verifemail(this.value)) err++; });
	if(err>0)
	{
		valide=false; sub=false;
		message=message+"\n\n   - L'addresse e-mail saisie, n'est saisie n'est pas valide.";
	}
	var err=0;
	$('.int').each (function (){ if(isNaN(this.value)) err++; });
	if(err>0)
	{
		valide=false; sub=false;
		message=message+"\n\n   - Le code postal, saisie n'est pas valide. Il doit être uniquement composé de chiffre.";
	}
	message=message+"\n\n\n Pour valider ce formulaire, vous devez corriger le(s) probléme(s) ci-dessus.";	
}

function verifemail(champ)
{
	if((champ.indexOf("@") != "-1" &&
   			champ.indexOf(".") != "-1" &&
  			champ != ""))
  		return true
  	else
  		return false;
}

 
