var check_boxes = new Array();
var checked_jobs = 0;
var id_list = '';
var filter_cariera_value = '';
var kex = 'Ex: Inginer';
$(document).ready(function() {
	
	// Overlayer-ul de domenii
	$('ul.breadcrumbs li.openBread a').each(function(i, lnk) {
		if($('#breadcrumbOverlayer').length > 0) {
			$(this).click(function() {openBreadcrumbOverlayer(); return false;});
		}
	});

	$('#searchform').submit(
					function() {
						if ($('#keyword').val() == kex
							&& $('#keyword').hasClass(myjob.exampleClass)
							) {
							$('#keyword').val('');
						}
						return true;
					});
	if($("#keyword").val() == "") {
		$("#keyword").val(kex);
		$("#keyword").addClass(myjob.exampleClass);
		$("#keyword").focus(function(){
			if($("#keyword").val()==kex) {
				$("#keyword").val('');
				$("#keyword").removeClass(myjob.exampleClass);
			}
		});
		$("#keyword").blur(function(){
			if($("#keyword").val()=='') {
				$("#keyword").val(kex);
				$("#keyword").addClass(myjob.exampleClass);
			}
		});
	}

	$("#linkaltefiltre").click(function(event){
		$("#altefiltre").toggle();
		return false;
	}); 

	if($("#showhidefilters").val() == 'hide') {
		$("#altefiltre").toggle();
	}

	
	
	//var ncs = $(".nivel_cariera_slider");
	//ncs.slider({ values: [30,60] });

	var nivel = new Array();

	$(".nivel_cariera_slider").slider({
			range: true,
			min: 0,
			max: 30,
			step: 1,
			values: [$("#filter_cariera_min").html(), $("#filter_cariera_max").html()],
			slide: function(event, ui) {
				$("#filter_cariera_min").html(ui.values[0]);
				$("#filter_cariera_max").html(ui.values[1]);
				filter_cariera_value = ui.values[0] + '-' + ui.values[1];
			},
			change: function(event, ui) {
				$("#filter_cariera_seteaza").show();
			}
		});

	
	$(".joburi_timeframe_slider").slider({
			min: 0,
			max: 30,
			step: 1,
			value: $("#filter_zile_numar").html(),
			change: function(event, ui) {
				$("#filter_zile_numar").html(ui.value);
				document.location = $("#current_url").val() + 'zile-' + ui.value + '/';
			},
			slide: function(event, ui) {
				$("#filter_zile_numar").html(ui.value);
			}
		});
	
	$("#filter_cariera_seteaza").click(function() {
		document.location = $("#current_url").val() + 'cariera-' + filter_cariera_value + '/';
		return false;
	});

	check_boxes = $(".select_job > span > input");
	jQuery.each(check_boxes, function(i, cb) {
		var jid = cb.id.replace("ljcb_", "");
		cb.onclick = function() {
			if ( cb.checked == true ) $("#ljrow_"+jid).addClass("selected");
			else $("#ljrow_"+jid).removeClass("selected");
			recount_checked_jobs();
		}
    });

	recount_checked_jobs();
	
	var filter_checkboxes = $(".filter_checkbox");
	jQuery.each(filter_checkboxes, function(i, cb) {
		var id = cb.id;
		cb.onclick = function() {
			document.location = $("#" + id + '_link').attr("href");
		}
	});	


	// Popup orase
	$("#deschide_orase").click(function() {
		$("#overlayer_orase").show();
		var ovlid = "overlayer_orase";
		if(!check_opened_overlayer(ovlid)) {
			register_overlayer(ovlid);
		}
		$.get("/xml/", { m: "listjobs", s: "search_fast", list: "orase", r: $("#current_url").val()}, function(data) {
			            $("#alegeoras").html(data);
						close_all_page_overlayers_except(ovlid);
		                });
		if($("#deschide_orase").parents("div.grupare-overlayer")){$("#deschide_orase").parents("div.grupare-overlayer").css("position","relative");}
		return false;
	});

	$("#inchide_orase").click(function() {
		$("#overlayer_orase").hide();
		return false;
	});

	// Popup tari
	$("#deschide_tari").click(function() {
		$("#overlayer_tari").show();
		var ovlid = "overlayer_tari";
		if(!check_opened_overlayer(ovlid)) {
			register_overlayer(ovlid);
		}
		$.get("/xml/", { m: "listjobs", s: "search_fast", list: "tari", r: $("#current_url").val()}, function(data) {
			            $("#alegetara").html(data);
						close_all_page_overlayers_except(ovlid);
		                });
		if($("#deschide_tari").parents("div.grupare-overlayer")){$("#deschide_tari").parents("div.grupare-overlayer").css("position","relative");}
		return false;
	});

	$("#inchide_tari").click(function() {
		$("#overlayer_tari").hide();
		return false;
	});

	// Popup domenii
	$("#deschide_domenii").click(function() {
		$("#overlayer_domenii").show();
		var ovlid = "overlayer_domenii";
		if(!check_opened_overlayer(ovlid)) {
			register_overlayer(ovlid);
		}
		$.get("/xml/", { m: "listjobs", s: "search_fast", list: "domenii", r: $("#current_url").val()}, function(data) {
			            $("#alegedomeniu").html(data);
						close_all_page_overlayers_except(ovlid);
		                });
		if($("#deschide_domenii").parents("div.grupare-overlayer")){$("#deschide_domenii").parents("div.grupare-overlayer").css("position","relative");}
		return false;
	});

	$("#inchide_domenii").click(function() {
		$("#overlayer_domenii").hide();
		return false;
	});

	// Popup companii
	$("#deschide_companii").click(function() {
		$("#overlayer_companii").show();
		var ovlid = "overlayer_companii";
		if(!check_opened_overlayer(ovlid)) {
			register_overlayer(ovlid);
		}
		$.get("/xml/", { m: "listjobs", s: "search_fast", list: "companii", r: $("#current_url").val()}, function(data) {
			            $("#alegecompanie").html(data);
						close_all_page_overlayers_except(ovlid);
		});
		if($("#deschide_companii").parents("div.grupare-overlayer")){$("#deschide_companii").parents("div.grupare-overlayer").css("position","relative");}
		return false;
	});

	$("#inchide_companii").click(function() {
		$("#overlayer_companii").hide();
		return false;
	});
	
	// Popup jobalert overlayer
	/*
	$("#deschide_overlayer_jobalert").click(function() {
		show_jobalert_overlayer();
		return false;
	});*/

	$("#inchide_overlayer_jobalert").click(function() {
		$("#overlayer_jobalert").hide();
		return false;
	});
	
	$('#jobsperpage').change(
		function() {
			document.location = "/?m=common&s=listjobs&o=jobsperpage&n=" + $('#jobsperpage').val();
	});

	// Harta
	var maplinks = $("a.vhlink");
	jQuery.each(maplinks, function(i, vhlink) {
		var jid = vhlink.id.replace("linkharta_", "");
		$('#linkharta_' + jid).live('click', function() {return toggleMap(jid)});
		$('#closemap_' + jid).live('click', function() {return toggleMap(jid)});
	});

});

function show_jobalert_overlayer() {	
	var params = '';
	var ajaxUrl = "/service/?m=jobalert&s=overlayer_simple&o=default";
	link = $("#deschide_overlayer_jobalert").attr('href').split('&');
	$.each(link, function(key, paramOption) { 
		
		elementToSearch = new RegExp("q");		
		if(elementToSearch.test(paramOption) == true) {
			params += '&' + paramOption;
		}
		elementToSearch = new RegExp("f_domeniu");		
		if(elementToSearch.test(paramOption) == true) {
			params += '&' + paramOption;
		}
		elementToSearch = new RegExp("f_oras");		
		if(elementToSearch.test(paramOption) == true) {
			params += '&' + paramOption;
		}
	});
	if(params != ''){
		ajaxUrl = ajaxUrl + params;
	}
	$("#overlayer_jobalert").show();
	$.get(ajaxUrl, {}, function(data) {
		$("#overlayer_jobalert_content").html(data);
	});	
	return false;		
}

function recount_checked_jobs() {
	id_list = '';
	checked_jobs = 0;
	jQuery.each(check_boxes, function(i, cb) {
		var jid = cb.id.replace("ljcb_", "");
		if (cb.checked == true) {
			id_list += jid + ',';
			checked_jobs++;
		}
    });

	if (checked_jobs >= 3) disable_job_checkboxes();
	else enable_job_checkboxes();
}

function disable_job_checkboxes() {
	jQuery.each(check_boxes, function(i, cb) {
		var jid = cb.id.replace("ljcb_", "");
		if (cb.checked == false) cb.disabled = true;
    });
}

function enable_job_checkboxes() {
	jQuery.each(check_boxes, function(i, cb) {
		var jid = cb.id.replace("ljcb_", "");
		if (cb.checked == false) cb.disabled = false;
    });
}

function submit_job_compare() {
	recount_checked_jobs();

	if (checked_jobs > 3) {
		alert('Nu poti compara mai mult de 3 joburi la un moment dat.');
		return false;
	} else if (checked_jobs < 2) {
		alert('Trebuie sa alegi cel putin doua locuri de munca pentru a putea face o comparatie.');
		return false;
	}
	else {
		id_list = id_list.substr(0, id_list.length-1);
	} 

	url = '/?m=common&s=listjobs&o=compare&joblist=' + id_list;
	window.open(url);
}

function swap_letters(listclass, idtemplate, letteridtemplate, letter) {
	itemid = idtemplate + '_' + letter;
	list = $("." + listclass);
	jQuery.each(list, function(i, listitem) {
		var id = listitem.id;
		if(id==itemid) {
			$("#" + id).show();
		} else {
			$("#" + id).hide();
		}
	});

	newletid = letteridtemplate + '_' + letter;
	letlist = $(".alfabet > li");
	jQuery.each(letlist, function(i, listitem) {
		var id = listitem.id;
		$("#" + id).removeClass('letter');

		if(id==newletid) {
			$("#" + id).removeClass('letter');
			$("#" + id).addClass('selected_letter');
		} else {
			$("#" + id).removeClass('selected_letter');
			$("#" + id).addClass('letter');
		}
	});

	return false;
}

function letter_nav(container, listtype, page, letter) {
	$.get("/xml/", { m: "listjobs", s: "search_fast", list: listtype, r: $("#current_url").val() + '&pagina=' + page + '&litera=' + letter}, function(data) {
		$("#" + container).html(data);
	});
	return false;
}

// Google Maps

var geocoder;
var map;
var draggable_tf = false;
var maps_show_bubble = true;
var geocoder;
var gDefaultLat = 44.43547597440659;
var gDefaultLng = 26.1023790834588;

function toggleMap(jid) {
	var ovl = $('#mapcontainer_' + jid);
	if(ovl.css('display') == 'none') {
		googleMapsInitialize(jid);
		ovl.show();
		map.checkResize();
		map.setCenter(new GLatLng($('#o_map_lat_' + jid).val(), $('#o_map_lng_' + jid).val()));
	} else {
		ovl.hide();
	}
	return false;
}

function googleMapsInitialize(jid) {
	if (GBrowserIsCompatible()) {
		geocoder = new GClientGeocoder();

		var crt_lat;
		var crt_lng;
		var zoom_level = 16;
		var drag_text = $('#o_map_bubble_text_' + jid).html();
		map = new GMap2(document.getElementById("map_canvas_" + jid));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());

		var center = new GLatLng($('#o_map_lat_' + jid).val(), $('#o_map_lng_' + jid).val());
		map.setCenter(center, zoom_level);
		map.setMapType(G_NORMAL_MAP);

		marker = new GMarker(center, {draggable: draggable_tf});

		map.addOverlay(marker);
		if (maps_show_bubble) {
			marker.openInfoWindowHtml(drag_text);
		}
	}
}

