// contorul de domenii
var cntDomain = 1;
// contorul de orase
var cntCity = 1;
// contorul de contracte
var cntJobtype = 1;
// contorul de experienta
var cntCareerLevel = 1;
// contorul de nivel studii
var cntStudyLevel = 1;

// numarul maxim de domenii
var nrMaxDomains = 5;
// numarul maxim de orase
var nrMaxCities = 5;
// numarul maxim de tipuri de contract
var nrMaxJobtypes = 5;
// numarul maxim de nivele de experienta
var nrMaxCareerLevels = 5;
// numarul maxim de nivele de studii
var nrMaxStudyLevels = 5;

$("span.error").hide();

$(document).ready(function() {
	//jobaAlert = new jobAlert();

	var weHaveOverlayer = $("#overlayer_jobalert").length;
	if( weHaveOverlayer ) {
		// numarul maxim de domenii
		nrMaxDomains = 3;
		
		// numarul maxim de orase
		nrMaxCities = 3;
	}
	
	if($("#strainatate").attr('checked')) {
		$("#adauga-city-want").hide();
	}
	// Daca optez pentru strainatate, localitatile sunt dezactivate 
	$("#strainatate").click(function(event) {
		nrElements = getNrElements("city-want");
		if($("#strainatate").attr('checked')) {
			for(i = 1; i <= nrElements; i++) {
				$("#city-want-sel-" + i ).attr('disabled', true);
				$("#adauga-city-want").hide();
			}
		} else {
			for(i = 1; i <= nrElements; i++) {
				$("#city-want-sel-" + i ).attr('disabled', false);
				$("#adauga-city-want").show();
			}
		}		
        return true;
    });
	
	$("#keywordDefaultText").show();
	$("#keywordNojobsText").hide();
	$("#keywordCountedText").hide();
	
	// Hide additional options on load
	// $(".moreOptions").hide(); 

	// Slide up/down (depending on open/close state)
	$("a.optionsTrigger").click(function(){
		$(this).toggleClass("active").next().slideToggle("slow");
		return false; //Prevent the browser jump to the link anchor
	});
	
	// Validare formular inainte de submit	
	$('#saveAlert').bind('click', function(e) {
		
		calculateKeywords();
		errorDom = false;
		errorCity = false;
		minKeywordSize = 3;
		
		var kwVal = $('#lookingfor').val();
		nrDomainElements = getNrElements("domain-want");
		nrCityElements = getNrElements("city-want");
		
		for(i = 1; i <= nrDomainElements; i++) {
			domVal = $("#domain-want-" + i ).val();
			if(domVal == 0) {
				errorDom = true;
			}
		}
		for(i = 1; i <= nrCityElements; i++) {
			cityVal = $("#city-want-sel-" + i ).val();
			if(cityVal == 0) {
				errorCity = true;
			}
		}	
		if((kwVal.length == 0 || kwVal.length < minKeywordSize) && errorDom && errorCity && !($("#strainatate").attr('checked'))){
			$("span.error").show();
			showAlertConditionErrors(showErrors = true);
			return false;
		}else {
			return true;	
		}
	});
	
	// Daca selecteaza una din optiunile: keyword, domeniu sau localitate, dispar mesajele de eroare
	$('#lookingfor').live('change', function() {	
		if($("#lookingfor").val() != '') {
			showAlertConditionErrors(showErrors = false);
		}
	});
	$('#domain-want-1').live('change', function() {
		if($("#domain-want-1 option:selected").val() != 0) {
			showAlertConditionErrors(showErrors = false);
		}
	});
	$('#city-want-sel-1').live('change', function() {
		if($("#city-want-sel-1 option:selected").val() != 0) {
			showAlertConditionErrors(showErrors = false);
		}
	});

	if($('#email').length > 0) {
		$('#email').change(checkEmail);
	}
}
);

function checkEmail() {
	$("#jobalert").validate().element("#email");
}
	

function showAlertConditionErrors(showErrors){	
	$('#lookingfor_error').html(showErrors ? "Nu ai completat niciun cuvant cheie" : "");
	$('#list-domain-want').next().next().html(showErrors ? "Nu ai ales un domeniu" : "");
	$('#list-city-want').next().next().html(showErrors ? "Nu ai ales o localitate" : "");
}

function checkKeyword() {
	/*var doSearch = false;
	var q = $("#lookingfor").val();
	
	if(q.length > 2 ){
		doSearch = true;	
	}
	if(doSearch) {		
		$.get("/?m=service&s=jobalert&o=search&q="+q, {},
			function(data){
				if(data == 0){
					$("#keywordDefaultText").hide('slow');
					$("#keywordNojobsText").show('slow');
					$("#keywordCountedText").hide('slow');
				} else if(data > 0) {
					$("#keywordDefaultText").hide('slow');
					$("#keywordNojobsText").hide('slow');
					$("#keywordCountedText").show('slow');
					$("#keywordCountedNumber").html(data == 1 ? '1 anunt' : data +' anunturi');			
				}
			}
		);
	}*/
	return false;
}

/*********** SELECTOR Javascript *********/



// functia adauga un domeniu de la 'vreau-job'
function adaugaDomWant() {
	len = getNrElements("domain-want");

	// numarul maxim de domenii 
	if (len < nrMaxDomains) {
		loadDomain();
		len++;
		if(len == nrMaxDomains) {
			linkAdaugaButon("domain-want", 0);
		}
		showDeleteButton("domain-1", 1);
	}

	return false;
}

// functia adauga un box de orase ptr. 'vreau-job'
function adaugaCityWant() {
	len = getNrElements("city-want");

	if(len < nrMaxCities) {
		loadCity();
		len++;
		if(len == nrMaxCities) {
			linkAdaugaButon("city-want", 0);
		}
		showDeleteButton("city-1", 1);
	}
}

// functia adauga un box de orase ptr. 'vreau-job'
function adaugaJobtype() {
	len = getNrElements("jobtype-want");

	if(len < nrMaxJobtypes) {
		loadJobtype();
		len++;
		if(len == nrMaxJobtypes) {
			linkAdaugaButon("jobtype-want", 0);
		}
		showDeleteButton("jobtype-1", 1);
	}
}

// functia adauga un box de nivel cariera
function adaugaCareerLevel() {
	len = getNrElements("career-level-want");

	if(len < nrMaxCareerLevels) {
		loadCareerLevel();
		len++;
		if(len == nrMaxCareerLevels) {
			linkAdaugaButon("career-level-want", 0);
		}
		showDeleteButton("career-level-1", 1);
	}
}

// functia adauga un box de nivel study
function adaugaStudyLevel() {
	len = getNrElements("study-level-want");

	if(len < nrMaxStudyLevels) {
		loadStudyLevel();
		len++;
		if(len == nrMaxStudyLevels) {
			linkAdaugaButon("study-level-want", 0);
		}
		showDeleteButton("study-level-1", 1);
	}
}


// functia returneaza numarul de div-uri domenii/orase/etc de la 'vreau-job'
function getNrElements(divName) {
	return $("#list-" + divName).children("div").length;
}

function linkAdaugaButon(buttonName, visible) {
	if (visible == 1) {
		$("#adauga-" + buttonName).show();
	} else {
		$("#adauga-" + buttonName).hide();
	}
	return true;
}

// functia arata sau ascunde butoanele de stergere 
function showDeleteButton(buttonElementId, visible) {
	if (visible == 1) {
		$("#sterge-" + buttonElementId).show();
	} else {
		$("#sterge-" + buttonElementId).hide();
	}
}

// functia incarca un domeniu pentru 'vreau-job'
function loadDomain() {
	incrementCounter('domain');
	$.get("/xml/", {
		m : "jobalert",
		s : "domains",
		key : cntDomain
		}, function(data) {
			$("#list-domain-want").append(data);
		});
}

// functia incarca un box orase pentru 'vreau-job'
function loadCity() {
	incrementCounter('city');
	$.get("/xml/", {
		m : "jobalert",
		s : "cities",
		key : cntCity
		}, function(data) {
			$("#list-city-want").append(data);
		});
}

// functia incarca un box de tipuri de job
function loadJobtype() {
	incrementCounter('jobtype');
	$.get("/xml/", {
		m : "jobalert",
		s : "jobtypes",
		key : cntJobtype
		}, function(data) {
			$("#list-jobtype-want").append(data);
		});
}

// functia incarca un box nivel de cariera
function loadCareerLevel() {
	incrementCounter('career_level');
	$.get("/xml/", {
		m : "jobalert",
		s : "careerlevel",
		key : cntCareerLevel
		}, function(data) {
			$("#list-career-level-want").append(data);
		});
}

// functia incarca un box nivel de cariera
function loadStudyLevel() {

	incrementCounter('study_level');
	$.get("/xml/", {
		m : "jobalert",
		s : "studylevel",
		key : cntStudyLevel
		}, function(data) {
			$("#list-study-level-want").append(data);
		});
}

function incrementCounter(whatToIncrement) {
	switch(whatToIncrement) {
		case "domain" :
			cntDomain = cntDomain + 1 ;  break;
		case "city" :
			cntCity = cntCity + 1 ; break;
		case "jobtype" :
			cntJobtype = cntJobtype + 1 ; break;
		case "career_level" :
			cntCareerLevel = cntCareerLevel + 1 ; break;
		case "study_level" :
			cntStudyLevel = cntStudyLevel + 1 ; break;
		default:
			break;
	}
}

// functia sterge un domeniu din box-ul 'vreau-job'
function delDomain(obj, domId) {
	len = getNrElements("domain-want");	
	// determin id-ul de domeniu
	if($(obj).closest("div[name=list-domain-want]").attr("name") == 'list-domain-want') {
		if(len > 1) {
			$("#domain-" + domId).remove();

			if(len == nrMaxDomains) {
				linkAdaugaButon('domain-want', 1);
			}
			len--;
			if(len == 1){
				showDeleteButton("domain-" + len, 0);
			}
		}
	}
	return false;
}

// functia sterge un selector de tip oras din 'vreau-job'
function delCity(obj, wantId) {
	len = getNrElements("city-want");	
	if($(obj).closest("div[name=list-city-want]").attr("name") == 'list-city-want') {;
		if(len > 1) {
			$("#city-" + wantId).remove();

			if(len == nrMaxCities) {
				linkAdaugaButon("city-want", 1);
			}
			len--;
			if(len == 1){
				showDeleteButton("city-" + len, 0);
			}
		}
	}
}

// functia sterge un selector de tip de contract
function delJobtype(obj, wantId) {
	len = getNrElements("jobtype-want");	
	if($(obj).closest("div[name=list-jobtype-want]").attr("name") == 'list-jobtype-want') {
		if(len > 1) {
			$("#jobtype-" + wantId).remove();

			if(len == nrMaxJobtypes) {
				linkAdaugaButon("jobtype-want", 1);
			}
			len--;
			if(len == 1){
				showDeleteButton("jobtype-" + len, 0);
			}
		}
	}
}

// functia sterge un selector de tip nivel de cariera
function delCareerLevel(obj, wantId) {
	len = getNrElements("career-level-want");	
	if($(obj).closest("div[name=list-career-level-want]").attr("name") == 'list-career-level-want') {
		if(len > 1) {
			$("#career-level-" + wantId).remove();

			if(len == nrMaxCareerLevels) {
				linkAdaugaButon("career-level-want", 1);
			}
			len--;
			if(len == 1){
				showDeleteButton("career-level-" + len, 0);
			}
		}
	}
}

// functia sterge un selector de tip nivel de studii
function delStudyLevel(obj, wantId) {
	len = getNrElements("study-level-want");	
	if($(obj).closest("div[name=list-study-level-want]").attr("name") == 'list-study-level-want') {
		if(len > 1) {
			$("#study-level-" + wantId).remove();

			if(len == nrMaxStudyLevels) {
				linkAdaugaButon("study-level-want", 1);
			}
			len--;
			if(len == 1){
				showDeleteButton("study-level-" + len, 0);
			}
		}
	}
}

function calculateKeywords() {
	var vMeseriiString = '';
	$('#smartInputHolder input').each(function() { 
		if ($.trim($(this).val()) !== '') {
			vMeseriiString += $.trim($(this).val()) + ', ';
		}
	});	
	if (vMeseriiString.length > 0) {
		vMeseriiString = vMeseriiString.substr(0, vMeseriiString.length - 2);
	}
	
	$('#lookingfor').val(vMeseriiString);	
	return true;
}

function smartInputChangedHandler() {
	calculateKeywords();
	//checkKeyword();
}

// The autocompleter function used in the smartInput controller.
function smartInputAutocompleterInit(idText, idValue) {
	attachAutoMeserii(idText, idValue);
}

/*
* Fostul cod jquery care aduga elemente
*
function jobAlert(){ 
	
	this.lastOp = Array();
	
	this.config = new Object();
	this.config["domains"] = new Object();
	this.config["domains"]["select"] = new Object();
    this.config["domains"]["select"]["id"] = "domain";
    this.config["domains"]["select"]["errMsg"] = "Selecteaza domeniul";
	this.config["domains"]["data"] = new Object();
	this.config["domains"]["delclass"] = "sterge-jobdorit";
	this.config["domains"]["delprefix"] = "deldom_";
	this.config["domains"]["btnaddid"] = "add_domain";
	this.config["domains"]["hidden"] = "hidden_domains[]";
	this.config["domains"]["name"] = "domains";
	this.config["domains"]["index"] = 0;
	this.config["domains"]["maxElNo"] = 5;
	this.config["domains"]["maxError"] = "Alege max. "+this.config["domains"]["maxElNo"]+" domenii";
	
	this.config["cities"] = new Object();
	this.config["cities"]["select"] = new Object();
    this.config["cities"]["select"]["id"] = "city";
    this.config["cities"]["select"]["errMsg"] = "Selecteaza orasul";
	this.config["cities"]["data"] = new Object();
	this.config["cities"]["delclass"] = "sterge-jobdorit";
	this.config["cities"]["delprefix"] = "delcities_";
	this.config["cities"]["btnaddid"] = "add_city";
	this.config["cities"]["hidden"] = "hidden_cities[]";
	this.config["cities"]["name"] = "cities";
	this.config["cities"]["index"] = 0;
	this.config["cities"]["maxElNo"] = 5;
	this.config["cities"]["maxError"] = "Alege max. "+this.config["cities"]["maxElNo"]+" localitati";
	
	this.config["contract"] = new Object();
	this.config["contract"]["select"] = new Object();
    this.config["contract"]["select"]["id"] = "contract";
    this.config["contract"]["select"]["errMsg"] = "Selecteaza tipul contractului";
	this.config["contract"]["data"] = new Object();
	this.config["contract"]["delclass"] = "sterge-jobdorit";
	this.config["contract"]["delprefix"] = "delcontract_";
	this.config["contract"]["btnaddid"] = "add_contract";
	this.config["contract"]["hidden"] = "hidden_contract[]";
	this.config["contract"]["name"] = "contract";
	this.config["contract"]["index"] = 0;
	this.config["contract"]["maxElNo"] = 7;
	this.config["contract"]["maxError"] = "Maxim "+this.config["contract"]["maxElNo"]+" tipuri contract";
	
	this.config["cariera"] = new Object();
	this.config["cariera"]["select"] = new Object();
    this.config["cariera"]["select"]["id"] = "cariera";
    this.config["cariera"]["select"]["errMsg"] = "Selecteaza nivelul carierei";
	this.config["cariera"]["data"] = new Object();
	this.config["cariera"]["delclass"] = "sterge-jobdorit";
	this.config["cariera"]["delprefix"] = "delcariera_";
	this.config["cariera"]["btnaddid"] = "add_cariera";
	this.config["cariera"]["hidden"] = "hidden_cariera[]";
	this.config["cariera"]["name"] = "cariera";
	this.config["cariera"]["index"] = 0;
	this.config["cariera"]["maxElNo"] = 5;
	this.config["cariera"]["maxError"] = "Alege max. "+this.config["cariera"]["maxElNo"]+" elemente";
	
	this.config["studii"] = new Object();
	this.config["studii"]["select"] = new Object();
    this.config["studii"]["select"]["id"] = "studii";
    this.config["studii"]["select"]["errMsg"] = "Selecteaza nivelul studii";
	this.config["studii"]["data"] = new Object();
	this.config["studii"]["delclass"] = "sterge-jobdorit";
	this.config["studii"]["delprefix"] = "delstudii_";
	this.config["studii"]["btnaddid"] = "add_studii";
	this.config["studii"]["hidden"] = "hidden_studii[]";
	this.config["studii"]["name"] = "studii";
	this.config["studii"]["index"] = 0;
	this.config["studii"]["maxElNo"] = 5;
	this.config["studii"]["maxError"] = "Alege max. "+this.config["studii"]["maxElNo"]+" niveluri studii";
	
	this.defineAddBtnHandler = function(section){
        $("#" + this.config[section]["btnaddid"]).click(function(event){			
        	//var hidden = jobaAlert.config[section]["hidden"];
            jobaAlert.lastOp[jobaAlert.config[section]["index"]] = "add";
            if(jobaAlert.validateCombo(jobaAlert.config[section])) {
                jobaAlert.addSectionData(jobaAlert.config[section]);				
                jobaAlert.refreshDisplay(jobaAlert.config[section],0, "");
            }
            return false;
        });
    }
    
     // define handlers for delete buttons 
    this.defineDeleteHandlers = function(section){ 
       $("." + jobaAlert.config[section]["delclass"]).click(function(event){           
           jobaAlert.lastOp[jobaAlert.config[section]["index"]] = "del";
           iddata = event.target.id.replace(jobaAlert.config[section]["delprefix"],"");        
           textdata = jobaAlert.config[section]["data"][iddata]["selecttext"];
           jobaAlert.delSectionData(jobaAlert.config[section]["data"],iddata);
           jobaAlert.refreshDisplay(jobaAlert.config[section],iddata, textdata);                   
       });         
    }
    
    
    // validate select
	this.validateCombo = function(confObj){
		var error = 0;
    	var added = $("#"+ "hidden_" +confObj['name']).children().size();
    	var cached = $("#"+ "hidden_" +confObj['name']+"_cache").children().size();
    	var selTotal = added + cached;
        if (($("#" + confObj["select"]["id"]).val() == "0") || (selTotal > confObj["maxElNo"]-1)) {
            error++;			
            $("#" + confObj["select"]["id"]).addClass('error');
            if (selTotal > confObj["maxElNo"]-1) {
            	$("#" + confObj["select"]["id"]).next().next().html(confObj["maxError"]);
            }else {
            	$("#" + confObj["select"]["id"]).next().next().html(confObj["select"]["errMsg"]);
            }
            exit;	
        }else {
            $("#" + confObj["select"]["id"]).removeClass('error');
            $("#" + confObj["select"]["id"]).next().next().html(' ');       
        }
		return !error;       
	}
	
	// add section data to data object
	this.addSectionData = function(dataObj) {		
		var dataId = "id_" + $("#" + dataObj["select"]["id"]).val();		
		var dataId = $("#" + dataObj["select"]["id"]).val();		
		dataObj["data"][dataId] = new Object();
		dataObj["data"][dataId]["selecttext"] = $("#" + dataObj["select"]["id"] + " option:selected").text();
	}
	
	
	// update section diplay
	this.refreshDisplay = function(confObj,firstComboDataId, firstComboDataText) {
	   if(this.lastOp[confObj["index"]] == "add") {
			// delete item from select
			$("#" + confObj["select"]["id"] + " option:selected").remove();
	   }
	   else if(this.lastOp[confObj["index"]] == "del"){
			// append data to select
			$("#" + confObj["select"]["id"]).prepend('<option value="'+ firstComboDataId +
			                      '">' + firstComboDataText + '</option>');
	   }	   
	   
	   this.refreshSelected(confObj);
	   this.defineDeleteHandlers(confObj["name"], 0);
    }
	
     this.refreshSelected = function(confObjData) {

	       var strHTML = "";
	       var strHidden = "";
		   var nrlangs = 0;
	       for (var item in confObjData["data"]){
	           nrlangs++;
			   // remove saved info from combo		   		   
			   if(this.lastOp[0] == "load") {		      
				  var id = item.replace("id_","");
				  $("#" + jobaAlert.config["languages"]["firstCombo"]["id"] + " [value='" + id + "']").remove();
			   }
			   strHTML += '<li class="abilitati-completate">' + confObjData["data"][item]["selecttext"] + 
	                      ' <input type="button" class="sterge-abilitate ' + 
						  confObjData["delclass"] + '" id = "' + 
						  confObjData["delprefix"] + item + '"/></li>';   
			  strHidden+='<input type="hidden" name="'+confObjData["hidden"]+'"value="'+item+'">';			                     
		       }
			   //display lang number in label
			   if (this.lastOp[0] == "load") {
			       $("#nr_limba").html(nrlangs+1);
			   }	
		       $("#"+confObjData["name"]+"_container").html(strHTML);
		       $("#hidden_"+confObjData["name"]).html(strHidden);	         
	    } 
    
    // delete section data from data object 
	this.delSectionData = function(confObjData,idfirstselectdata){	         
	   delete(confObjData[idfirstselectdata]);
	}
	
	
	this.setInputTextValue = function (id, str) {
		if ($('#'+id).val() == '' || $('#'+id).val() == str)
		{
			$('#'+id).attr("value", str);
			$('#'+id).addClass(myjob.exampleClass);
		}
	
		$('#'+id).click(function(){
			if ($(this).val() == str) {
				$(this).attr("value", "");
				$(this).removeClass(myjob.exampleClass);
			}
		});
    }
    
    //this.setInputTextValue('lookingfor', 'Ex:secretara');

	//this.defineAddBtnHandler("domains");
	//this.defineAddBtnHandler("cities");
	//this.defineAddBtnHandler("contract");
	//this.defineAddBtnHandler("cariera");
	//this.defineAddBtnHandler("studii");
}*/
