$(function(){
	$('#submit-button').hide();
	$('#submit-button').remove();
	$('#qualification_id').attr('disabled',true);
	$('#target_jobtitle_id').attr('disabled',true);
	var selVal1, selVal2, selLevel;
	if (!load) {
		var load=false;
	}
	if (load==false) {
		var objJobOpts = $('#target_jobtitle_id option');
		var objQualOpts = $('#qualification_id option');
		load=true;
	}
	
	$('#jobtitle_id').change(function(){
		selVal1 = checkStepOne();
		selLevel = $('#target_jobtitle_id option[@selected]').val();
		selLevel = parseInt(selLevel);
		
		filterTargetJobs(objJobOpts,selVal1);
		if (selLevel>0) {
			selLevel = checkStepTwo();
			if (selLevel>0) {
				filterQualifications(objQualOpts,selLevel);
			}
			
		}
		
	});
	
	$('#target_jobtitle_id').change(function(){
		selVal2 = checkStepTwo();
		
		if (selVal2>0) {
			filterQualifications(objQualOpts,selVal2);
		}
		
		
	});
	
	$('#qualification_id').change(function(){
		checkStepThree();
	});
	
});

function checkStepOne() {
	var selVal = $('#jobtitle_id').children("[@selected]").val();
	selVal = parseInt(selVal);
	

	if (selVal>0) {
		$('#search-step-2').attr('class','careerplanner_steps step2_active');
		$('#target_jobtitle_id').attr('disabled',false);
		$('#search-step-1').attr('class','careerplanner_steps step1_complete');
		$('#search-step-2 p.invalid').remove();
	}
	else {
		$('#search-step-2').attr('class','careerplanner_steps step2_inactive');
		$('#target_jobtitle_id').attr('disabled',true);
		$('#search-step-3').attr('class','careerplanner_steps step3_inactive');
		$('#qualification_id').attr('disabled',true);
		$('#search-step-1').attr('class','careerplanner_steps step1_active');
	}
	return selVal;
}
function checkStepTwo() {
	var arrLevels = getLevels();
	var firstSelVal = $('#jobtitle_id').children("[@selected]").val();
	var proceed = true;
	firstSelVal = parseInt(firstSelVal);
	var selVal = $('#target_jobtitle_id').children("[@selected]").val();
	selVal = parseInt(selVal);
	var levelOne = parseInt( arrLevels[firstSelVal] );
	var levelTwo = parseInt( arrLevels[selVal] );
	if (levelOne>=levelTwo) {
		var msg = '<p class="invalid">Please select a job role with higher level than your current job</p>';
		$('#search-step-2 p.invalid').remove();
		$('#search-step-2').append(msg);
		proceed = false;
	}
	if (proceed && selVal>0) {
		$('#search-step-3').attr('class','careerplanner_steps step3_active');
		$('#qualification_id').attr('disabled',false);
		$('#search-step-2').attr('class','careerplanner_steps step2_complete');
		$('#search-step-2 p.invalid').remove();
	}
	else {
		$('#search-step-2').attr('class','careerplanner_steps step2_active');
		$('#search-step-3').attr('class','careerplanner_steps step3_inactive');
		$('#qualification_id').attr('disabled',true);
		checkStepOne();
	}
	return arrLevels[selVal];
}
function checkStepThree() {
	var selVal = $('#qualification_id').children("[@selected]").val();
	var selVal2 = $('#target_jobtitle_id').children("[@selected]").val();
	selVal = parseInt(selVal);
	var jLevels = getLevels('jobs');
	var selLevel = parseInt(jLevels[selVal2]);
	var qLevels = getLevels('q');
	/* 27.02: Remove filter on quals
	if (selVal>0 && qLevels[selVal]>=selLevel) {
		$('form#career_planner_search').submit();
	}
	else {
		
		var msg = '<p class="invalid">Please select a higher qualification for this job.</p>';
		$('#search-step-3 p.invalid').remove();
		$('#search-step-3').append(msg);
		proceed = false;
		$('#search-step-3').attr('class','careerplanner_steps step3_active');
		checkStepTwo();
		
	}
	*/
	$('form#career_planner_search').submit();
}

function getLevels(type) {
	var arrLevels = new Array();
	switch (type) {
		case 'qualifications': case 'q':
			var strJL = $('#q-levels').attr('value');
			break;
		default:
			var strJL = $('#j-levels').attr('value');
			break;
	}
	var jPairs = strJL.split(',');
	var jl;
	for (var i = 0; i<jPairs.length; i++) {
		jl = jPairs[i].split(':');
		arrLevels[jl[0]] = jl[1];
	}
	return arrLevels;
}

function filterTargetJobs(objJobOpts,selVal1) {
	var arrLevels =  getLevels();
	var selVal2 = $('#target_jobtitle_id option[@selected]').val();
	var iLevel =  arrLevels[parseInt(selVal1)];
	var currLevel=0;
	var setSel = true;
	var numTgJobs=0;
	var called=false;
	for (var i=1;i<objJobOpts.length;i++) {
		currVal = parseInt($(objJobOpts[i]).val() );
		currText = $(objJobOpts[i]).html();
		if (currVal>0) {
			currLevel=parseInt( arrLevels[currVal] );
		}
		if (currLevel > iLevel) {
			/*
			if (called==false) {
			alert($('#target_jobtitle_id option[@value="'+currVal+'"]').length);
				called=true;
			}
			*/
			if ($('#target_jobtitle_id option[@value="'+currVal+'"]').length==0) {
				$('#target_jobtitle_id').append('<option value="'+$(objJobOpts[i]).val()+'">'+$(objJobOpts[i]).html()+'</option>').attr('selected',setSel==true && (currVal==selVal2));
			}
			numTgJobs++;
		}
		else {
			$('#target_jobtitle_id option[@value="'+currVal+'"]').remove();
		}
	}
	if (numTgJobs<1) {
		var msg = '<p class="invalid">No jobs are at a higher level than your current job.</p>';
		$('#search-step-2 p.invalid').remove();
		$('#search-step-2').append(msg);
	}
	else {
		$('#search-step-2 p.invalid').remove();
	}
}

function filterQualifications(objQualOpts,selLevel) {
	/*alert("filtering quals:"+selLevel);*/
	var arrLevels =  getLevels('q');
	var selVal3 = $('#qualification_id option[@selected]').val();
	var currLevel=0;
	for (var i=1;i<objQualOpts.length;i++) {
		currVal = parseInt($(objQualOpts[i]).val() );
		if (currVal>0) {
			currLevel=parseInt( arrLevels[currVal] );
		}
		if (currLevel >= selLevel) {
			$('#qualification_id').append(objQualOpts[i]);
		}
		else {
		
			/* 27.02: Remove filter on quals
			$('#qualification_id option[@value="'+currVal+'"]').remove();
			*/
		}
	}

}

