var sub_sector_list = null;
var sub_sec_selected = new Array;
var search_init_run = false;
var not_check = false;
var sector_loading = null;

//addEvent( window, 'load', sector_setup );
addLoader( sector_setup );

function sector_setup()
{
    if ( search_init_run == true ) { return }
    search_init_run = true; 
    
    advanced_setup();
    
    if ( document.getElementById('coreSkillSelect') != null )
    {
        addEvent( document.getElementById('coreSkillSelect'),'change',change_sector );
    }
    
    if ( not_check == true ) 
    { 
        if ( document.getElementById('coreSkillSelect') != null ) { set_up_sector( document.getElementById( 'coreSkillSelect' ) ) }
        return; 
    } 
    
    var search_list = return_clean_search( {} );
    
    var search_hash = new Object;
    
    if ( search_list.length == 0 || search_list == null ) 
    { 
        set_up_sector( document.getElementById( 'coreSkillSelect' ) ); 
        return;
    }
        
    for ( var i = 0; i < search_list.length; i++ )
    {
        var pair = search_list[i].split('=');
        var parName = pair[0];
        var parValue = pair[1] || '';
        
        parValue = parValue.replace(/\+/g, ' ');
        parValue = unescape(parValue);
            
        if ( parValue == 'Any -- Anywhere in Scotland' ) { continue; }
        if ( parValue == '' ) { continue }
        if ( parName.match(/^advertised[12]$/) && parValue == 'dd/mm' ) { continue }
        
        if ( search_hash[parName] == null ) search_hash[parName] = new Array;
        
        
        if ( parName == 'jobtype' )
        {
            sub_sec_selected[sub_sec_selected.length] = parValue;
        }
        else
        {
            search_hash[parName][search_hash[parName].length] = parValue;
        }        
    }
    
    if ( search_hash['a_or_e'] == null || search_hash['a_or_e'].length == 0 )
    {
        search_hash['a_or_e'] = new Array( 'employer','agency', 'franchise' );
    }

    if ( search_hash['nolonger'] == null || search_hash['nolonger'].length == 0 )
    {
        search_hash['nolonger'] = new Array( '0' );
    }

    if ( search_hash['only_showme'] == null || search_hash['only_showme'].length == 0) 
    {
        search_hash['only_showme'] = new Array( 'datesmart' );
    }
    
    if ( search_hash['advertised1'] == null || search_hash['advertised1'].length == 0)
    {
        search_hash['advertised1'] = new Array( 'dd/mm/yy' );
    }

    if ( search_hash['advertised2'] == null || search_hash['advertised2'].length == 0)
    {
        search_hash['advertised2'] = new Array( 'dd/mm/yy' );
    }
        
    var inputs = document.getElementsByTagName('INPUT');
    for ( var i = 0; i < inputs.length; i++ )
    {
        var poss = inputs[i];
        if ( poss.type == 'checkbox' || poss.type == 'radio' ) { poss.checked = false;} 
        if ( search_hash[poss.name] != null && search_hash[poss.name].length > 0 )
        {
            if ( poss.type == 'hidden' || poss.type == 'text' ) 
            {
                var setting = search_hash[poss.name][search_hash[poss.name].length - 1]
                search_hash[poss.name].length = search_hash[poss.name].length - 1;
                poss.value = setting; 
                //  if ( poss.name.match(/^advertised[12]$/) )  { date_range_set() }
            }
            else if ( poss.type == 'checkbox' || poss.type == 'radio' )
            {
                var new_arr = new Array;
                for ( var j =0; j < search_hash[poss.name].length; j++ )
                {
                    var set = search_hash[poss.name][j];
                    if ( poss.value == set ) { poss.checked = true; }
                    else { new_arr[new_arr.length] = set }
                }
                search_hash[poss.name] = new_arr;
            }
        }
    }
    
    var selects = document.getElementsByTagName('SELECT');
    for ( var i = 0; i<  selects.length; i++ )
    {
        var selector = selects[i];  
        if ( selector.className == "s1playForm" ) continue;
   
        if ( search_hash[selector.name] != null && search_hash[selector.name].length > 0 )
        {
            var setting = search_hash[selector.name][search_hash[selector.name].length - 1];
            search_hash[selector.name].length = search_hash[selector.name].length - 1;
            
            for ( var j =0; j < selector.options.length; j++ )
            {
                if ( selector.options[j].value == setting ) {  selector.options.selectedIndex = j }
            }
                     
            if ( search_hash[selector.name].length > 0 )
            {               
                document.getElementById('hider-link1').style.display = "none";
                document.getElementById('hider-link2').style.display = "none";
                document.getElementById('location-2-cont').style.display = "block";
            }

            // public sector special case
            if(selector.name == 'public_sector')
            {
                document.getElementById('publicsectorcheckbox').checked = true;
                document.getElementById('publicsectorselect').disabled = false;
            }
            
            //if ( selector.name == 'datesmart' ) { date_smart_set() } 
        }
    }
    set_up_sector( document.getElementById( 'coreSkillSelect' ) );
}

function date_smart_set()
{
   var kr = document.getElementById('keywords_required');
   var ko = document.getElementById('keywords_optional');
   var ke = document.getElementById('keywords_exclude');

   document.getElementById('datesmartradio').checked = true;
   document.getElementById('includeoldcheckbox').checked = false;

   kr.disabled = false;
   ko.disabled = false;
   ke.disabled = false;
}

function date_range_set()
{
   var kr = document.getElementById('keywords_required');
   var ko = document.getElementById('keywords_optional');
   var ke = document.getElementById('keywords_exclude');

   if ( (kr.value != "") || (ko.value != "") || (ke.value != "") ) {
      if ( ! confirm("Keyword searching is not possible on date range seaches. Continue anyway?") ) {
         return false;
      }
   }
   document.getElementById('daterangeradio').checked = true;
   document.getElementById('includeoldcheckbox').checked = true;
   kr.disabled = true;
   ko.disabled = true;
   ke.disabled = true;
   kr.value = "";
   ko.value = "";
   ke.value = "";
}

function advanced_setup()
{
    if ( document.getElementById('advanced-search-holder') == null ) return;
    add_hide_button();
    addEvent(document.getElementById('publicsectorcheckbox'), 'click', function() { document.getElementById('publicsectorselect').disabled = ! document.getElementById('publicsectorcheckbox').checked; });
}

function reveal( e )
{
    var target = get_event_target(e);
    var container = target.parentNode;

    while ( !(  container.className.match(/hashidden/) || container.nodeName == 'BODY' ) )
    { 
        container = container.parentNode;
    }

    if ( container.nodeName == 'BODY' ) { return }

    apply_to_child_class( container, 'hidden', show_hidden ); 
    apply_to_child_class( container, 'hider', hide_shown ); 
 
    return false;
}

function reveal_location(e)
{
    document.getElementById('hider-link1').style.display = "none";
    document.getElementById('hider-link2').style.display = "none";
    document.getElementById('location-2-cont').style.display = "block";
}

function add_hide_button()
{        
    var link = document.getElementById('hider-link1');
    if (link)
    {
        addEvent( link, 'click', reveal_location );
    }
    var link2 = document.getElementById('hider-link2');
    if (link2)
    {
        addEvent( link2, 'click', reveal_location );            
    }
    return true;
}

function reveal_text(t)
{
    t.style.visibility = 'visible';
}

function hide_text(t)
{
    t.style.visibility = 'hidden';
}

function show_hidden(div_id)
{
    div_id.style.display = 'block';
}

function hide_shown(div_id)
{
    div_id.style.display = 'none';
}

function change_sector( e )
{
    var targ = get_event_target( e );
    set_up_sector( targ );
}

function base_multi( target, message )
{
    hide_shown( target);
    clean( target );

    if ( message )
    {
        var p = document.createElement('P');
        p.className = 'head';
        target.appendChild(p);
        p.appendChild(document.createTextNode(message));
    }
    show_hidden( target);
}

function set_up_sector( targ )
{
    var sector = targ.options[targ.options.selectedIndex].value;
    
    if ( sector != '' ) 
    { 
        sector_loading = sector;
        load_external_data( '/job-type.cgi?industrySector='+sector, 'sub_sector_list', update_sub_sectors(sector) );
            
        if ( document.getElementById('jobTypeSelect') )
        {
            base_select( document.getElementById('jobTypeSelect'),'Loading',true );
        }
        else if ( document.getElementById('job-specialisms') )
        {
            hide_shown(  document.getElementById('job-specialisms-cont') );
            clean( document.getElementById('job-specialisms') );
        }
    }
    else 
    {
        sector_loading = null;
        if ( document.getElementById('jobTypeSelect') )
        {
            base_select( document.getElementById('jobTypeSelect'),'Please select a core skill',true );
        }
        else if ( document.getElementById('job-specialisms') )
        {
            hide_shown(  document.getElementById('job-specialisms-cont') );
            clean( document.getElementById('job-specialisms') );
        }
    }
}

function base_select( sub_sec, text, disable )
{
    if ( ! disable ) { disable = false; }

    if ( document.getElementById('jobTypeWrapper') ) { hide_text( document.getElementById('jobTypeWrapper') ); }
    if ( document.getElementById('jobTypeLabel') ) { hide_text( document.getElementById('jobTypeLabel') ); }
    hide_text(  document.getElementById('jobTypeSelect') );
    clean(sub_sec);
    sub_sec.options[sub_sec.options.length] = new Option ( text,'', 0, 0);
    sub_sec.options.selectedIndex = 0;
    if ( document.getElementById('jobTypeWrapper') ) { reveal_text( document.getElementById('jobTypeWrapper') ); }
    if ( document.getElementById('jobTypeLabel') ) { reveal_text( document.getElementById('jobTypeLabel') ); }
    reveal_text(  document.getElementById('jobTypeSelect') );
    sub_sec.disabled = disable;
}

function toggle( e) 
{
    get_input_child(get_event_target(e)).click();
}

function get_input_child(t)
{
    if ( t.nodeName == 'INPUT' ) { return t }
    if ( t.getAttribute('for') ) { return document.getElementById( t.getAttribute('for') ) }
    for ( var j= 0; j< t.childNodes.length; j++)
    {
        if ( t.childNodes[j].nodeName == 'INPUT' ) { return t.childNodes[j] }
    }
    return null;
}

function clear_all(e )
{
    var self = get_input_child(get_event_target(e));
    if ( self.checked == true )
    {
        var t =  document.getElementById('job-specialisms');
        apply_to_child_class( t, 'togglee', function(t){ t.checked = false } );
    }
}

function clear_head(e)
{ 
    var self = get_input_child(get_event_target(e));
    if ( self.checked == true )
    {
        document.getElementById('checkAll').checked = false;
    }
}

function update_sub_sectors(sector)
{  
    return function()
    {
        if ( sector != sector_loading ) { return }
        sector_loading = null;
        if ( document.getElementById('job-specialisms') )
        {
            var target =  document.getElementById('job-specialisms');
            if ( sub_sector_list == null || sub_sector_list.length == 0 )
            {
                hide_shown(  document.getElementById('job-specialisms-cont') );
                clean( document.getElementById('job-specialisms') );
            }
            else 
            { 
                var selected = null;                    
                if ( sub_sec_selected && sub_sec_selected.length > 0 )
                {  
                    selected = new Object;
                    for ( var i = 0; i < sub_sec_selected.length; i++ )
                    {
                        selected[sub_sec_selected[i]] = true;
                    }    
                    sub_sec_selected = null;
                }
                
                show_hidden(document.getElementById('job-specialisms-cont'));
                base_multi(target); 
                
                var head =document.createElement( 'P');
                head.className = 'all-specialisms';
                target.appendChild( head );

                var check = document.createElement( 'INPUT' );
                check.type = 'checkbox';
                check.value = '';
                check.id = 'checkAll';
                check.className = "field checkbox";
                head.appendChild( check );
                if ( selected == null ) check.checked = true;
                addEvent( check, 'click', clear_all );  

                var wrap = document.createElement( 'LABEL' );
                wrap.setAttribute('for','checkAll');
                wrap.className = "choice";
                wrap.appendChild( document.createTextNode( ' All specialisms' ) );
                if (! wrap.addEventListener) addEvent( wrap, 'click', toggle );
                head.appendChild( wrap );
                
                for ( var j = 0; j < sub_sector_list.length; j++ )
                {    
                    var cell2 = document.createElement('P');
                    target.appendChild( cell2 );

                    var check = document.createElement( 'INPUT' );
                    check.type = 'checkbox';
                    cell2.appendChild( check );
                    check.value = sub_sector_list[j];
                    check.name = 'jobtype'; 
                    check.className = 'togglee field checkbox';
                    check.id = 'ck'+j;
                    if ( selected && selected[sub_sector_list[j]] ) check.checked = true;
                    addEvent( check, 'click', clear_head );   

                    var wrap = document.createElement( 'LABEL' );
                    cell2.appendChild( wrap );
                    wrap.setAttribute('for','ck'+j);
                    wrap.className = "choice";

                    if (! wrap.addEventListener) addEvent( wrap, 'click', toggle );
                    wrap.appendChild( document.createTextNode( ' '+sub_sector_list[j] ) );                            
                }                            
            }
        } 
        else if ( document.getElementById('jobTypeSelect') )
        {
            var selec = '';
            var idx = 0;
            var sub_sec = document.getElementById('jobTypeSelect');
            if ( sub_sec_selected && sub_sec_selected.length > 0 )
            {
                selec = sub_sec_selected[sub_sec_selected.length-1];
                sub_sec_selected.length--;
            }
                
            if ( sub_sector_list == null || sub_sector_list.length == 0 )
            {               
                base_select( document.getElementById('jobTypeSelect'), 'None Available',true );                    
            }
            else
            {
                base_select( sub_sec, 'All');
                for ( var j = 0; j < sub_sector_list.length; j++ )
                {
                    if ( sub_sector_list[j] == selec ) { idx = sub_sec.options.length; }  
                    sub_sec.options[sub_sec.options.length] = new Option ( sub_sector_list[j],sub_sector_list[j], 0, 0);
                }
                sub_sec.options.selectedIndex = idx;
            }       
        }
    };
}


