$(document).ready(function(){


    //initial image replacement for filter boxes
    var filterBoxes = $(".filter-box");

    $.each(filterBoxes,function(i,fb){
        var list = $(this).find("ul");
        var select = $(this).find("select");

        select.find("option").each(function(){

            list.append('<li id="'+$(this).val()+'">'+$(this).text()+'</li>');
        });

        select.hide();
    });
    //auto fill call
    $("input[type=text]").autoFill();


    $("#open_map").click(function(){
        $("#search-nav li").eq(1).find("a").trigger("click");
    });
    $("#open_text").click(function(){
        $("#search-nav li").eq(0).find("a").trigger("click");
    });


    var perPageContainer = $("#per-page-container");
    var perPageDropdown  = perPageContainer.find("select");
    var perPageOptions = perPageDropdown.find("option");

    var replacePerPageDropdown = function(){

        //perPageDropdown.hide();
        perPageContainer.append('<div id="per-page-replaced"></div>');
        perPageContainer.find("#per-page-replaced").append('<a href="#" id="per-page-count">'+perPageDropdown.val()+"</a>");
        perPageContainer.find("#per-page-replaced").append('<ul id="per-page-list"></ul>');
        var htmlinsert;
        $.each(perPageOptions,function(){

            perPageContainer.find("#per-page-list").append("<li>"+$(this).val()+"</li>");


        });

        perPageContainer.append('<div class="clear"></div>')
    }
    replacePerPageDropdown();

    $(".search-elem input,.text-search-wrapper input").focus(function(){
        $(this).val("");
        if($(this).hasClass("default")){
            $(this).removeClass("default");
        }
    });

    $("#per-page-list li").live("click",function(){

        perPageOptions.removeAttr("selected");
        perPageOptions.eq($(this).index()).attr("selected","selected");
        $("#per-page-count").html($(this).text());
        $("#per-page-list").hide();


    });

    $("#per-page-count").live("click",function(e){
        e.preventDefault();

        if($("#per-page-list").is(":visible")){
            $("#per-page-list").hide()
        }else{
            $("#per-page-list").show()
        }

    });

    $(".infoicon").click(function(){
        $("#geocode-info").stop(true,true).slideToggle();
    });

    var jobelement = $(".filter-box ul li");


    $('#paginator li a').live("click",function(e){
        e.preventDefault();
        $('#search_frm').attr('action', $(this).attr('href'));
        $('#search_frm').submit();
    });

    $("#sorttype").click(function(){

        if($(this).hasClass("sortdate")){
            $("input[name=sort_by]").attr("value","date");
            $(this).removeClass("sortdate");
            $(this).addClass("sortdistance");
            $('#search_frm').submit();
        }else{
            $("input[name=sort_by]").attr("value","distance");
            $(this).removeClass("sortdistance");
            $(this).addClass("sortdate");
            $('#search_frm').submit();
        }
        return false;
    });



    $(".reset").click(function(){
        $(".filter-box ul li").eq(0).trigger("click");
        $(".filter-box ul li").removeClass("selected");
        $("option:selected").removeAttr("selected");

    });


/*
    $("#search-nav li a").click(function(e){

        e.preventDefault();

        if($(this).hasClass("active_all")){

        }else{

            $("#search-nav li a").removeClass("active_all");
            $(this).addClass("active_all");
            showRelevantSection($(this));
        }

    });
*/

    jobelement.live("click", function(event){

        var relevantSelect = $(this).parent().parent().find("select");


        if($(this).index() == 0){

            if($(this).hasClass("selected")){
                $(this).siblings().removeClass("selected");
                relevantSelect.find("option").removeAttr("selected");
                relevantSelect.find("option").eq(0).attr("selected","selected");
            }else{
                $(this).siblings().removeClass("selected");
                $(this).addClass("selected");
                relevantSelect.find("option").removeAttr("selected");
                relevantSelect.find("option").eq(0).attr("selected","selected");
            }
        }else{

            $(this).siblings().eq(0).removeClass("selected");
            relevantSelect.find("option").eq(0).removeAttr("selected");

            if($(this).hasClass("selected")){
                if(!event.ctrlKey){
                    $(this).siblings().removeClass("selected");
                    relevantSelect.find("option").removeAttr("selected");
                    relevantSelect.find("option").eq($(this).index()).attr("selected","selected");
                }else if(event.ctrlKey && $(this).siblings().hasClass("selected")){
                    $(this).removeClass("selected");
                    relevantSelect.find("option").eq($(this).index()).removeAttr("selected");
                }
            }else{

                if(!event.ctrlKey){
                    relevantSelect.find("option").removeAttr("selected");
                    $(this).siblings().removeClass("selected");
                    relevantSelect.find("option").eq($(this).index()).attr("selected","selected");
                }else{
                    relevantSelect.find("option").eq(0).removeAttr("selected");
                    relevantSelect.find("option").eq($(this).index()).attr("selected","selected");
                }
                $(this).addClass("selected");
            }
        }

        var selections = relevantSelect.find("option:selected");
        var selectbox = relevantSelect.attr("id");
        var dataURL = relevantSelect.attr("data-uri");

        populateSelectBoxes(dataURL,selectbox,selections);

    });

    $("form").submit(function(event){
        
        if($("#map").is(":visible") && $(this).attr("id") != "keyword"){
            event.preventDefault();
            var map_region = function(){

                var result = [];

                $("#countries").find("option:selected").each(function(){
                    result.push($(this).val());
                })

                return result;
            }

            var map_cities = function(){

                var result = [];

                $("#cities").find("option:selected").each(function(){
                    result.push($(this).val());
                })

                return result;
            }

            var map_business = function(){

                var result = [];

                $("#b_areas").find("option:selected").each(function(){
                    result.push($(this).val());
                })

                return result;
            }
            var map_categories = function(){

                var result = [];

                $("#categories").find("option:selected").each(function(){
                    result.push($(this).val());
                })

                return result;
            }

            var uri = $("#countries").attr("data-uri");
            $("#map-overlay").stop(true,true).fadeIn(function(){
                $(this).css("opacity","0.5");
            });
            //clearMap();
            populateMapWithJobs(uri,map_region().join(","),map_cities().join(","),map_business().join(","),map_categories().join(","))

        }


    });

    $("#switch_to_pc").live("click",function(e){
        e.preventDefault();
        locationCantBeDetermined();
    });

    $("#sorttype").click(function(e){

        e.preventDefault();

    /* if($(this).hasClass("sortdate")){
		$("input[name=sort_by]").attr("value","date");
		$(this).removeClass("sortdate");
		$(this).addClass("sortdistance");
		$('#search_frm').submit();
	    }else{
		$("input[name=sort_by]").attr("value","distance");
		$(this).removeClass("sortdistance");
		$(this).addClass("sortdate");
		$('#search_frm').submit();
	    }
	    return false;*/
    });
    $(".job-res-item").hover(function(){
        $(this).addClass("hilite");
    },function(){
        $(this).removeClass("hilite");
    })
});

(function($) {

    $.fn.autoFill = function() {

        defaults = {
            allowedTypes:["input[type=text]","textarea"]
        };

        return this.each(function() {
            $this = $(this);

            var inputs = $this.filter(defaults.allowedTypes.join(","));


            $.each(inputs,function(i,v){

                $(this).val($(this).attr("data-default"));
                $(this).addClass("defaults");
                $(this).removeClass("focused");
                $(this).bind("focus",function(){

                    $(this).addClass("focused");
                    if($(this).val() == $(this).attr("data-default")){
                        $(this).val("");
                    }

                });
            });

        });


    };

})(jQuery);

var countries = "";
var cities = "";
var b_areas = "";
var canAjax = true;

function populateSelectBoxes(uri,selectID,selections){

    uri = "http://admindemo.co.uk/clients/alexandermann/rollsroyce/jobsrollsroyce/";
    var scriptUrl = "";
    var queryObject = {};
    var selectedOptions = [];


    $.each(selections,function(i,e){

        selectedOptions[i] = $(this).val();

    });

    switch(selectID){
        case "countries":
            scriptUrl = uri+"jobs/get_cities_with_categories"
            queryObject = {
                country_id: selectedOptions.join(",")
            };
            countries = selectedOptions.join(",");
            $("#cities").empty();
            $("#categories").empty();
            $("#b_areas").empty();
            $("#cities").parent().addClass("search-spin").find("ul").empty();
            $("#categories").parent().addClass("search-spin").find("ul").empty();
            $("#b_areas").parent().addClass("search-spin").find("ul").empty();
            break;
        case "cities":
            scriptUrl = uri+"jobs/get_business_areas"
            queryObject = {
                city_id: selectedOptions.join(","),
                country_id:  countries
            };
            cities = selectedOptions.join(",");
            $("#categories").empty();
            $("#b_areas").empty();
            $("#categories").parent().addClass("search-spin").find("ul").empty();
            $("#b_areas").parent().addClass("search-spin").find("ul").empty();
            break;
        case "b_areas":
            scriptUrl = uri+"jobs/get_categories"
            queryObject = {
                city_id: cities,
                country_id:  countries,
                business_area_id:selectedOptions.join(",")
            };
            $("#categories").empty();
            $("#categories").parent().addClass("search-spin").find("ul").empty();
            break;

    }

    if(canAjax && selectID != "categories"){
        canAjax = false;

        $.ajax({
            type: 'POST',
            //url: scriptUrl,
            url:"/phpProxy.jsp?selectID=" + selectID,
            data: queryObject,
            success: function(data){

                //console.log(data.cities);
                  
                    for (var i in data.cities){
                        $("#cities").append($('<option></option>').val(data.cities[i].id).html(data.cities[i].label));
                    }
                    
                    for (var i in data.categories){
                        $("#categories").append($('<option></option>').val(data.categories[i].id).html(data.categories[i].label));
                    }
                    
                    for (var i in data.business_areas){
                        $("#b_areas").append($('<option></option>').val(data.business_areas[i].id).html(data.business_areas[i].label));
                    }

                repopulateSelects();

                canAjax = true;
            },
         dataType: 'json'
        });
    // alert('done');

    }
}

function repopulateSelects(){

    var filterBoxes = $(".filter-box");

    $.each(filterBoxes,function(i,fb){
        var list = $(this).find("ul");
        var select = $(this).find("select");
        $(this).find(".filter-box-list").removeClass("search-spin");

        list.empty();

        select.find("option").each(function(){
            if($(this).is(":selected")){
                list.append('<li class="selected" id="'+$(this).val()+'">'+$(this).text()+'</li>');
            }else{
                list.append('<li id="'+$(this).val()+'">'+$(this).text()+'</li>');
            }

        });
    });
}


function showRelevantSection(trigger){

    var targetArea = trigger.attr("data-target");

    if(targetArea != "" && targetArea != undefined){

        switch(targetArea){

            case"map":
                if($("#faqs").is(":visible")){
                    $("#faqs").hide();
                    $("#thefadeout").stop(true,true).fadeIn();
                }else if($("#hintstips").is(":visible")){
                    $("#hintstips").hide();
                    $("#thefadeout").stop(true,true).fadeIn();
                }else if($("#immigration").is(":visible")){
                    $("#immigration").hide();
                    $("#thefadeout").stop(true,true).fadeIn();
                }
                $(".reset").trigger("click");
                $("#keyword-search-box").fadeOut();
                $("#strap").css("margin-top","10px");
                $(".filter-box").stop(true,true).animate({
                    height:"95px"
                },500);
                $(".filter-box-list").stop(true,true).animate({
                    height:"65px"
                },500);
                $("#map").fadeIn();
                $("#per-page-container").fadeOut();


                if(wasLocationSearchDisabled()){
                    initialize_map(null,null);
                }else if(wasLocationDeterminedAlready()){

                    getUserLocationFromSavedPosition();

                }else{
                    initialize_map(null,null);
                }

                break;

            case"reference-search":
                if($("#faqs").is(":visible")){
                    $("#faqs").hide();
                    $("#thefadeout").stop(true,true).fadeIn();
                }else if($("#hintstips").is(":visible")){
                    $("#hintstips").hide();
                    $("#thefadeout").stop(true,true).fadeIn();
                }else if($("#immigration").is(":visible")){
                    $("#immigration").hide();
                    $("#thefadeout").stop(true,true).fadeIn();
                }
                $(".reset").trigger("click");
                $("#strap").css("margin-top","0px");
                $("#keyword-search-box").fadeIn();
                $(".filter-box").stop(true,true).animate({
                    height:"191px"
                },500);
                $(".filter-box-list").stop(true,true).animate({
                    height:"158px"
                },500);
                $("#map").fadeOut();
                $("#per-page-container").fadeIn();
                break;

            case"immigration":
                if($("#thefadeout").is(":visible")){
                    $("#thefadeout").stop(true,true).fadeOut(function(){
                        $("#immigration").stop(true,true).fadeIn()
                    });
                }else if($("#hintstips").is(":visible") || $("#faqs").is(":visible")){
                    $("#hintstips,#faqs").hide()
                    $("#immigration").stop(true,true).fadeIn();
                }

                break;

            case"hintstips":
                if($("#thefadeout").is(":visible")){
                    $("#thefadeout").stop(true,true).fadeOut(function(){
                        $("#hintstips").stop(true,true).fadeIn()
                    });
                }else if($("#immigration").is(":visible") || $("#faqs").is(":visible")){
                    $("#immigration,#faqs").hide()
                    $("#hintstips").stop(true,true).fadeIn();
                }
                break;

            case"faqs":
                if($("#thefadeout").is(":visible")){
                    $("#thefadeout").stop(true,true).fadeOut(function(){
                        $("#faqs").stop(true,true).fadeIn()
                    });
                }else if($("#hintstips").is(":visible") || $("#immigration").is(":visible")){
                    $("#hintstips,#immigration").hide()
                    $("#faqs").stop(true,true).fadeIn();
                }
                break;

        }
    }

}
