// a few notes here.  These variables are carefully named so they always mean the same thing.
// limit is always the total number of items allowed (industrys, functions, etc)
// type is "industries" "functions" ... etc (more to add later)
// item refers to the industry or function ID.  
// formID refers to the form ID of the list of checkboxes in the overlay, NOT the main form on the page where these overlays are included!

function showOverlay(type,limit) {
	
	if (type == "certifications") {
		openCertsSub(type,limit);
	} else if (type == "skills") {
		openSkillsSub(type,limit);
	} else if (type == "languages") {
		openLanguagesSub(type,limit);
	}
	
		checkRemaining(type,limit);
		$j('#select-'+type).jqm({toTop: true});
		$j('#select-'+type).jqmShow();
	
	
}

function toggleSelection(item, type, limit) {
	var elem = $j('#'+item);
	if(elem.is(':checked')){		
			elem.parent(".jqmScrollItem").addClass("selected");			
	}
	else{		
		elem.parent(".jqmScrollItem").removeClass("selected");
	}	
	checkRemaining(type,limit);
}

function checkRemaining(type, limit) {
	var checkedBoxes = "#select-"+type+" input[type=checkbox]:checked";
	var unCheckedBoxes = "#select-"+type+" :input[type=checkbox]:not(:checked)";
	var numberId = "#"+type+"-number";
	var remaining, suffix="selections";
	var errMsg=""; // for
	var totalSelected = $j(checkedBoxes).size();
	//alert(totalSelected);
	// If selected items are more than 6 (due to data migration etc.)	
	
	if ( totalSelected > limit) {
		//alert("totalSelected: "+totalSelected);
		//alert("limit: "+limit);
		errMsg="Maximum selections exceeded. ";
		$j("#select-"+type+" .msg h4").addClass('error')
										.children('.warning').html(errMsg);
	}
	else{
		errMsg="";
		$j("#select-"+type+" .msg h4").removeClass('error')
										 .children('.warning').html(errMsg);
	}
	
	// make sure all boxes have the proper style select on them	
	$j(checkedBoxes).each(function(item) {
		$j("#"+this.id).parent(".jqmScrollItem").addClass("selected");
	});
	if ( totalSelected >= limit) {
		$j(unCheckedBoxes).attr("disabled", true);
		//$j(numberId).html("0");
		remaining=0;
		
	} else if (totalSelected == (limit-1)){
		$j(unCheckedBoxes).attr("disabled", false);
		//$j(numberId).html(limit - totalSelected);
		remaining=limit - totalSelected;
		//add changing selections to selection
	} else {
		$j(unCheckedBoxes).attr("disabled", false);
		//$j(numberId).html(limit - totalSelected);
		remaining=limit - totalSelected;
	}
	if(remaining<=1){
		suffix="selection";
	}	
	if(remaining<=0){
		$j(numberId).addClass('error'); // make font red
	}
	else{
		$j(numberId).removeClass('error');
	}
	$j(numberId).html(remaining.toString())
				.next().text(" "+suffix+" remaining");
}

function clearAll(type, limit) {
	var checkedBoxes = "#select-"+type+" :checked";
	var item;
	var tempArray;
	$j(checkedBoxes).each(function() {
		tempArray=this.id.split("_");
		item=tempArray[1];
		$j("#"+this.id).attr('checked', false);
		$j("#"+this.id).parent(".jqmScrollItem").removeClass("selected");
		if (type=="skills"){
			$j("#s_"+item+"_level").removeClass("show")
									.addClass("hide");
			$j("input[name='proficiency_"+item+"']").attr("checked","");
			$j(".jqmScrollingListInner div[id^='s_category_']").removeClass("open").addClass("closed");
			$j(".jqmScrollingListInner div[id^='s_categoryList_']").removeClass("show").addClass("hide");
		} else if (type=="languages"){
			$j("#l_"+item+"_level").removeClass("show")
								   .addClass("hide");
			$j("input[name='proficiency_"+item+"']").attr("checked","");
		} else {
			//
		}
	});
	checkRemaining(type,limit);
}

function saveAndClose(type, limit) {
	var checkedBoxes = "#select-"+type+" :checked";
	var itemList = "";
	var i = 1;
	var selected_list = $j("#selected-"+type+"-list");
	if(selected_list.length > 0){
		selected_list.empty();
		$j(checkedBoxes).each(function() {
			var text = '<li id="'+type+this.value+'">'+$j("#"+type+"_text_"+this.value).html()+' <a href="#" onClick="removeItem('+this.value+', \''+type+'\', '+limit+');return false;">(remove)</a></li>';
			selected_list.append(text);
			itemList = itemList+this.value+",";
			i++;
		});
		if(selected_list.hasClass('too-many')){
			selected_list.removeClass('too-many');// if too many class existed (due to migration overflow)
		}
	}
	//$j("#selected-"+type+"-list li").remove();
	
	//$j("#selected-"+type+"-list").removeClass('too-many'); 
	
	if (itemList.charAt(itemList.length-1) == ",") {
		itemList = itemList.slice(0,-1);
	}
	var itemCount = getItemCount(itemList.split(","));
	if (itemCount >= limit) {
		if ($j("#"+type+"-add-button").hasClass("show")) {
			$j("#"+type+"-add-button").addClass("hide");
		} 
	} else {
		if ($j("#"+type+"-add-button").hasClass("hide")) {
			$j("#"+type+"-add-button").addClass("show");
		}
	}
	// change number next to add button if necessary.
	if (itemCount == 0 || itemList == "") {
		$j("#"+type+"-button-text").html("No "+type+" currently selected.");
	} else if (itemCount > 0 && itemCount < limit){
		var allowedLeft = limit - itemCount;
		$j("#"+type+"-button-text").html("Add ["+allowedLeft+"] more "+type+". ");
	} else {
		$j("#"+type+"-button-text").html("");
	}
	$j("#"+type+"List").val(itemList);
						
	$j("#select-"+type).jqmHide();
}
function cancelAndClose(type){
	// simulate the click event for close link
	if(type){
		var overlay_id = "select-"+type;
		overlay_remove_error_msg(overlay_id);
		
		var modalWindowCloseLink = $j("#select-"+type+" .jqmClose");
		 if(modalWindowCloseLink.length){
			 modalWindowCloseLink.click()
		 }
	}	
}

function removeItem(item, type, limit) {
		// remove the item
		var itemList = $j("#"+type+"List").val();
		if (itemList.charAt(itemList.length-1) == ",") {
			itemList = itemList.slice(0,-1);
		}
		var itemArray=itemList.split(",");
		
		var itemLevelList=null;
		var itemLevelArray=null;
		if ($j("#"+type+"LevelList").length>0){
			itemLevelList=$j("#"+type+"LevelList").val()
			if (itemLevelList.charAt(itemLevelList.length-1) == ",") {
				itemLevelList = itemLevelList.slice(0,-1);
			}			
			itemLevelArray=itemLevelList.split(",");
		}
		var removedIndex=-1;
		for (var i=0; i<itemArray.length; i++) {
			if (itemArray[i]==item){
				removedIndex=i;
				break;
			}
		};
		itemArray.splice(removedIndex,1);
		itemList=itemArray.join(",");
		if (itemLevelArray!=null){
			itemLevelArray.splice(removedIndex,1);
			itemLevelList=itemLevelArray.join(",");
		}
		
		
		$j("#"+type+"List").val(itemList);
		if ($j("#"+type+"LevelList").length>0){
			$j("#"+type+"LevelList").val(itemLevelList);
		}		
		
		$j("#"+type.charAt(0)+"_"+item).attr('checked', false);
		$j("#"+type.charAt(0)+"_"+item).parent(".jqmScrollItem").removeClass("selected");
		
		if (type=="skills"){
			$j("#s_"+item+"_level").removeClass("show")
									.addClass("hide");
			$j("input[name='proficiency_"+item+"']").attr("checked","");
		} else if (type=="languages"){
			$j("#l_"+item+"_level").removeClass("show")
								   .addClass("hide");
			$j("input[name='proficiency_"+item+"']").attr("checked","");
		}		
		
		$j("#"+type+item).remove();	
		// display "add" button if necessary
		var itemCount = itemList.split(",").length;
		if (itemCount >= limit) {
			if ($j("#"+type+"-add-button").hasClass("show")) {
				$j("#"+type+"-add-button").removeClass("show");
				$j("#"+type+"-add-button").addClass("hide");
			} 
		} else {
			if ($j("#"+type+"-add-button").hasClass("hide")) {
				$j("#"+type+"-add-button").removeClass("hide");
				$j("#"+type+"-add-button").addClass("show");
			}
		}
		// change number next to add button if necessary.
		if (itemCount == 0 || itemList == "") {
			$j("#"+type+"-button-text").html("No "+type+" currently selected.");
		} else if (itemCount > 0 && itemCount < limit){
			var allowedLeft = limit - itemCount;
			$j("#"+type+"-button-text").html("Add ["+allowedLeft+"] more "+type+". ");
		} else {
			$j("#"+type+"-button-text").html("");
		}

		// change styles back to normal when errors are gone.
		if (itemCount <= limit) {
			$j("#selected-"+type+"-list.too-many").removeClass("too-many");
		}
}

function resetForm(type) {
	document.getElementById("functions-form").reset();
	checkRemaining("functions",6)
	alert("form has been reset!");
}

function validateBeforeSubmit (i_limit, f_limit) {
	//clean up list to make sure there is no trailing comma
	var itemList = $j("#industriesList").val();
	if (itemList.charAt(itemList.length-1) == ",") {
		itemList = itemList.slice(0,-1);
		$j("#industriesList").val(itemList);
		
	}
	var itemList = $j("#functionsList").val();
	if (itemList.charAt(itemList.length-1) == ",") {
		itemList = itemList.slice(0,-1);	
		$j("#functionsList").val(itemList);		
		
	}
	//Check that too many functions/industries have not been selected
	var totalIndustries = $j("#select-industries :checked").size();
	/*
	if (totalIndustries > i_limit) {
		alert("you may only have "+i_limit+" selected before you can continue. Please remove some.");
		return false;
	}
	*/
	var totalFunctions = $j("#select-functions :checked").size();
	/*
	if (totalFunctions > f_limit) {
		alert("you may only have "+f_limit+" selected before you can continue. Please remove some.");
		return false;
	}
	*/
	if (totalIndustries > i_limit || totalFunctions > f_limit) {
		alert("You can have at most "+i_limit+" Industries and "+f_limit+" functions. Please remove some.");
		return false;
	}
		
}


// overlay save and close functions for Locations, Languages, Skills and Certs - these are one-offs since they need to integrate with the old code.
function openCertsSub(type,limit) {
	var allCheckBoxes = "#select-certifications input[type=checkbox]";
	$j(allCheckBoxes).each(function() {
		if ($j("#certificationsList").val().indexOf(this.value) >= 0) {
			$j("#c_"+this.value).attr("checked","checked");
			$j("#c_"+this.value).parent(".jqmScrollItem").addClass("selected");
			if ($j("#c_"+this.value).parent().parent().hasClass("hide")) {
				$j("#c_"+this.value).parent().parent().removeClass("hide");
				$j("#c_"+this.value).parent().parent().addClass("show");
			}
			if ($j("#c_"+this.value).parent().parent().prev().hasClass("closed")) {
				$j("#c_"+this.value).parent().parent().prev().addClass("open");
				$j("#c_"+this.value).parent().parent().prev().removeClass("closed");
				
			}			
		}
	});
}

function openSkillsSub(type,limit) {
	
	var checkedSkills = $j("#skillsList").val().split(",");
	var radioDefaults = $j("#skillsLevelList").val().split(",");
	
	var i;
	for (i=0;i<checkedSkills.length;i++) {
		if (checkedSkills[i] > 0) {
			var selectedRadio = radioDefaults[i];
			$j("#s_"+checkedSkills[i]).attr("checked","checked");
			var selectedRadioElem = $j("input[name='proficiency_"+checkedSkills[i]+"']");			
			$j.each(selectedRadioElem, function(){				
				if($j(this).val()==selectedRadio){
					$j(this).attr('checked', true);
				}
			})
			
		}
	}
	var checkedBoxes = "#select-skills input[type=checkbox]:checked";
	$j(checkedBoxes).each(function() {
		$j("#s_"+this.value).parent(".jqmScrollItem").addClass("selected");
		var s_level = $j("#s_"+this.value+"_level");
		if (s_level.hasClass("hide")) {
			s_level.removeClass("hide")
			       .addClass("show");
		}
		var s_parent_parent = $j("#s_"+this.value).parent().parent();
		if (s_parent_parent.hasClass("hide")) {
			s_parent_parent.removeClass("hide")
			               .addClass("show");
		}
		var s_parent_parent_prev = $j("#s_"+this.value).parent().parent().prev();
		if (s_parent_parent_prev.hasClass("closed")) {
			s_parent_parent_prev.addClass("open")
			                    .removeClass("closed");
		}			
	});
}

function openLanguagesSub(type,limit){
	var checkedLanguages = $j("#languagesList").val().split(",");
	var radioDefaults = $j("#languagesLevelList").val().split(",");
	var i;
	for (i=0;i<=checkedLanguages.length-1;i++) {
		if (checkedLanguages[i] > 0) {
			var selectedRadio = radioDefaults[i]-1;
			$j("#l_"+checkedLanguages[i]).attr("checked","checked");
			$j("#l_"+checkedLanguages[i]+"_level input[type='radio']")[selectedRadio].checked=true;
			//$j("input[name='proficiency_"+checkedLanguages[i]+"']")[selectedRadio].checked=true;
		}
	}
	var checkedBoxes = "#select-languages input[type=checkbox]:checked";
	$j(checkedBoxes).each(function() {
		$j("#l_"+this.value).parent(".jqmScrollItem").addClass("selected");
		if ($j("#l_"+this.value+"_level").hasClass("hide")) {
			$j("#l_"+this.value+"_level").removeClass("hide");
			$j("#l_"+this.value+"_level").addClass("show");
		}	
	});
}


function toggleSelectionLevel(item, type, limit) {
	if (document.getElementById("s_"+item).checked == true) {
		$j("#s_"+item).parent(".jqmScrollItem").addClass("selected");
		$j("#s_"+item+"_level").removeClass("hide")
							   .addClass("show");
	} else {
		$j("#s_"+item).parent(".jqmScrollItem").removeClass("selected");
		$j("#s_"+item+"_level").removeClass("show")
								.addClass("hide");
		$j("input[name='proficiency_"+item+"']").attr("checked","");
	}
	checkRemaining(type,limit);
}

function toggleSelectionLanguages(item, type, limit) {
	if (document.getElementById("l_"+item).checked == true) {
		$j("#l_"+item).parent(".jqmScrollItem").addClass("selected");
		$j("#l_"+item+"_level").removeClass("hide")
		                       .addClass("show");
	} else {
		$j("#l_"+item).parent(".jqmScrollItem").removeClass("selected");
		$j("#l_"+item+"_level").removeClass("show")
							   .addClass("hide");
		$j("input[name='proficiency_"+item+"']").attr("checked","");
	}
	checkRemaining(type,limit);
}

function toggleCatList(item){
	if ($j("#s_category_"+item).hasClass("closed")) {
		$j("#s_category_"+item).removeClass("closed");
		$j("#s_category_"+item).addClass("open");
		$j("#s_categoryList_"+item).removeClass("hide");
		$j("#s_categoryList_"+item).addClass("show");
	} else {	
		$j("#s_category_"+item).removeClass("open");
		$j("#s_category_"+item).addClass("closed");
		$j("#s_categoryList_"+item).removeClass("show");
		$j("#s_categoryList_"+item).addClass("hide");
	}	
}


function toggleCatListCert(item){
	if ($j("#c_category_"+item).hasClass("closed")) {
		$j("#c_category_"+item).removeClass("closed");
		$j("#c_category_"+item).addClass("open");
		$j("#c_categoryList_"+item).removeClass("hide");
		$j("#c_categoryList_"+item).addClass("show");
	} else {	
		$j("#c_category_"+item).removeClass("open");
		$j("#c_category_"+item).addClass("closed");
		$j("#c_categoryList_"+item).removeClass("show");
		$j("#c_categoryList_"+item).addClass("hide");
	}	
}

function saveAndCloseSkills(type, limit) {
	var checkedBoxes = "#select-"+type+" input[type=checkbox]:checked";
	var radioButtons = "#select-"+type+" input[type=radio]:checked";
	var overlay_id = "select-"+type;
	var err_msg = "Please select a level for every skill selected. ";
	if ($j(checkedBoxes).length != $j(radioButtons).length) {
		//alert("please select a level for every skill selected");
		overlay_display_error(overlay_id,err_msg);
		return false;
	}
	else{
		overlay_remove_error_msg(overlay_id);
	}
	var itemList = "";
	var itemLevelList = "";
	var i = 1;
	$j("#selected-"+type+"-list li").remove();
	$j(checkedBoxes).each(function() {
		var text = '<li id="'+type+this.value+'">'+$j("#"+type+"_text_"+this.value).html()+', ' +getProficiencyText($j("input[name=proficiency_"+this.value+"]:checked").val())+ ' <a href="#" onClick="removeItemExtras('+this.value+', \''+type+'\', '+limit+');return false;">(remove)</a></li>';
		$j("#selected-"+type+"-list").append(text);
		itemList = itemList+this.value+",";
		i++;
	});
	if (itemList.charAt(itemList.length-1) == ",") {
		itemList = itemList.slice(0,-1);
	}
	var j=1;
	$j(radioButtons).each(function() {
		itemLevelList = itemLevelList+this.value+",";
		j++;
	});
	if (itemLevelList.charAt(itemList.length-1) == ",") {
		itemLevelList = itemLevelList.slice(0,-1);
	}	
	var itemCount = itemList.split(",").length;
	if (itemCount >= limit) {
		if ($j("#"+type+"-add-button").hasClass("show")) {
			$j("#"+type+"-add-button").addClass("hide");
		} 
	} else {
		if ($j("#"+type+"-add-button").hasClass("hide")) {
			$j("#"+type+"-add-button").addClass("show");
		}
	}
	// change number next to add button if necessary.
	
	if (itemCount == 0 || itemList == "") {
		$j("#"+type+"-button-text").html("No "+type+" currently selected.");
	} else if (itemCount > 0 && itemCount < limit){
		var allowedLeft = limit - itemCount;
		
		$j("#"+type+"-button-text").html("Add ["+allowedLeft+"] more "+type+". ");
	} else {
		$j("#"+type+"-button-text").html("");
	}
	$j("#"+type+"List").val(itemList);
	$j("#"+type+"LevelList").val(itemLevelList);
	$j("#select-"+type).jqmHide();
}


function saveAndCloseLanguages(type, limit) {
	var checkedBoxes = "#select-"+type+" input[type=checkbox]:checked";
	var radioButtons = "#select-"+type+" input[type=radio]:checked";
	var overlay_id = "select-"+type;
	var err_msg = "please select a level for every language selected. ";	
	if ($j(checkedBoxes).length != $j(radioButtons).length) {
		overlay_display_error(overlay_id,err_msg);
		return false;
	}
	var itemList = "";
	var itemLevelList = "";
	var i = 1;
	$j("#selected-"+type+"-list li").remove();
	$j(checkedBoxes).each(function() {
		var text = '<li id="'+type+this.value+'">'+$j("#"+type+"_text_"+this.value).html()+', ' +getProficiencyTextLanguage($j("input[name=proficiency_"+this.value+"]:checked").val())+ ' <a href="#" onClick="removeItemExtras('+this.value+', \''+type+'\', '+limit+');return false;">(remove)</a></li>';
		$j("#selected-"+type+"-list").append(text);
		itemList = itemList+this.value+",";
		i++;
	});
	if (itemList.charAt(itemList.length-1) == ",") {
		itemList = itemList.slice(0,-1);
	}
	var j=1;
	$j(radioButtons).each(function() {
		itemLevelList = itemLevelList+this.value+",";
		j++;
	});
	if (itemLevelList.charAt(itemLevelList.length-1) == ",") {
		itemLevelList = itemLevelList.slice(0,-1);
	}	
	if (itemLevelList.charAt(itemList.length-1) == ",") {
		itemLevelList = itemLevelList.slice(0,-1);
	}	
	var itemCount = itemList.split(",").length;
	if (itemCount >= limit) {
		if ($j("#"+type+"-add-button").hasClass("show")) {
			$j("#"+type+"-add-button").addClass("hide");
		} 
	} else {
		if ($j("#"+type+"-add-button").hasClass("hide")) {
			$j("#"+type+"-add-button").addClass("show");
		}
	}
	// change number next to add button if necessary.
	if (itemCount == 0 || itemList == "") {
		$j("#"+type+"-button-text").html("No "+type+" currently selected.");
	} else if (itemCount > 0 && itemCount < limit){
		var allowedLeft = limit - itemCount;
		$j("#"+type+"-button-text").html("Add ["+allowedLeft+"] more "+type+". ");
	} else {
		$j("#"+type+"-button-text").html("");
	}
	$j("#"+type+"List").val(itemList);
	$j("#"+type+"LevelList").val(itemLevelList);
	$j("#select-"+type).jqmHide();
}

function getProficiencyText(level) {
	if (level == 0) {
	return "Beginner";
	} else if (level == 1) {
	return "Intermediate";
	} else {
	return "Expert";
	}
}
function getProficiencyTextLanguage(level) {
	if (level == 1) {
	return "Basic, Familiar";
	} else if (level == 2) {
	return "Conversational";
	} else {
	return "Fluent";
	}
}

function validateBeforeSubmitLocations(l_limit) {
// this copies the new stuff over to the old fields before submitting to back end
	var i;
	var itemList = $j("#locationsList").val()
	$j("input[name='desWorkLocationList']").val(itemList);	
	itemList = itemList.split(",");
	for (i=0;i<=itemList.length;i++) {
		var j = i+1;
		$j("input[name='desWorkLocation"+j+"']").val(itemList[i]);
	}
}


function validateBeforeSubmitSkills(s_limit) {
// this copies the new stuff over to the old fields before submitting to back end
	var i;
	var itemList = $j("#skillsList").val();
	var itemLevelList = $j("#skillsLevelList").val();
	if (itemList.charAt(itemList.length-1) == ",") {
		itemList = itemList.slice(0,-1);
		$j("input[name='skillList']").val(itemList);	
	}
	if (itemLevelList.charAt(itemLevelList.length-1) == ",") {
		itemLevelList = itemLevelList.slice(0,-1);
		$j("input[name='skillExpList']").val(itemLevelList);
		$j("#skillsLevelList").val(itemLevelList);	
	}
	itemList = itemList.split(",");
	itemLevelList = itemLevelList.split(",");
	
	for (i=0;i<=itemList.length;i++) {
		var j = i+1;
		$j("input[name='skill"+j+"']").val(itemList[i]);
		$j("input[name='skillExp"+j+"']").val(itemLevelList[i]);
	}
}

function validateBeforeSubmitCerts(c_limit) {
// this copies the new stuff over to the old fields before submitting to back end
	var i;
	var itemList = $j("#certificationsList").val()
	if (itemList.charAt(itemList.length-1) == ",") {
		itemList = itemList.slice(0,-1);
		$j("input[name='certList']").val(itemList);	
	}	
	itemList = itemList.split(",");
	for (i=0;i<=itemList.length;i++) {
		var j = i+1;
		$j("input[name='cert"+j+"']").val(itemList[i]);
	}
}

function validateBeforeSubmitLanguages(l_limit) {
// this copies the new stuff over to the old fields before submitting to back end
	var i;
	var itemList = $j("#languagesList").val();
	var itemLevelList = $j("#languagesLevelList").val();
	if (itemList.charAt(itemList.length-1) == ",") {
		itemList = itemList.slice(0,-1);
		$j("input[name='languageList']").val(itemList);	
	}
	if (itemLevelList.charAt(itemLevelList.length-1) == ",") {
		itemLevelList = itemLevelList.slice(0,-1);
		$j("input[name='languageExpList']").val(itemLevelList);		
	}
	itemList = itemList.split(",");
	for (i=0;i<=itemList.length;i++) {
		var j = i+1;
		$j("input[name='language"+j+"']").val(itemList[i]);
		$j("input[name='languageExp"+j+"']").val(itemLevelList[i]);
	}
}

function validateResumeProfileOffers(i_limit, f_limit, s_limit, c_limit) {
	validateBeforeSubmit(i_limit, f_limit);
	validateBeforeSubmitSkills(s_limit);
	validateBeforeSubmitCerts(c_limit);
}
function validateCandidateRequirements(s_limit, c_limit,l_limit) {
	validateBeforeSubmitSkills(s_limit);
	validateBeforeSubmitCerts(c_limit);
	validateBeforeSubmitLanguages(l_limit);
}

function validateAdvancedSearch(s_limit, c_limit, l_limit) {
	validateBeforeSubmitSkills(s_limit);
	validateBeforeSubmitCerts(c_limit);
	validateBeforeSubmitLocations(c_limit);
}

function removeItemExtras(item, type, limit, itemLevel) {
		// remove the item
		var itemList = $j("#"+type+"List").val();
		var itemLevelList = $j("#"+type+"LevelList").val();
		
		var itemArray = itemList.split(",");
		var itemPlace;
		for( var i=0;i<itemArray.length;i++) {
			if (item == itemArray[i]) {
				itemPlace = i;
			}
		}
		var itemLevelArray = itemLevelList.split(",");
		//var itemLevelList = itemLevelArray.splice(itemPlace,1).join(",");
		itemLevelArray.splice(itemPlace,1)
		var itemLevelList = itemLevelArray.join(",");		
		
		var itemWithComma = item+",";
		if (itemList.indexOf(itemWithComma) >= 0) {
			itemList = itemList.replace(itemWithComma, "")
		} else if (itemList.indexOf(item) >= 0) {
			itemList = itemList.replace(item, "")
		} 
		if (itemList.charAt(itemList.length-1) == ",") {
			itemList = itemList.slice(0,-1);
		}
		$j("#"+type+"List").val(itemList);
		$j("#"+type+"LevelList").val(itemLevelList);
		
		$j("#"+type.charAt(0)+"_"+item).attr('checked', false);
		$j("input[name=proficiency_"+item+"]").attr('checked', "");
		$j("#"+type.charAt(0)+"_"+item).parent(".jqmScrollItem").removeClass("selected");
		
			$j("#"+type.charAt(0)+"_"+item+"_level").removeClass("show").addClass("hide");		
		
		
		$j("#"+type+item).remove();	
		// display "add" button if necessary
		var itemCount = getItemCount(itemList.split(","));
		if (itemCount >= limit) {
			if ($j("#"+type+"-add-button").hasClass("show")) {
				$j("#"+type+"-add-button").removeClass("show");
				$j("#"+type+"-add-button").addClass("hide");
			} 
		} else {
			if ($j("#"+type+"-add-button").hasClass("hide")) {
				$j("#"+type+"-add-button").removeClass("hide");
				$j("#"+type+"-add-button").addClass("show");
			}
		}
		// change number next to add button if necessary.
		if (itemCount == 0 || itemList == "") {
			$j("#"+type+"-button-text").html("No "+type+" currently selected.");
		} else if (itemCount > 0 && itemCount < limit){
			var allowedLeft = limit - itemCount;
			$j("#"+type+"-button-text").html("Add ["+allowedLeft+"] more "+type+". ");
		} else {
			$j("#"+type+"-button-text").html("");
		}

		// change styles back to normal when errors are gone.
		if (itemCount <= limit) {
			$j("#selected-"+type+"-list.too-many").removeClass("too-many");
		}
}
// adding a ie detection routine to apply ie specific styles.
$j(document).ready(function(){
	
	overlay_detect_browser();

})
function overlay_detect_browser(){
	var v = $j.browser.version.toString().charAt(0);
	if($j.browser.msie){
		$j('body').addClass("ie");		
		switch(v){
			case '6':
				$j('body').addClass("ie6");
				break;
			case '7':
				$j('body').addClass("ie7");
				break;
			case '8':
				$j('body').addClass("ie8");
				break;
			case '9':
				$j('body').addClass("ie9");
				break;
			default:
		}
		
	}
	// Add webkit, mozilla, opera code as needed
}
function overlay_display_error(overlay_id, msg){
	var msg_holder = $j('#'+overlay_id+' .msg .warning');
	if(msg_holder.length){
		msg_holder.html(msg)
				.parent().addClass('error');
	}
}
function overlay_remove_error_msg(overlay_id){
	var msg_holder = $j('#'+overlay_id+' .msg .warning');
	if(msg_holder.length){
		msg_holder.html("")
				.parent().removeClass('error');
	}
	
}

//count non-zero elements
function getItemCount(anArray){
	var count=0;
	if (typeof anArray!="undefined" && anArray.length>0){
		for (var i=0; i<anArray.length; i++) {
			if (anArray[i]>0) count++;
		};
	}
	return count;
}

