
/*
	forEach, version 1.0
	Copyright 2006, Dean Edwards
	License: http://www.opensource.org/licenses/mit-license.php
*/

// array-like enumeration
if (!Array.forEach) { // mozilla already supports this
	Array.forEach = function(array, block, context) {
		for (var i = 0; i < array.length; i++) {
			block.call(context, array[i], i, array);
		}
	};
}

// generic enumeration
Function.prototype.forEach = function(object, block, context) {
	for (var key in object) {
		if (typeof this.prototype[key] == "undefined") {
			block.call(context, object[key], key, object);
		}
	}
};

// character enumeration
String.forEach = function(string, block, context) {
	Array.forEach(string.split(""), function(chr, index) {
		block.call(context, chr, index, string);
	});
};

// globally resolve forEach enumeration
var forEach = function(object, block, context) {
	if (object) {
		var resolve = Object; // default
		if (object instanceof Function) {
			// functions have a "length" property
			resolve = Function;
		} else if (object.forEach instanceof Function) {
			// the object implements a custom forEach method so use that
			object.forEach(block, context);
			return;
		} else if (typeof object == "string") {
			// the object is a string
			resolve = String;
		} else if (typeof object.length == "number") {
			// the object is array-like
			resolve = Array;
		}
		resolve.forEach(object, block, context);
	}
};

/* jTrim */

function jtrim (myString)
{
	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
} 

/* jQuery */

$(document).ready(function() {

	$("a.reglement").click(function() {
		$("div#reglement").hide();
		$("div#reglement").load($(this).attr("href")+' #chartetxt', function() { $("div#reglement").slideDown(); } );
		return false;
	});
	
	/* Recherche */
	
	$("#moreoptions").click(function() {
		$("#qoptions").slideToggle();
		$(this).hide();
		return false;
	});

	/* Antispam */
	
	var adressemail = $("#nospam").text();
	adressemail = adressemail.replace(/\*\*at\*\*/,"@");
	adressemail = adressemail.replace(/\_point\_/g,".");
	$("#nospam").html('<a href="mailto:'+adressemail+'">'+adressemail+'</a>');
	
	/* Filtres */
	
	$("#legende :checkbox").click(function() {
		
	});

	/* Input tag titre */
	
	$("#titre").keyup(function(event) {
		var v,l1,l2;
		v = $(this).val();
		l1 = v.length;
		v = v.replace(/cherche|urgent|recherche|poste|cdd|cdi|stage|h\/f|contrat|recherchons|stagiaire|nous /i,"");
		l2 = v.length;
		if(l1!=l2) {
			$(this).val(v);
			$("#titre_alert").css("background","#900").css("color","#fff");
		}
	});
	
	/* Input tags compétences */
	
	$("#autre_comp").keyup(function(event) {
		var v,l1,l2;
		v = $(this).val();
		l1 = v.length;
		v = v.replace(/[^a-z0-9\,\ #\.\+]/i,"");
		l2 = v.length;
		$(this).val(v);
		if(l1!=l2) {
			$("#autre_comp_alert").css("background","#900").css("color","#fff");
		}
		
		var valcomp = $(this).val();
		var recomps = "";
		var todo = false;
		var reg = new RegExp("(,)+", "g");

		var comps = valcomp.split(",");

		// FF+IE+GC...
		forEach(comps, function(comp) {
			comp = jtrim(comp);
			if(comp.split(" ").length>3) {
				comp ="";
				$("#motssimples").css("font-size","200%");
				$("#motssimples").css("color","red");
				$("#autre_comp_alert").css("background","#900").css("color","#fff");
				todo = true;
			} else {
				recomps += comp+", ";
			}
		});

		/* FF only
		for each(comp in comps) {
			comp = jtrim(comp);
			if(comp.split(" ").length>3) {
				comp ="";
				$("#motssimples").css("font-size","200%");
				$("#motssimples").css("color","red");
				$("#autre_comp_alert").css("background","#900").css("color","#fff");
				todo = true;
			} else {
				recomps += comp+", ";
			}
		}
		*/

		var tmpv = $(this).val();
		tmpv = tmpv.replace(reg,",");
		tmpv = tmpv.replace(/connaissance|notion|notions|connaissances|maîtrise|maitrise|\(|\)|:|\.\.\.+/i,"");
		$(this).val(tmpv);

		if(todo) {
			recomps = jtrim(recomps);
			//var lastchar = recomps[recomps.length-1];
			//if(lastchar==",") recomps = recomps.substring(0,recomps.length-1);
			$(this).val(recomps);
		}
		
	});
	
	/* Indications */
	
	$("#form-demande p.desc:eq(0)").qtip({
		content:"Suivez bien ces indications, elles sont là pour vous aider !",
		style:{
			tip: 'topMiddle',
			name:"green",
			border: {
				radius: 5
			}
		},
		position:{
			corner: {
				target: 'bottomMiddle',
				tooltip: 'topMiddle'
			}
		},
		show: { ready: true },
		hide: { when: 'inactive', delay: 4000 }
	});
	
	
	$("#form-offre p.desc:eq(0)").qtip({
		content:"Suivez bien ces indications, elles sont là pour vous aider !",
		style:{
			tip: 'bottomMiddle',
			name:"green",
			border: {
				radius: 5
			}
		},
		position:{
			corner: {
				target: 'topMiddle',
				tooltip: 'bottomMiddle'
			}
		},
		show: { ready: true },
		hide: { when: 'inactive', delay: 4000 }
	});

	
	// Géolocalisation
	
	function supports_geolocation() {
		return !!navigator.geolocation;
	}
	
	function setMapPosition(position) {
		var pointPos = new GLatLng(position.coords.latitude, position.coords.longitude);
		map.panTo(pointPos, 13);
		marker.setPoint(pointPos);
		$("#gmap_lat").val(pointPos.lat().toFixed(7));
		$("#gmap_lon").val(pointPos.lng().toFixed(7));
	}
	
	$geodesc = $("#geolocdesc");
	if(supports_geolocation && $geodesc.length>0) {
		var $geolink = $("<a>").attr("href","#").html("&laquo; Géolocalisez-moi !");
		$geolink.click(function() {
			navigator.geolocation.getCurrentPosition(setMapPosition);
			return false;
		});
		$geodesc.append("<br /><br />");
		$geolink.appendTo($geodesc);
		$geolink.css("font-weight","bold");
	}

	/* Gestion des erreurs */
	
	var errtarget = false;
	
	$("#rectif").qtip({
		content:"Rappel : Ce lien <b style=\"color:red\">ne sert pas</b> à candidater. Aucun e-mail ne sera transmis à l'auteur de l'annonce.",
		style:{
			tip: 'bottomLeft',
			name:"dark",
			border: {
				radius: 5
			}
		},
		position:{
			corner: {
				target: 'topRight',
				tooltip: 'bottomLeft'
			}
		}
	});
	
	function seterr(target,text) {
		$(target).qtip({
			content:text,
			style:{
				tip: 'bottomLeft',
				name:"red",
				border: {
					radius: 5
				}
			},
			show: { ready: true },
			hide: { when: { event: 'click' } },
			position:{
				corner: {
					target: 'topRight',
					tooltip: 'bottomLeft'
				}
			}
		});
		$(target).addClass("erreur");
		errtarget = target;
	}

	$("#form-demande #valider, #form-offre #valider").click(function(e) {
		if($("#societe").length && $("#societe").val().length<1) {
			seterr("#societe","Veuillez indiquer un nom de société");
		}
		if($("#typecontrat :checked").length<1) {
			seterr("#typecontrat","Veuillez indiquer un type de contrat");
		}
		if($("#titre").val().length<1) {
			seterr("#titre","Veuillez indiquer un titre");
		}
		if($("#email").val().length<1) {
			seterr("#email","Veuillez indiquer une adresse e-mail");
		}
		if($("#nom").val().length<1) {
			seterr("#nom","Veuillez indiquer votre nom");
		}
		if($("#description").val().length<1) {
			seterr("#description","Veuillez indiquer une description");
		}
		if($("#region :selected").text().length<2) {
			seterr("#region","Veuillez indiquer votre région");
		}
		/*
		if(($("#typecontratcdd:checked").length>0 || $("#typecontratstage:checked").length>0) && $("#duree").val().length<1) {
			seterr("#duree","Veuillez indiquer une durée");
		}
		*/
		if(errtarget) {
			e.preventDefault();
			var targetOffset = $(errtarget).offset().top - 200;
			$('html,body').animate({scrollTop: targetOffset}, "slow");
			errtarget = false;
		}
		$(".erreur").unbind();
		$(".erreur").bind("click keypress",function() {
			$(this).removeClass("erreur");
		});
	});
	
	function typecddcdi() {
		if( $("#typecontratcdi").is(":checked") || $("#typecontratcdd").is(":checked")) {
			$("#typecontratapprentissage").removeAttr("checked");
			$("#typecontratstage").removeAttr("checked");
			$("#typecontratpro").removeAttr("checked");
		}
	}
	
	function typenocd() {
		if( $("#typecontratstage").is(":checked") || $("#typecontratpro").is(":checked")  || $("#typecontratapprentissage").is(":checked")) {
			$("#typecontratcdi").removeAttr("checked");
			$("#typecontratcdd").removeAttr("checked");
		}
	}

	// Exclusion mutuelle des types de contrat
	var $typecontrat = $("#typecontrat");
	if($typecontrat.length>0) {
		$("#typecontratcdi").click(typecddcdi);
		$("#typecontratcdd").click(typecddcdi);
		$("#typecontratstage").click(typenocd);
		$("#typecontratpro").click(typenocd);
		$("#typecontratapprentissage").click(typenocd);
	}

});


