function atome_gmapClick(map, lat, lon) {
  var m = Drupal.gmap.getMap(map); // view_gmap is my id, change it to whatever your map id is called
  m.vars.latitude = lat;
  m.vars.longitude = lon;
  // count is id of marker, html comes encoded thanks to htmlentities function
  m.change('move',-1);
}

$j(document).ready(function() {
	$j(".inputDate").datePicker({clickInput:true});

	$j.NiceJForms.build({ imagesPath: imgpath + "/img/niceforms/" });

	$j(".nav > ul > li").showNav({ fixWidth: 183 });

	$j(".swapValue").toggleVal();

	$j(".listJobs .company span").fixWidth({ displayBlock: true });

	$j("a.tooltip").tooltip({
		track: true,
		delay: 0,
		showURL: false,
		showBody: " ### ",
		extraClass: "size"
	});

	$j("a.tooltipThick").tooltip({
		track: true,
		delay: 0,
		showURL: false,
		showBody: " ### "
	});

	$j("#formRoute").googleMapRedirect();

	$j("#btnFormAddCV").FormCV();

	$j(".editorial .block .content").fixHeight();

	$j("#refinements, #resultsList, #searchTools").fixHeight();

	$j(".accordion").accordion({
		header: 'h2',
		selectedClass: 'on'
	});

	handleAccount();
	handleSearchBold();
	handleCV();
	changeCommandePeriode();

	$j("a.showPollResult").click(function(){
		$j("#poll-view-voting fieldset").hide();
		$j("#poll-view-result").fadeIn();
		$j("#col1, #col2").fixHeight();
		return false;
	});

	$j("a.showPollVoting").click(function(){
		$j("#poll-view-result").hide();
		$j("#poll-view-voting fieldset").fadeIn();
		$j("#col1, #col2").fixHeight();
		return false;
	});
        
});

$j(window).load(function() {
	$j("#tpl1 #googleMap").googleMap();
	$j("#tpl2 #googleMap").googleMapLight();
	$j("#tpl1 .googleMapAgency").googleMapAgency();

	tabsGoogleMap = $j(".block .tabs").tabs({
		show: function() { handleTabsHoverState(this); },
		fx: { opacity: 'toggle' }
	});

	$j("#col1, #col2, #col3").fixHeight();
	showCommandePeriode();
});

$j.fn.fixWidth = function(settings){
	if ( $j(this).size() < 1 ) return false;

	settings = $j.extend({
		displayBlock: false
	}, settings);

	var max_width = 0;
	this.each(function(){
		if( $j(this).width() > max_width )
			max_width = $j(this).width();
	});

	return this.each(function(){
		if( settings.displayBlock ) $j(this).css("display", "block");
		$j(this).css("width", max_width + "px");
	});
}

$j.fn.fixHeight = function(){
	if ( $j(this).size() < 1 ) return false;

	var max_height = 0;
	this.each(function(){
		$j(this).css("height", "auto");
		if( $j(this).height() > max_height )
			max_height = $j(this).height();
	});

	return this.each(function(){
		$j(this).css("height", max_height + "px");
	});
}

jQuery.fn.toggleVal = function(focusClass) {
	return this.each(function() {
		$j(this).focus(function() {
			if($j(this).val() == this.defaultValue) { $j(this).val(""); }
			if(focusClass) { $j(this).addClass(focusClass); }
		}).blur(function() {
			if($j(this).val() == "") { $j(this).val(this.defaultValue); }
			if(focusClass) { $j(this).removeClass(focusClass); }
		});
	});
}

$j.fn.showNav = function(settings){
	if ( $j(this).size() < 1 ) return false;

	settings = $j.extend({
		fixWidth: 0
	}, settings);

	return this.each(function(i){
		if( $j("ul", this).size() > 0 ){
			if( settings.fixWidth == 0 ){
				this.widthLevelOne = widthUL =  $j(this).width();
			} else {
				widthUL = settings.fixWidth;
				this.widthLevelOne =  $j(this).width();
			}

			//Suppression de l'opacity car ne fonctionne plus sous IE6
			//$j("ul", this).css({ opacity: .9, width: widthUL-2 + "px" });
			$j("ul", this).css({ width: widthUL-2 + "px" });
			$j("ul > li > a", this).css({ width: widthUL-22 + "px" });

			$j(this).hover(function(){
				current = this;
				$j("a", this).addClass("on");
				(i == 0) ? $j("ul", current).css("left","0px") : $j("ul", current).css("left",-Math.round( ($j(current).width()-current.widthLevelOne) / 2 ) + "px");
			},
			function(){
				$j("a", this).removeClass("on");
				$j("ul", this).css("left","-9999px");
			});
		}
	});
}

$j.fn.googleMap = function(){
	if ( $j(this).size() < 1 ) return false;
	if( typeof(coord) == "undefined" ) return false;

	return this.each(function(){
		var points = [];
		var markers = [];
		var marker_html = [];
		var current_offer = 0;

		var baseIcon = new GIcon();
		baseIcon.shadow =  imgpath + "/img/markers/shadow50.png";
		baseIcon.iconSize = new GSize(20, 34);
		baseIcon.shadowSize = new GSize(37, 34);
		baseIcon.iconAnchor = new GPoint(9, 34);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);
		baseIcon.infoShadowAnchor = new GPoint(18, 25);

		var InfoWindowOptions = {
			maxWidth : 400
		};

		if(GBrowserIsCompatible()){
			var map = new GMap2(this);
			map.setCenter(new GLatLng(46.227638, 2.213749), 5);
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			map.enableScrollWheelZoom();

			for(i=0; i<coord.length; i++){
				marker_html[i] = [];

				for(j=0; j<coord[i].html.length; j++) marker_html[i][j] = coord[i].html[j];

				var point = new GLatLng(coord[i].latitude, coord[i].longitude);
				var marker = create_marker(point, coord[i].html[0], i);
				map.addOverlay(marker);

				points[i] = point;
				markers[i] = marker;
			}

			$j(window).unload(function(){ GUnload(); });
		}

		function create_marker(point, html, idx){
			var markerOpts = {};
			var nIcon = new GIcon(baseIcon);

			markerImg = (marker_html[idx].length > 1) ? "+" : (idx+1);

			nIcon.image =  imgpath + "/img/markers/marker" + markerImg + ".png";
			markerOpts.icon = nIcon;

			var marker = new GMarker(point, markerOpts);
			GEvent.addListener(marker, 'click', function(){
				current_offer = 0;
				marker.openInfoWindowHtml( prepareHTML(html, idx), InfoWindowOptions);
			});

			return marker;
		}

		function prepareHTML(html, idx){
			if( parseInt(idx + 5) ){ // just a test to know if integer
				idx = parseInt(idx)
				num_total_offres = marker_html[idx].length;

				info_windows = document.createElement("div");
				$j(info_windows).addClass("infoWindow");

				if( num_total_offres > 1 ){
					s = (marker_html[idx].length == 1) ? "" : "s";

					offres = document.createElement("p");
					$j(offres).append( "<strong>" + marker_html[idx].length + " offre" + s + " d'emploi trouvée" + s + " pour cette localisation</strong>" );
					$j(offres).addClass("offres");
					info_windows.appendChild(offres);

					num_offre = document.createElement("p");
					$j(num_offre).attr("style", "padding:6px 0;");
					$j(num_offre).append( "Offre d'emploi <span class='currentOffer'>" + (current_offer+1) + "</span> de " + num_total_offres + "&nbsp;&nbsp;&nbsp;" );
					$j(num_offre).addClass("numOffre");
					info_windows.appendChild(num_offre);

					prev = document.createElement("a");
					$j(prev).attr( "href", "#" );
					$j(prev).append( "Précédente" );
					$j(prev).addClass("prev").addClass("prevFirst");
					$j(prev).bind("click", function(){
						if( current_offer > 0 ){
							$j(".infoWindow").fadeOut(function(){
								current_offer--;

								if( current_offer < 0 ) current_offer = 0;

								$j(".currentOffer", num_offre).html( current_offer+1 );
								$j(desc).html( marker_html[idx][current_offer] + "<br />Numéro sur la carte : " + (idx+1) );

								$j(prev).removeClass("prevFirst");
								$j(next).removeClass("nextFirst");

								if( current_offer == 0 ) $j(prev).addClass("prevFirst");

								map.updateInfoWindow( map.getInfoWindow().getTabs() );

								$j(".infoWindow").fadeIn();
							});
						}

						return false;
					});

					next = document.createElement("a");
					$j(next).attr( "href", "#" );
					$j(next).append( "Suivante" );
					$j(next).addClass("next");
					$j(next).bind("click", function(){
						if( (current_offer + 1) < num_total_offres ){
							$j(".infoWindow").fadeOut(function(){
								current_offer++;

								if( current_offer > num_total_offres-1 ) current_offer = num_total_offres-1;

								$j(".currentOffer", num_offre).html( current_offer+1 );
								$j(desc).html( marker_html[idx][current_offer] + "<br />Numéro sur la carte : " + (idx+1) );

								$j(prev).removeClass("prevFirst");
								$j(next).removeClass("nextFirst");

								if( (current_offer + 1) == num_total_offres ) $j(next).addClass("nextFirst");

								map.updateInfoWindow( map.getInfoWindow().getTabs() );

								$j(".infoWindow").fadeIn();
							});
						}

						return false;
					});

					num_offre.appendChild(prev);
					$j(num_offre).append( " ... " );
					num_offre.appendChild(next);
				}

				desc = document.createElement("p");
				$j(desc).append( html );
				$j(desc).append( "<br />Numéro sur la carte : " + (idx+1) );
				$j(desc).addClass("desc");

				info_windows.appendChild(desc);

				return info_windows;
			}
		}

		$j(".listOffers h3 a").click(function(){
			var targetOffset = $j("#googleMap").offset().top - 10;
			var current = this;

			$j("html,body").animate({scrollTop: targetOffset}, 500, function(){
				num = $j(current).attr("id");
				num = num.split("num_");
				num = num[1];

				if( typeof(markers[num]) != "undefined" ){
					current_offer = 0;
					markers[num].openInfoWindowHtml( prepareHTML(marker_html[num][0], num), InfoWindowOptions);
				}
			});

			return false;
		});
	});
}

$j.fn.googleMapLight = function(){
	if ( $j(this).size() < 1 ) return false;
	if( typeof(coord) == "undefined" ) return false;

	return this.each(function(){
		var baseIcon = new GIcon();
		baseIcon.shadow =  imgpath + "/img/markers/shadow50.png";
		baseIcon.iconSize = new GSize(20, 34);
		baseIcon.shadowSize = new GSize(37, 34);
		baseIcon.iconAnchor = new GPoint(9, 34);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);
		baseIcon.infoShadowAnchor = new GPoint(18, 25);

		if(GBrowserIsCompatible()){
			var map = new GMap2(this);
			map.setCenter(new GLatLng(46.227638, 2.213749), 5);
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			map.enableScrollWheelZoom();

			var bounds = new GLatLngBounds();

			for(i=0; i<coord.length; i++){
				var point = new GLatLng(coord[i].latitude, coord[i].longitude);
				var marker = create_marker(point, i);
				map.addOverlay(marker);

				bounds.extend(point);
			}

			map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)-1);

			$j(window).unload(function(){ GUnload(); });
		}

		function create_marker(point, idx){
			var markerOpts = {};
			var nIcon = new GIcon(baseIcon);

			nIcon.image =  imgpath + "/img/markers/marker" + (idx+1) + ".png";
			markerOpts.icon = nIcon;

			var marker = new GMarker(point, markerOpts);

			return marker;
		}
	});
}

$j.fn.googleMapAgency = function(){
	if ( $j(this).size() < 1 ) return false;

	return this.each(function(){
		var points = [];
		var markers = [];
		var marker_html = [];
		var current_offer = 0;
		var maxZoom = 17;

		var InfoWindowOptions = {
			maxWidth : 400
		};

		if(GBrowserIsCompatible()){
			var map = new GMap2(this);
			map.setCenter(new GLatLng(46.227638, 2.213749), 5);
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			map.enableScrollWheelZoom();
			GEvent.addListener(map, "zoomend", function() { get_markers("zoom"); });
			GEvent.addListener(map, "moveend", function() { get_markers("move"); });

			get_markers();

			$j(window).unload(function(){ GUnload(); });
		}

		function get_markers(type){
			var swLat = map.getBounds().getSouthWest().lat();
			var swLng = map.getBounds().getSouthWest().lng();
			var neLat = map.getBounds().getNorthEast().lat();
			var neLng = map.getBounds().getNorthEast().lng();
			var zoom = map.getZoom();

			if(type == "zoom"){
				map.clearOverlays();
				points = [];
				markers = [];
				marker_html = [];
				$j(".listOffers").empty();
			}

			$j.ajax({
				data: "swLat=" + swLat + "&swLng=" + swLng + "&neLat=" + neLat + "&neLng=" + neLng + "&zoom=" + zoom,
				success: function(data){
					if(typeof(data.points) != "undefined"){
						for(j=0; j<data.points.length; j++){
							if( typeof(points[j]) == "undefined" || typeof(markers[j]) == "undefined" ){
								points[j] = [];
								markers[j] = [];
								points[j][0] = [];
								markers[j][0] = [];
								points[j][1] = [];
								markers[j][1] = [];
							}

							if(data.points[j].type == 1){
								for(i=0; i<data.points[j].coord.length; i++){
									newZoom = zoom+5;
									if(newZoom > 17) newZoom = maxZoom;

									var point = new GLatLng(data.points[j].coord[i].latitude, data.points[j].coord[i].longitude);
									var marker = create_marker(point, "", i, newZoom);

									if( $j.inArray(point.toString(), points[j][0]) == -1 ){
										map.addOverlay(marker);

										points[j][0][i] = point.toString();
										markers[j][0][i] = marker;
									}
								}
							}
							if(data.points[j].type == 2){
								for(i=0; i<data.points[j].coord.length; i++){
									var point = new GLatLng(data.points[j].coord[i].latitude, data.points[j].coord[i].longitude);
									var marker = create_marker(point, data.points[j].coord[i].html, i, 0);

									if( $j.inArray(point.toString(), points[j][1]) == -1 ){
										marker_html[i] = [];

										map.addOverlay(marker);

										points[j][1][i] = point.toString();
										markers[j][1][i] = marker;

										itemDetails = document.createElement("div");
										$j(itemDetails).addClass("item clearfix");

										if(i == 0){
											$j(".listOffers").empty();
											$j(itemDetails).addClass("itemFirst");
										}

										itemDetailsImg = document.createElement("img");
										$j(itemDetailsImg).attr({ src:  imgpath + "/img/markers/marker" + (i+1) + ".png" }).addClass("picto hack-png");

										itemDetailsContent = document.createElement("div");
										$j(itemDetailsContent).addClass("itemContent clearfix").append(data.points[j].coord[i].html);

										$j(itemDetails).append(itemDetailsImg).append(itemDetailsContent);

										$j(".listOffers").append(itemDetails);

										$j("#notice").hide();

										$j("#col1, #col2, #col3").fixHeight();
									}
								}
							}
						}
					}
				}
			});
		}

		function create_marker(point, html, idx, zoom){
			var markerOpts = {};

			if(zoom == 0){
				var baseIcon = new GIcon();
				baseIcon.shadow =  imgpath + "/img/markers/shadow50.png";
				baseIcon.iconSize = new GSize(20, 34);
				baseIcon.shadowSize = new GSize(37, 34);
				baseIcon.iconAnchor = new GPoint(10, 34);
				baseIcon.infoWindowAnchor = new GPoint(9, 2);
				baseIcon.infoShadowAnchor = new GPoint(18, 25);

				markerImg = idx+1;
			} else {
				var baseIcon = new GIcon();
				baseIcon.iconSize = new GSize(18, 18);
				baseIcon.iconAnchor = new GPoint(9, 9);
				baseIcon.infoWindowAnchor = new GPoint(0, 0);

				markerImg = "+2";
			}

			var nIcon = new GIcon(baseIcon);
			nIcon.image =  imgpath + "/img/markers/marker" + markerImg + ".png";
			markerOpts.icon = nIcon;

			var marker = new GMarker(point, markerOpts);

			if(zoom == 0){
				GEvent.addListener(marker, 'click', function(){
					current_offer = 0;
					marker.openInfoWindowHtml( prepareHTML(html, idx), InfoWindowOptions);
				});
			} else {
				GEvent.addListener(marker, 'click', function(){
					map.setCenter(point, zoom);
				});
			}

			return marker;
		}

		function prepareHTML(html, idx){
			if( parseInt(idx + 5) ){ // just a test to know if integer
				idx = parseInt(idx)

				info_windows = document.createElement("div");
				$j(info_windows).addClass("infoWindow2");

				desc = document.createElement("p");
				$j(desc).append( html );
				$j(desc).addClass("desc");

				info_windows.appendChild(desc);

				return info_windows;
			}
		}
	});
}

var handleTabsHoverState = function(elt){
	if(typeof(tabsGoogleMap) != "undefined"){
		current = tabsGoogleMap.data('selected.tabs');

		if( $j("strong", elt).size() > 0 ){
			$j("strong", elt).each(function(){
				currentNode = $j("a:eq(0)", this)[0];
				src = $j("img:eq(0)", this).attr("src");

				if(src.indexOf("_on") > 0) src = src.replace("_on.","_off.");

				$j("img:eq(0)", this).attr("src", src);

				$j(this).parent().prepend(currentNode);
				$j(this).remove();
			});
		}

		$j("li:eq(" + current + ") a", elt).wrap("<strong></strong>");
		src = $j("li:eq(" + current + ") img", elt).attr("src");
		if(src.indexOf("_off") > 0)	src = src.replace("_off.","_on.");
		$j("li:eq(" + current + ") img", elt).attr("src", src);
		$j("#col1, #col2, #col3").fixHeight();
	}
}

var handleRoute = function(type){
	if(type == "departure"){
		selectDeparture = $j("#departure");

		$j("option", selectDeparture).each(function(){
			if( $j(this)[0].selected ){
				value = $j(this).attr("value");

				if(value != "other"){
					$j("#otherDeparture:visible").animate({ opacity: "toggle" }, function(){
						$j(selectDeparture).next("span").fadeIn();
					});
					$j(selectDeparture).next("span").children("span").html(value);
				} else {
					$j("#departure").next("span").animate({ opacity: "toggle" }, function(){
						$j("#otherDeparture").fadeIn();
					});
				}

				return false;
			}
		});
	}

	if(type == "arrival"){
		selectArrival = $j("#arrival");

		$j("option", selectArrival).each(function(){
			if( $j(this)[0].selected ){
				value = $j(this).attr("value");

				if(value != "other"){
					$j("#otherArrival:visible").animate({ opacity: "toggle" }, function(){
						$j(selectArrival).next("span").fadeIn();
					});
					$j(selectArrival).next("span").children("span").html(value);
				} else {
					$j("#arrival").next("span").animate({ opacity: "toggle" }, function(){
						$j("#otherArrival").fadeIn();
					});
				}

				return false;
			}
		});
	}
}

$j.fn.googleMapRedirect = function(){
	if ( $j(this).size() < 1 ) return false;

	return this.each(function(){
		$j("input[type='submit']", this).click(function(){
			departure = $j("#departure").val();

			if(departure == "other")
				departure = $j("#departure_other").val();

			arrival = $j("#arrival").val();

			if(arrival == "other")
				arrival = $j("#arrival_other").val();

			window.open("http://maps.google.com/maps?f=d&hl=fr&geocode=&saddr=" + escape(departure) + "&daddr=" + escape(arrival));

			return false;
		});
	});
}

$j.fn.FormCV = function(){
	  $j("a#btnFormAddCV").click(function(){
	    $j("#formAddCV").fadeIn();
	    $j("a#btnFormAddCV").hide();
		if ( $j("div#selectCV").length > 0 ) {
	      $j("input[@name='selectResume'][@type='radio']").each(function() {this.checked = false;});
	      $j("div#selectCV").hide();
	    }
		$j("#col1, #col2, #col3").fixHeight();
	    return false;
	  })

	  $j("a#btnFormCancelCV").click(function(){
	    $j("#formAddCV").hide();
	    $j("a#btnFormAddCV").fadeIn();
		$j("input[@name='resumeName']").val("");
		$j("input[@type='file']").val("");
		if ( $j("div#selectCV").length > 0 ) {
		  $j("div#selectCV").fadeIn();
		}
		$j("#col1, #col2, #col3").fixHeight();
	    return false;
	  })
/*
	if ( $j(this).size() < 1 ) return false;

	return this.each(function(){
		current = this;

		$j(current).click(function(){
			$j(current).hide();
			$j("#formAddCV").fadeIn();
			$j("#col1, #col2, #col3").fixHeight();

			$j("#btnFormCancelCV").click(function(){
				$j("#btnFormCancelCV").unbind("click");
				$j("#formAddCV").hide();
				$j(current).fadeIn();

				return false;
			});

			return false;
		});
	});
*/
}

function showTheme(id){
	$j("#themes p").hide();
	$j("#theme" + id).show();
	$j("#col1, #col2, #col3").fixHeight();
}

var handleAccount = function(){
	if ( $j(".profilIdentifiantsModify").size() < 1 ) return false;

	$j(".profilIdentifiantsModify").click(function(){
		if( $j("#profilIdentifiantsModify").is(":hidden") ){
			$j("#profilIdentifiants").hide();
			$j("#profilIdentifiantsModify").show();
		} else {
			$j("#profilIdentifiantsModify").hide();
			$j("#profilIdentifiants").show();
		}

		$j("#col1, #col2, #col3").fixHeight();

		return false;
	});

	if ( $j(".profilInfosModify").size() < 1 ) return false;

	$j(".profilInfosModify").click(function(){
		if( $j("#profilInfosModify").is(":hidden") ){
			$j("#profilInfos").hide();
			$j("#profilInfosModify").show();
		} else {
			$j("#profilInfosModify").hide();
			$j("#profilInfos").show();
		}

		$j("#col1, #col2, #col3").fixHeight();

		return false;
	});

	if ( $j(".profilCandidatModify").size() < 1 ) return false;

	$j(".profilCandidatModify").click(function(){
		if( $j("#profilCandidatModify").is(":hidden") ){
			$j("#profilCandidat").hide();
			$j("#profilCandidatModify").show();
		} else {
			$j("#profilCandidatModify").hide();
			$j("#profilCandidat").show();
		}

		$j("#col1, #col2, #col3").fixHeight();

		return false;
	});

	$j(".newsletterTheme, .newsletterSubscribe").click(function(){
		$j(this).parent("p").next("div").animate({ height: "toggle" }, function(){
			$j("#col1, #col2, #col3").fixHeight();
		});

		return false;
	});
}

var handleSearchBold = function(){
	$j(".resultatsOption2 a").click(function(){
		$j(".resultatsOption2 a").css({ fontWeight: "normal" });

		$j(this).css({ fontWeight: "bold" });

		return false;
	});
}

var showCompany = function() {
	selectValue = $j('#whoYouAre option:selected').attr('value');
	if (selectValue == "company") {
		$j("#companyBlock, .functionLayer").show();
		$j(".addressesLayer").hide();
	} else {
		$j("#companyBlock, .functionLayer").hide();
		$j(".addressesLayer").show();
	}
	$j("#col1, #col2, #col3").fixHeight();
};

var handleCV = function(){
	$j(".addCV").click(function(){
		clone = $j("p.votreCv:eq(0)").clone().removeClass("hide");
		$j("p.votreCv:last").after(clone);
		index = ($j("p.votreCv").size()-1);

		$j(clone).html('<input type="radio" name="cv' + index + '" class="radio" /><label for="cv' + index + '" class="cvAjouter"><span>CV n&deg;' + index + ' :</span></label><input type="text" name="nomCv" value="Nom du CV" class="inputText" /><input type="file" class="file" name="file" size="20" /><a href="#" class="cvSuppr"><img src="img/btns/close2.png" alt="Fermer" class="hack-png" /></a>');

		return false;
	});
}

var showCommandePeriode = function(){
	if ($j("#contractType").children("[@selected]").text() == "CDI")
		$j("#commande_periode").css({ display: "none" });
	else
		$j("#commande_periode").css({ display: "block" });
}

var changeCommandePeriode = function(){
	$j("#contractType").change(function(){
		if ($j(this).children("[@selected]").text() == "CDI")
			$j("#commande_periode").css({ display: "none" });
		else
			$j("#commande_periode").css({ display: "block" });
	});
}
