
$(document).ready(function(){
    var strAnyValue = $('#fromSalary :eq(0)').val();
    var strFromText = $('#fromSalary :eq(0)').text();
    var strToText = $('#toSalary :eq(0)').text();
    var strCurrency = "GBP";
    var strDataType = 'json';
    var arrFromSALA = [];
    var arrToSALA = [];
    var arrFromSALH = [];
    var arrToSALH = [];
    var strSavedFromValue;
    var strSavedToValue;
    var intCurrentFromValue;
	
	var strCookies = document.cookie;
	var intSearchCookieStart = strCookies.indexOf('UK0_search_pref');
	var intSearchCookieEnd = strCookies.indexOf(';', intSearchCookieStart);
	var strSearchCookie = decodeURIComponent(strCookies.slice(intSearchCookieStart, intSearchCookieEnd));
	var arrSearchMarkers = ['&scs=','&ssl=','&ssh=','&scf=','&sst='];
	var arrSearchMarkerValues = [];
	var strCookieFromValue;
	var strCookieToValue;
	
    $('#fromSalary').empty().html('<option value="' + strAnyValue + '">' + strFromText + '</option>');
    $('#toSalary').empty().html('<option value="' + strAnyValue + '">' + strToText + '</option>');
    $('#toSalary').attr('disabled', true);

    function ajaxCall(defaultLow, defaultHigh){
        if(defaultLow != ''){
            strSavedFromValue = defaultLow;
        };

        if(defaultHigh != ''){
            strSavedToValue = defaultHigh;
        };

        $('#salaryPicker .loaderImg').ajaxStart(function(){
            $(this).show();
        }).ajaxStop(function(){
            $(this).hide();
        });
		
        $.ajax({
            type: 'GET',
            dataType: strDataType,
            url: '/cgi-bin/lookup_service.cgi?action=salary&currency_code=' + strCurrency + '&format=' + strDataType,
            error: function(response){
                var strMessage = '<div class="msgNoResults">Sorry. There seems to have been a server error...</div>';
                $('#salaryPicker .msgNoResults').remove();
                $('#salaryPicker').append(strMessage);
            },
            success: function(response){
                $('#fromSalary').empty().html('<option value="' + strAnyValue + '">' + strFromText + '</option>');
                $('#toSalary').empty().html('<option value="' + strAnyValue + '">' + strToText + '</option>');
                $('#toSalary').attr('disabled', true);

                if($('#salaryPicker input[name=search_salary_type]:checked').val() == 'A'){
                    arrFromSALA = [];   //Empty the array before adding in the new currency values
                    $.each(response.salary_annual_low, function(){    
                        var arrPairs = this.pairings; 
                        var strDesc = this.desc; 
                        var intOrder = this.order; 
                        var strCode = this.code; 
                        var intBareCode = this.bare_code; 

                        arrFromSALA.push({pairings: arrPairs, desc: strDesc, order: intOrder, code: strCode, bare_code: intBareCode});
                        $('#fromSalary').append('<option value="' + strCode + '">' + strDesc + '</option>');
                    });

                    arrToSALA = [];
                    $.each(response.salary_annual_high, function(){      
                        var strDesc = this.desc; 
                        var intOrder = this.order; 
                        var strCode = this.code; 
                        var intBareCode = this.bare_code; 

                        arrToSALA.push({desc: strDesc, order: intOrder, code: strCode, bare_code: intBareCode});
                        $('#toSalary').append('<option value="' + strCode + '">' + strDesc + '</option>');
                    });
                }else{
                    arrFromSALH = [];
                    $.each(response.salary_hourly_low, function(){      
                        var arrPairs = this.pairings; 
                        var strDesc = this.desc; 
                        var intOrder = this.order; 
                        var strCode = this.code; 
                        var intBareCode = this.bare_code; 

                        arrFromSALH.push({pairings: arrPairs, desc: strDesc, order: intOrder, code: strCode, bare_code: intBareCode});
                        $('#fromSalary').append('<option value="' + strCode + '">' + strDesc + '</option>');
                    });

                    arrToSALH = [];
                    $.each(response.salary_hourly_high, function(){      
                        var strDesc = this.desc; 
                        var intOrder = this.order; 
                        var strCode = this.code; 
                        var intBareCode = this.bare_code; 

                        arrToSALH.push({desc: strDesc, order: intOrder, code: strCode, bare_code: intBareCode});
                        $('#toSalary').append('<option value="' + strCode + '">' + strDesc + '</option>');
                    });
                };

                // Check to see if any saved salary values are present
                if(strSavedFromValue != undefined && strSavedToValue != undefined){
                    $('#toSalary').empty();

                    if ($('#salaryPicker input[name=search_salary_type]:checked').val() == 'A') {
                        var intSavedFromValue = parseInt(strSavedFromValue.split('SALAA')[1]);
                    }else{
                        var intSavedFromValue = parseInt(strSavedFromValue.split('SALHA')[1]);
                    };

                    appendToOptions(intSavedFromValue);

                    $('#fromSalary option').each(function(){
                        var val = $(this).val();

                        if(strSavedFromValue == val){
                            $(this).attr('selected','selected');
                            strSavedFromValue = '';
                            return false;
                        };
                    });

                    $('#toSalary option').each(function(){
                        var val = $(this).val();

                        if(strSavedToValue == val){
                            $(this).attr('selected','selected');
                            $(this).parent().attr('disabled', false);
                            strSavedToValue = '';
                            return false;
                        };
                    });
                }else{
                    return false;
                };
            }
        });
    }; 

    function appendToOptions(fromValue){
        if(fromValue == undefined){
            intCurrentFromValue = intCurrentFromValue;
        }else{
            intCurrentFromValue = fromValue;
        };

        if($('#toSalary').hasClass('nonRestricted')){
            // START NON-RESTRICTED VERSION 
            if($('#salaryPicker input[name=search_salary_type]:checked').val() == 'A'){
                $(arrToSALA).each(function(ix){
                    var strToValues = arrToSALA[ix].code;
                    var intToValues = parseInt(strToValues.split('SALAB')[1]);

                    if(intToValues > intCurrentFromValue){
                        $('#toSalary').append('<option value="' + strToValues + '">' + arrToSALA[ix].desc + '</option>');
                    };
                });
            }else{
                $(arrToSALH).each(function(ix){
                    var strToValues = arrToSALH[ix].code;
                    var intToValues = parseInt(strToValues.split('SALHB')[1]);

                    if(intToValues > intCurrentFromValue){
                        $('#toSalary').append('<option value="' + strToValues + '">' + arrToSALH[ix].desc + '</option>');
                    };
                });
            };
            // END NON-RESTRICTED VERSION
        }else{
            // START RESTRICTED VERSION
            if($('#salaryPicker input[name=search_salary_type]:checked').val() == 'A'){
                $(arrFromSALA).each(function(){
                    var arrPairs = this.pairings;
                    var intFromBareCode = this.bare_code;

                    $.each(arrPairs, function(index, data){ 
                        var intPairCode = parseInt(data.split('SALAB')[1]);

                        if(intCurrentFromValue == intFromBareCode){
                            $(arrToSALA).each(function(){
                                var strDesc = this.desc;
                                var strCode = this.code; 
                                var intToBareCode = this.bare_code;

                                if(intPairCode == intToBareCode){
                                    $('#toSalary').append('<option value="' + strCode + '">' + strDesc + '</option>');
                                };
                            });
                        }else{
                            return false;
                        };
                    });
                });
            }else{
                $(arrFromSALH).each(function(){
                    var arrPairs = this.pairings;
                    var intFromBareCode = this.bare_code;

                    $.each(arrPairs, function(index, data){ 
                        var intPairCode = parseInt(data.split('SALHB')[1]);

                        if(intCurrentFromValue == intFromBareCode){
                            $(arrToSALH).each(function(){
                                var strDesc = this.desc;
                                var strCode = this.code; 
                                var intToBareCode = this.bare_code;

                                if(intPairCode == intToBareCode){
                                    $('#toSalary').append('<option value="' + strCode + '">' + strDesc + '</option>');
                                };
                            });
                        }else{
                            return false;
                        };
                    });
                });
            };
            // END RESTRICTED VERSION
        };
    };

    ajaxCall('', '');

    $('#currencyType').change(function(){
        strCurrency = $(this).val();
        ajaxCall();
    });

    $('#salaryPicker input[name=search_salary_type]').change(function(){
        ajaxCall();
    });

    $('#fromSalary').change(function(){
        var strCurrentFromValue;

        $('#toSalary').empty();

        $('#fromSalary :selected').each(function(){
            strCurrentFromValue = $(this).val();

            if($('#salaryPicker input[name=search_salary_type]:checked').val() == 'A'){
                intCurrentFromValue = parseInt(strCurrentFromValue.split('SALAA')[1]);
            }else{
                intCurrentFromValue = parseInt(strCurrentFromValue.split('SALHA')[1]);
            };
        });

        if(strCurrentFromValue === strAnyValue){
            $('#toSalary').attr('disabled', true).html('<option value="' + strAnyValue + '">' + strToText + '</option>');
        }else{
            $('#toSalary').attr('disabled', false);
        };

        appendToOptions();
    });
	
	$('#recallSearch a').click(function(){
		$.each(arrSearchMarkers, function(index, data){
			var intMarkerStart = strSearchCookie.indexOf(data);
			var strMarkerSubStr = strSearchCookie.substr(intMarkerStart);
			var strMarkerInfo = strMarkerSubStr.split('&')[1];
			var strMarkerValue = strMarkerInfo.split('=')[1];

			arrSearchMarkerValues.push({marker: data, value: strMarkerValue});
		});
		
		$(arrSearchMarkerValues).each(function(){
			var strMarker = this.marker;
			var strMarkerVal = this.value;

			switch(strMarker){
				case arrSearchMarkers[0]:	//&scs= --> search_currency_code
					strCurrency = strMarkerVal;
					$('#currencyType option').each(function(){
                        var val = $(this).val();

                        if(strMarkerVal == val){
                            $(this).attr('selected','selected');
                        };
                    });
					break;
				case arrSearchMarkers[1]:	//&ssl= --> search_salary_low
					strCookieFromValue = strMarkerVal;
					break;
				case arrSearchMarkers[2]:	//&ssh= --> search_salary_high
					strCookieToValue = strMarkerVal;
					break;
				case arrSearchMarkers[3]:	//&scf= --> search_single_currency_flag
					if(strMarkerVal == 'N'){
						$('#singleCurrencyFlag').removeAttr('checked');
					}else{
						$('#singleCurrencyFlag').attr('checked','checked');
					};
					break;
				case arrSearchMarkers[4]:	//&sst= --> search_salary_type
					if(strMarkerVal == 'A'){
						$('#annualFormat').val(strMarkerVal).attr('checked','checked');
					}else{
						$('#hourlyFormat').val(strMarkerVal).attr('checked','checked');	
					};
					break;		
			};
		});
		
		ajaxCall(strCookieFromValue, strCookieToValue);
	});
	
	$('#resetForm a').click(function(){
		var strDefaultCurrency = 'GBP';
		var strDefaultFlag = '';
		var strDefaultType = '';
		strCurrency = strDefaultCurrency;
		
		$('#currencyType option').each(function(){
            var val = $(this).val();

            if(strDefaultCurrency == val){
                $(this).attr('selected','selected');
            };
        });
		
		if(strDefaultFlag == 'N'){
			$('#singleCurrencyFlag').removeAttr('checked');
		}else{
			$('#singleCurrencyFlag').attr('checked','checked');
		};
		
		if(strDefaultType == 'A'){
			$('#annualFormat').val(strDefaultType).attr('checked','checked');
		}else{
			$('#hourlyFormat').val(strDefaultType).attr('checked','checked');	
		};
		
		ajaxCall();	
	});
	
});

