/*
 * progicomm_ajax.js
 * version 2010-10-08
 *
 * outil d'intégration de la recherche progicomm dans une interface style ajax
 * - F.G. - Juillet 2010
 *
 * 2010-10-08 : fixed english links (was missing pglang in some requests)  - FG
 * 2011-01-03 : Fixed position bug (select a part with a position then a part without position) - FG
 */




var pc_rech_url = null;
var pc_rech_lang = '1'; // 1 = francais, else = anglais
var pc_rech_pcelang = '1'; // langue pour pièces et positions
var pc_rech_last_results = '' // last result for details (liste des recycleurs)

function pc_rech_init(box, url, lang)
{
    pc_rech_url = url;
    pc_rech_lang = lang.toString();
		pc_rech_pcelang = lang.toString();
		
    $('#pc_rech_years').change(pc_rech_year_changed);
    $('#pc_rech_makes').change(pc_rech_get_models);
    $('#pc_rech_models').change(pc_rech_get_parts);
    $('#pc_rech_find').click(pc_rech_get_parts);
    $('#pc_rech_parts').change(pc_rech_get_positions);
    $('#pc_rech_positions').change(pc_rech_get_results);
    $('#pce_rech_switch_lang_en').click(pc_rech_set_rech_lang_en);
    $('#pce_rech_switch_lang_fr').click(pc_rech_set_rech_lang_fr);

    pc_rech_get_years_and_makes();
    pc_rech_get_models();
    pc_rech_get_parts();

}

function pc_rech_year_changed() {
    pc_rech_get_parts();
    pc_rech_clear_results();
    $('#pc_rech_makes').focus();
}

function pc_rech_get_years_and_makes()
{
    //http://progidev/progicomm/cgi_cmbo.cgi?pglang=1&pgskel=gauche.html
    var url = pc_rech_url + "cgi_cmbo.cgi?pglang=" + pc_rech_lang + "&pgskel=ajax_years_makes.html" ;
    
    $.get(url, function(data) {
        var $html = $(data);
        var years = $html.filter('#pc_rech_years').html();
        $('#pc_rech_years').html(years);
        var makes = $html.filter('#pc_rech_makes').html();
        $('#pc_rech_makes').html(makes);
    });
}



function pc_rech_get_models()
{
    var make = $('#pc_rech_makes').val();
    var year = $('#pc_rech_years').val();
    pc_rech_clear_results();
    if ((make == '') | (year == '')) {
        $('#pc_rech_models').html('<option value="">--------------------</option>');
        return;
    }
    

    //http://progidev/progicomm/cgi_cmbo.cgi?pgskel=sel_marque.html&pgannee=2011&pgfabricant=HONDA%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
    var url = pc_rech_url + "cgi_cmbo.cgi?pgskel=ajax_models.html" +
              "&pgannee=" + $('#pc_rech_years').val() +
              "&pgfabricant=" + $('#pc_rech_makes').val() +
              "&pglang=" + pc_rech_lang;
    $.get(url, function(data) {
        var $html = $(data);
        var models = $html.filter('#pc_rech_models').html();
        $('#pc_rech_models').html(models).focus();

        pc_rech_get_parts();
    });
}


function pc_rech_get_parts()
{
    $('#pc_rech_position_bloc').hide();

    var model = $('#pc_rech_models').val();
    if ((model == null) || (model == '') || (model == '00')) {
        $('#pc_rech_parts').html('<option value="">----------------------</option>');
        pc_rech_get_positions();
        return;
    }
    //http://progidev/progicomm/cgi_cmbo.cgi?pglang=1&pgskel=sel_pce.html&pgfabricant=HONDA%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&pgannee=2011&pgmodele=170233
    var url = pc_rech_url + "cgi_cmbo.cgi?pglang=" + pc_rech_lang +
              "&pgskel=ajax_parts.html" +
              "&pglangrech=" + pc_rech_pcelang;
    var rech = $('#pc_rech_text').val();
    if (rech) {url = url + "&pgrech=" + rech;}
    $.get(url, function(data) {
        var $html = $(data);
        var parts = $html.filter('#pc_rech_parts').html();
        $('#pc_rech_parts').html(parts).focus();
    });
}


function pc_rech_get_positions()
{
    var part = $('#pc_rech_parts').val();
    if (part == '') { 
        $('#pc_rech_position_bloc').hide();
        return;
    }

    var part_nb_pos = part.substring(0,1);
    if (part_nb_pos <= 1) {
        $('#pc_rech_position_bloc').hide();
        pc_rech_get_results();
        return;
    }

    // http://progidev/progicomm/cgi_cmbo.cgi?pgskel=sel_pos.html&pgannee=2011
    // &pgfabricant=HONDA%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&pgmarque=170233&pgpiece=20645
    var url = pc_rech_url + "cgi_cmbo.cgi?pgskel=ajax_positions.html" +
              "&pgannee=" + $('#pc_rech_years').val() +
              "&pgfabricant=" + $('#pc_rech_makes').val() +
              "&pgmarque=" + $('#pc_rech_models').val() +
              "&pgpiece=" + $('#pc_rech_parts').val() +
              "&pglang=" + pc_rech_lang;
    $.get(url, function(data) {
        var $html = $(data);
        var positions = $html.filter('#pc_rech_positions').html();
        $('#pc_rech_position_bloc').show();
        $('#pc_rech_positions').html(positions).focus();

    });
}


/*
 * the big function, is run when anything is selected
 */
function pc_rech_get_results()
{
    var make = $('#pc_rech_makes').val();
    var model = $('#pc_rech_models').val();
    var year = $('#pc_rech_years').val();
    var part_nb_pos = 0;
    var position = $('#pc_rech_positions').val();
    var part = $('#pc_rech_parts').val();

    if ((make == null) || (model == null) || (year == null) || (part == null)) {
        return;
    }

    part_nb_pos = part.substring(0,1);
    

    if (part_nb_pos > 1) {
        if ((position == '') || (position == '00') ) { return; }
    } else {
        position = '';
    }

    // http://progidev/progicomm/cgi_cmbo.cgi?pgskel=detail.html&pgannee=2006&pgfabricant=HONDA%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
    // &pgmarque=170233&pgpiece=20645&pgposition=1
    var url = pc_rech_url + 'cgi_cmbo.cgi?pgskel=ajax_details.html' +
              "&pgannee=" + year +
              "&pgfabricant=" + make +
              "&pgmarque=" + model +
              "&pgpiece=" + part +
              "&pgposition=" + position +
              "&pglang=" + pc_rech_lang;
    $.get(url, function(data) {

        /*
         *  if <META HTTP-EQUIV='refresh' CONTENT='0; URL="cgi_cmbo.cgi?pgskel=res.html&pglang=1&intchg=0645-020680%20-1;0645-020669%20-1;0645-020790%20-1;0645-020779%20-1;"'>
         *  is in the results then we need to grab the new content (awesome patch)
         */
        var refresh_url_pos = data.search(/<META HTTP-EQUIV='refresh' CONTENT='0; URL="/)
        if (refresh_url_pos >= 0) {
            var end_pos = data.search(/"'>/);
            var url = data.substring(refresh_url_pos + 44, end_pos);
            pc_rech_load_results_from_url(pc_rech_url + url, true);
            return;
        }

        var $html = $(data);
        var results = $html.filter('#pc_rech_results').html();
        $('#pc_rech_results').html(results);
        pc_rech_fix_results_links();
    });
}

function pc_rech_fix_results_links()
{

    $('a').each(function() {
        
        var href = $(this).attr('href');
        var p = href.search(/cgi_cmbo/);
        if (p >= 0) {
            $(this).attr('href','javascript:pc_rech_load_results_from_url("' + pc_rech_url + href.substring(p) + '");');
        }
       
        if (href.match(/runSubmit/)) {
            var recycler_id = href.substring(22,28);
            $(this).attr('href','javascript:pc_rech_load_recycler_details("' + recycler_id + '");');
        }
        
    });
}


function pc_rech_load_results_from_url(url, hide_return)
{
    url = url.replace("res.html","ajax_results.html");
    $.get(url,function(data) {
        pc_rech_last_results = data;
        $('#pc_rech_results').html(data);
        if (hide_return) {
            $('#pc_rech_return_button').hide();
        }
        pc_rech_fix_results_links();
    });
    
}

function pc_rech_reload_results()
{
    $('#pc_rech_results').html(pc_rech_last_results);
    pc_rech_fix_results_links();
}

function pc_rech_load_recycler_details(recycler_id)
{
    //http://progidev/progicomm/cgi_cmbo.cgi?pgskel=memb.html&pglang=1&pgmemb=000018
    var url = pc_rech_url + "cgi_cmbo.cgi?pgskel=ajax_memb.html" +
              "&pglang=" + pc_rech_lang +
              "&pgmemb=" + recycler_id;
   $.get(url,function(data) {
        $('#pc_rech_results').html(data);
    });

}



function pc_rech_clear_results()
{
    $('#pc_rech_results').html('');
}



function pc_rech_set_rech_lang_en()
{
    pc_rech_pcelang = 2;
    $('#pce_rech_switch_lang_en').hide();
    $('#pce_rech_switch_lang_fr').show();
    pc_rech_get_parts();
}

function pc_rech_set_rech_lang_fr()
{
    pc_rech_pcelang = 1;
    $('#pce_rech_switch_lang_en').show();
    $('#pce_rech_switch_lang_fr').hide();
    pc_rech_get_parts();
}
