////////////////////////////////////////
//CALL THE FIRST PAGE
$(document).ready(function()
    {
    buildPagArray();
    });
//---------------------------------------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------------------------------------
// DIVS TABS
////////////////////////////////////////
//SETING VARS AND TABS ARRAYS
var tabs_menu_array=new Array();//MAIN TAB'S ARRAY
var tabs_complete_array=new Array();//which tab is completed
var tabs_error_array=new Array();//which tab has error
var real_tab_length = 0;
var now_var = 1;

//var action = 'bgr_chauffeur_pagValidate.php'; //MOST BE PERSONALIZED IN THE CLIENTS FIELD
var msg_validating ="Validating data... just a moment...";
var msg_calculating="Estimating premium... please wait a moment...";
var msg_correct    ="Please correct the hilighted fields below";

//
//-- Build the array used to build the pagination
function buildPagArray()
    {
    //-- Loop trhough legends to build the menu tabs
    for(var i=0;i<$('legend').length;i++)
        {
        // Hide last tab - submit button
        if(i==($('legend').length-1)){ $('legend:nth('+i+')').parent().hide();continue; }
        var fieldset_name   = $('legend:nth('+i+')').parent().attr("id");
        var tmp_val_fields  = new Array();
        var count_fields    = $('#'+fieldset_name+' div > label').length;
        
        // @ DEBUG
        //console.log(fieldset_name+" - "+$('#'+fieldset_name+' div > label').length+" - "+i);

        // BUILD MAIN ARRAY
        tabs_menu_array[i]=new Array();
            tabs_menu_array[i]["id"]="pagination_"+i;
            tabs_menu_array[i]["title"]=$('legend:nth('+i+')').html();
            tabs_menu_array[i]["success_control_content"]="Please make sure you scroll all the way down the page.";
            
        //-- Build the fields to validate
        for(var i2=0;i2<count_fields;i2++)
            {
            var temp_field = $('#'+fieldset_name+' div > label:nth('+i2+')').attr('for');

            if(temp_field!="note" && temp_field!="submit_me")
                {
                tmp_val_fields[i2]=temp_field;
                }
            }
        
        if(isArray(tmp_val_fields)){ tabs_menu_array[i]["div_fields"]=tmp_val_fields.join(","); }
            
        if(i==0)
            {// If it's the first tab
            tabs_menu_array[i]["div_end"]="<span style='padding-left:30px;'><a href='#' onmousedown=\"$(window).scrollTop(0);validateDivPages('"+i+"','"+action+"');return false;\" class='button'><span>Continue</span></a></span>";
            }
        else
            {
            tabs_menu_array[i]["div_end"]="<table><tr><td><a href='#' onmousedown=\"$(window).scrollTop(0);enablePage("+(i-1)+");return false;\" class='button'><span>"
                                         +"Return to "+tabs_menu_array[(i-1)]["title"]+"</span></a></td>"
                                         +"<td><a href='#' onmousedown=\"$(window).scrollTop(0);validateDivPages('"+i+"','"+action+"');return false;\" class='button'>"
                                         +"<span>Continue</span></a></td></tr></table>";
            }
        //-- Var for future validation
        tabs_complete_array[i]=0;
    
        // @ DEBUG
        //console.log(tabs_menu_array[i]['title']);
        
        //-- Change fieldset id
        $('legend:nth('+i+')').parent().attr("id","pagination_"+i);
        }

    // CALL FUNCTIONS        
    if(tabs_menu_array)
        {
        real_tab_length = tabs_complete_array.length-1;
        enablePage(0);
        }
    }

////////////////////////////////////////
//ENABLE CURRENT PAGINATION DIV
function enablePage(page_to_enable)
    {
    //alert(page_to_enable);
    
    //READ TAB MENU ARRAY
    for (var tab in tabs_menu_array)
        {
        if(tab == page_to_enable)
            {//if founded the right page
            $('#pagination_'+tab).show();
            now_var = tab;
            }
        else
            {
            $('#pagination_'+tab).hide();
            }

        }
    drawPaginationMenu(page_to_enable);
    }

////////////////////////////////////////
// DRAW THE MENU
function drawPaginationMenu(page_enabled)
    {

    var tabs_menu_display = "";
    var bold = "";
    var mainClass = "";

    for (var tab in tabs_menu_array)
        {
        //alert(tab);
        
        if(now_var == tab){mainClass = "pag-active-tab";}
        else{mainClass = "pag-tab";}
        tabs_menu_display += "<span class=\""+mainClass+" pag-tab-link pagtabcomplete0\" id=\"pagtabspan"+tab+"\">"+(Number(tab)+1)+": "+tabs_menu_array[tab]["title"]+"</span> ";
        //tabs_menu_display += "<span class=\"pag-tab pag-tab-link pagtabcomplete0\" id=\"pagtabspan"+tab+"\"><a href='#' onclick='enablePage("+tab+");' id='pagtab"+tab+"' class=\"pag-tab-link\">"+tab+": "+tabs_menu_array[tab]["title"]+"</a></span> ";
        }

    // @ DEBUG
    //console.log(page_enabled + " <= " + real_tab_length);

    //-- if it's the last page
    if(page_enabled<=real_tab_length)
        {
        //-- draws the tabs and respective buttons
        $('#tabs_menu').html(tabs_menu_display);
        $('#div_end').html(tabs_menu_array[page_enabled]["div_end"]);//Submit button
        
        //-- if tab has errors registered in previous verification
        if(typeof tabs_error_array[page_enabled]!=undefined && tabs_error_array[page_enabled]==1)
            {
            $('#success_control').addClass("err_loading");
            $('#success_control').css("padding-left","5em");
            $('#success_control').html(msg_correct);
            }
        else
            {
            $('#success_control').removeClass("err_loading");
            $('#success_control').toggleClass("vac_loading");
            $('#success_control').css("padding-left","1em");
            $('#success_control').html(tabs_menu_array[page_enabled]["success_control_content"]);
            }
        
        //-- build the tab's form
        toggleCompleteStatus();
        }
    else{
        for(var tab_2 in tabs_complete_array)
            {
            if(tabs_complete_array[tab_2]==0)
                {
                
                $('#success_control').toggleClass("vac_loading");
                //$('#success_control').removeClass("err_loading");
                //$('#success_control').hide();
                validateDivPages(tab_2,action);
                
                enablePage(tab_2);
                return;
                }
            }
        //-- last msg
        $('#success_control').toggleClass("vac_loading");
        $('#success_control').css("padding-left","5em");
        $('#success_control').html(msg_calculating);
        $('#div_end').hide();
        $('#quote_form').submit();

        return;
        }
    }

////////////////////////////////////////
//MARK COMPLETE / INCOMPLETE TABS
function toggleCompleteStatus()
    {
    //-- 
    $('#div_end').show();
    $('#success_control').removeClass("vac_loading");
     
    //--
    for(tab in tabs_complete_array)
        {
        if(tabs_complete_array[tab])
            {
            $('#pagtabspan'+tab).addClass("pagtabcomplete1");
            $('#pagtab'+tab).addClass("a1");
            }
        else
            {
            $('#pagtabspan'+tab).removeClass("pagtabcomplete1");
            $('#pagtab'+tab).addClass("a2");
            }
        }   
    }

////////////////////////////////////////
// FIELDS VALIDATION
function validateDivPages(page_to_validate,action)
    {
    $('.redErr').removeClass('redErr');
    $('#success_control').removeClass("err_loading");
    $('#success_control').toggleClass("vac_loading");
    $('#success_control').css("padding-left","5em");
    $('#success_control').html(msg_validating);

    var params="";
    
    // @ DEBUG
    //console.log(page_to_validate+ " - " +tabs_menu_array[page_to_validate]["div_fields"]);
    
    var p={ncf:1,fields_to_validate:tabs_menu_array[page_to_validate]["div_fields"],page:page_to_validate};
    for (var x in p)
        {
        params += x+"="+p[x]+"&";
        }
    var p2=$('#quote_form').formToArray();

    //BEFORE VALIDATE
    //TO FIX THE ERROR HIGHLIGHT
    var tabs_tmp = tabs_menu_array[page_to_validate]["div_fields"].split(",");
    for(var i_tabs_tmp in tabs_tmp)
        {
        $("#lbl_e_"+tabs_tmp[i_tabs_tmp]).hide();
        $("#"+tabs_tmp[i_tabs_tmp]).unbind("mouseover")
        }

    //-- send form
    $.post(action+"?"+params,p2, function(data)
        {
        //alert(data);
        
        // kludge - data is coming with this string
        if(data.substr(0,2)=='\r\n')
            {
            data = data.substr(2)
            }
        
        $('#success_control').toggleClass("vac_loading");

        if(isNaN(data))
            {
            //alert(data);
            var values = data.split("|");
            
            // @ TODO
            //-- If there is an error, save in the error_log. 
            //-- So in this case if the returned data is not splited, assume that all the fields are OK and save the information in the log
            // --> if(isArray(values)){ alert("yes"); }else{ alert("No"); }
            
            var error_fields = values[0].split(",");
            var error_msgs = values[1].split(",");
            
            //HIGHLIGHT FIELDS
            hlErrFields(error_fields);

            // BIND EVENT HANDLERS FOR ERROR MESSAGES / TOOLTIPS
            hlMsgTips(error_msgs,error_fields);
            
            $('#success_control').toggleClass("vac_loading");
            $('#success_control').addClass("err_loading");
            $('#success_control').css("padding-left","5em");
            $('#success_control').html(msg_correct);
            //$('#success_control').css({border: "thin dotted #FFAAAA"});
            
            //SET VARS
            tabs_complete_array[page_to_validate]=0;
            tabs_error_array[page_to_validate]=1
            }
        else{
            //SET VARS
            tabs_complete_array[page_to_validate]=1;

            //show tab with error's content
            enablePage(data);
            }

        //TOGGLE TABS
        toggleCompleteStatus();
        });
    }

////////////////////////////////////////
//ERRORS
function handler(event)
    {
    $('#success_control').css("padding-left","5em");
    $("#success_control").html(event.data.foo);
    }
////////////////////////////////////////
//HIGHLIGHT ERRORS
function hlMsgTips(msg,field)
    {
    for(i=0;i<msg.length;i++)
        {
        m=(msg[i])?msg[i]:msg_correct;
        $('#'+field[i]).parent().bind("mouseover",{foo: m}, handler);
        $('#'+field[i]).parent().bind("mouseout",{foo: msg_correct}, handler);
        }
    }
function hlErrFields(a)
    {
    for(i=0;i<a.length;i++)
        {
         $('#lbl_f_'+a[i]).addClass("redErr");
         if(typeof($('#lbl_e_'+a[i])))
            {
            $('#lbl_e_'+a[i]).show().animate({color:'red'},1000).animate({color:'#585858'},200);
            if($('#lbl_f_'+a[i]).html()){var targetOffset = $('#lbl_f_' + a[i]).offset().top-50;}
            }
        }
    }

/**
* Function to discover if object is array
*/
function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}