/****************************************************************************************************
Script: nm_advSearch.js

Description: The script contains the function used in advSearch.php

Called By: advSearch.php

$Id: nm_advSearch.js,v 1.9 2011/01/11 06:10:55 bakul Exp $
*****************************************************************************************************/

/**
 * Define global variable for those field they generated using javascript, used
 * for manipulation
 */
var mkModel=new Array();
var selTown=new Array();
var milgeTo=h_milgeTo=yrTo=engTo='';

// Display snow Mobile option button
function dispSnowOpt(vType)
{
    var flag = 0;
    for(i=0;i<vType.length;i++)
    {
        if(vType.options[i].selected)
        {
            if(vType.options[i].value == 6)
            {
            flag = 1;
            break;
            }
        }
    }
    if(flag)
    {
        document.getElementById('snowMobile').style.display = "";
    }
    else
    {
        document.getElementById('snowMobile').style.display = 'none';
        document.getElementById('snowl').checked = false;
        document.getElementById('snowf').checked = false;
    }
}

/**
 * when page is loaded store default value of those field they generated using
 * javaScript, this field value is not reset using reset function of javascript
 * so, reset manually.
 */
function setDefReset(advForm)
{
    if(advForm.id_sel_engine_model.length > 0)
    {
        for(var st=0; st<advForm.id_sel_engine_model.length; st++)
        {
            /**
             * Assign in mkModel array 'selected domicile and town' as value and
             * text seperated with @
             */
            if(advForm.id_sel_engine_model[st].value != "")
            mkModel[st]=advForm.id_sel_engine_model[st].value+"@"+advForm.id_sel_engine_model[st].text;
        }
    }

    if(advForm.mileageTo.selectedIndex > 0)
        milgeTo=advForm.mileageTo.value;

    if(advForm.yearTo.selectedIndex > 0)
        yrTo=advForm.yearTo.value;

    if(advForm.engineTo.selectedIndex > 0)
        engTo=advForm.engineTo.value;

	if(advForm.id_sel_town && advForm.id_sel_town.length > 0)
    {
        var defValArr=new Array();

        for(var i=0; i<advForm.id_sel_town.length; i++)
        {
            /**
             * Assign value and text name seperated with ,to defValArr array of
             * given field name
             */
            if(advForm.id_sel_town[i].value != "")
                defValArr[i]=advForm.id_sel_town[i].value+","+advForm.id_sel_town[i].text;
        }
		selTown=defValArr;
    }
}

// Function is to used not to allow the user to uncheck all of the checkboxes in
// group.
function updateChkGrp(chkGrp)
{
    var totEle=chkGrp.form.elements.length;

    // if the checkbox is unchecked.
    if(!chkGrp.checked)
    {
        for(var i=0;i < totEle;i++)
        {
            if(chkGrp.form.elements[i].name == chkGrp.name && chkGrp.form.elements[i].checked)
            {
                callAjax(document.adv); // This is used for counter when price
                                        // status is unchecked
                return;
            }
        }
        chkGrp.checked=true;
    }
    callAjax(document.adv); // This is used for counter when price status is
                            // unchecked
}
// Function to select default option automatically when all of the other
// checkboxes are unchecked.
function changeChkOpt(chkGrp)
{
    var totEle=document.adv.elements.length;

    // if the checkbox is unchecked.
    if(!chkGrp.checked)
    {
        // this variable holds the index of the "Any/default" in the form.
        var j;

        for(var i=0;i < totEle;i++)
        {
            if(chkGrp.form.elements[i].name == chkGrp.name && chkGrp.form.elements[i].checked)
                return;

            // Storet the index number of the default checkbox in the form.
            if(chkGrp.form.elements[i].name == chkGrp.name && (chkGrp.form.elements[i].value == '' || chkGrp.form.elements[i].value == 'on'))
                j=i;
        }
        // Display the default checkbox as selected, as user has not selected in
        // checkbox other than default.
        chkGrp.form.elements[j].checked=true;
        return;
    }

    // if the 'Any' checkbox is selected, then uncheck other checkboxes with the
    // same name.
    if(chkGrp.value == '' || chkGrp.value == 'on')
    {
        for(var i=0;i < totEle;i++)
        {
            if(chkGrp.form.elements[i].name == chkGrp.name && chkGrp.form.elements[i].value > 0)
            {
                chkGrp.form.elements[i].checked=false;
            }
        }
    }
    else // if chekckbox other than 'Any' is selected, uncheck 'Any'
            // checkbox.
    {
        for(var i=0;i < totEle;i++)
        {
            if(chkGrp.form.elements[i].name == chkGrp.name && (chkGrp.form.elements[i].value == '' || chkGrp.form.elements[i].value == 'on'))
                chkGrp.form.elements[i].checked=false;
        }
    }
}
function searchFA()
{
    if(document.adv.findAgent.value.length > 0)
    {
        alert(msgFaForRegUser);
        document.adv.findAgent.value='';
        document.adv.go.focus();
        return false;
    }
}
function blankFa()
{
    if(!checkCity(document.adv.findAgent.value))
    {
        alert(msgInvalidFa);
        document.adv.findAgent.focus();
        return false;
    }
}
function checkFa()
{
    var p=t='';

    if(document.adv.id_sel_engine_model.length > 0)
    {
        for(a=0; a<document.adv.id_sel_engine_model.length-1; a++)
        {
            if(document.adv.id_sel_engine_model[a].value != '')
                p +=document.adv.id_sel_engine_model[a].value+'@';
        }
        if(document.adv.id_sel_engine_model[a].value != '')
            p +=document.adv.id_sel_engine_model[a].value;

        document.adv.zEngineModel.value=p;
    }
    if(document.adv.id_sel_town.length > 0)
    {
        for(a=0; a<document.adv.id_sel_town.length-1; a++)
        {
            if(document.adv.id_sel_town[a].value != "")
                t += document.adv.id_sel_town[a].value+",";
        }
        if(document.adv.id_sel_town[a].value != "")
            t += document.adv.id_sel_town[a].value;

        document.adv.selTown.value=t;
    }
    return true;
}
function chkMandOutOfTwo(chk,chkOther)
{
    // if another checkbox is not selected/checked, keep the first one as
    // selected regardless of
    // whether user has checked or unchecked.
    if(!chkOther.checked)
        chk.checked=true;

    return;
}
function addAny(v1,v2)
{
    if(v1.options.length == 0)
    {
        selOpt=new Option("","");
        eval("v1.options[0]=selOpt");
    }
    if(v2.options.length == 0)
    {
        selOpt=new Option("","");
        eval("v2.options[0]=selOpt");
    }
}

function showHideRentUnit()
{
	if(document.adv.status[1].checked)
		document.getElementById('adv_rent_price').style.display="block";
	else
		document.getElementById('adv_rent_price').style.display="none";
}
function loadDef(v1)
{
    if(!v1.value)
    {
        if(v1.name=='priceFrom' || v1.name=='prFrom')
        	v1.value=lvalue;
        else if(v1.name=='priceTo' || v1.name=='prTo')
            v1.value=uvalue;
    }
	showHideRentUnit();
}

function ajaxListChange(frmObj,chgFor,efs,idad)
{
    var efs,idad,pars;
    var xhr=createXHR();

    if(idad)
    {
        var btVal=idiv(frmObj.name+'_id_bike_type_'+idad).options[idiv(frmObj.name+'_id_bike_type_'+idad).selectedIndex].value;
        var stVal=idiv(frmObj.name+'_id_sub_type_'+idad).options[idiv(frmObj.name+'_id_sub_type_'+idad).selectedIndex].value;
        var mkVal=idiv(frmObj.name+'_id_make_'+idad).options[idiv(frmObj.name+'_id_make_'+idad).selectedIndex].value;
        var mdVal=idiv(frmObj.name+'_id_model_'+idad).options[idiv(frmObj.name+'_id_model_'+idad).selectedIndex].value;

        pars='id_bike_type=' + btVal + '&id_sub_type=' + stVal + '&id_make=' + mkVal + '&id_model=' + mdVal + '&fldId=' + idad;
    }
    else
    {
        pars=Form.serialize($(frmObj));
        if(typeof efs == 'undefined') efs='';
    }

    pars +='&site=NM&chgFor=' + chgFor + '&ajxr=A' + efs + '&frm=' + frmObj.name;
    pars=pars.replace(/([a-zA-Z_]+=&)*/gi,'');

    xhr.open('POST',_su+'/ajaxChangeEntity.php');
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.setRequestHeader("Content-length", pars.length);
    xhr.setRequestHeader("Connection", "close");
    xhr.onreadystatechange=function()
    {
        if(xhr.readyState == 4)
        {
            showTextResponse(xhr.responseText);

            if((frmObj.name == 'srch' || frmObj.name == 'adv') && !frmObj.bonus)
            {
                if(frmObj.name == 'adv' && chgFor == 'MD')
                {
                    idEngineModel=frmObj.id_engine_model.length;
                    if(idEngineModel == 1)
                        frmObj.id_engine_model[0].selected=true;

                    if(idEngineModel > 0)
                        addModelEngineModel(frmObj,frmObj.id_sel_engine_model);
                }
                callAjax(frmObj);
            }
        }
    }
    xhr.send(pars);
    return false;
}
function callAjax(frmObj)
{
    var ajaxFName = _su + "/ajaxSearchCounter.php?ajxifrm=A&site=NM";
    if (frmObj.name == "adv")
    {
        checkFa();
        return ajaxCounterChng(ajaxFName + ("&frm=ADV&" + cleanFrmUrl(frmObj)), frmObj.name);
    }
    else if (frmObj.name == "srch")
    {
        return ajaxCounterChng(ajaxFName + ("&frm=SIMP&" + cleanFrmUrl(frmObj)), frmObj.name);
    }
}
function yearChange(v1,v2,curval)
{
    var tot=v1.selectedIndex+1;
    if(tot==1)
        tot=v1.options.length-1;
    if(curval==''&&v2.selectedIndex>0)
        curval=v2.options[v2.selectedIndex].value;
    v2.length=1;
    for(i=1,j=1;i<tot;j++,i++)
    {
        temp=new Option(v1.options[i].value,v1.options[i].value);
        eval(v2.options[j]=temp);
        if(curval==v1.options[i].value)
            v2.selectedIndex=j;
    }
}
// Function to change the Length,Power and Price list box options
function listboxChange(v1,v2,curval,sign)
{
    if(v1.selectedIndex < 1)
        var st=1;
    else
        var st=v1.selectedIndex;

    if(curval == '' && v2.selectedIndex > 0)
        curval=v2.options[v2.selectedIndex].value;

    var tot=v1.length;
    v2.length=1;

    for(i=st,j=1; i < tot; j++,i++)
    {
        if (parseInt(v1.options[i].value) >= 1000)
        {
            var len=v1.options[i].value.length;
            var disp=v1.options[i].value;
            var disp1=disp.substr(0,len-3);
            var disp2=disp.substr(len-3,len);
            disp=disp1+' '+disp2;
        }
        else
            var disp=v1.options[i].value;

        if(sign != '')
            disp=disp+' '+sign;

        temp=new Option(disp,v1.options[i].value);
        eval("v2.options[j]=temp");

        if(curval == v1.options[i].value)
            v2.selectedIndex=j;
    }
}
/** Function to add selected make,model and engine model value in ADV search. */
function addModelEngineModel(v1,v2)
{
    if(!(v1.id_engine_model.selectedIndex >= 0))
        return;

    if(v1.id_engine_model[v1.id_engine_model.selectedIndex].value != '')
    {
        if(v2.options[0].value == '')
            document.adv.id_sel_engine_model.length--;

        if(v2.selectedIndex == 1)
            v2.selectedIndex=0;

        var selMakeVal=selMakeText=selModelVal=selModelText='';
        var totSelected=v2.length;
        var dup=0;

        var makeModelVal=v1.id_engine_model[0].value; // Ex.: 8#BMW OR
                                                        // 8#BMW,1345#F
        var makeModelValInfo=makeModelVal.split(',');

        if(makeModelValInfo[0])
        {
            var makeInfo=makeModelValInfo[0].split('#');
            selMakeVal=makeInfo[0];
            selMakeText=makeInfo[1];
        }

        if(makeModelValInfo[1])
        {
            var modelInfo=makeModelValInfo[1].split('#');
            selModelVal=modelInfo[0];
            selModelText=modelInfo[1];
        }

        // Select value.
        var selectTmpVal=v1.id_engine_model[v1.id_engine_model.selectedIndex].value;

        for(o=0; o<totSelected; o++)
        {
            var onlyMake=onlyMkModel='';
            var selectedTmpVal=v2.options[o].value; // Ex.: 8#BMW OR
                                                    // 8#BMW,1345#F OR
                                                    // 8#BMW,1355#F,1

            var selectedInfo=selectedTmpVal.split(',');
            onlyMake=selectedInfo[0];

            if(selectedInfo[1])
                onlyMkModel=selectedInfo[0]+','+selectedInfo[1];

            if(selectedInfo[2] && selectedInfo[2] == selectTmpVal) // You have
                                                                    // already
                                                                    // selected
                                                                    // this
                                                                    // engine
                                                                    // model
            {
                dup=1;
                alert(msgDupEngModelSelected);
                break;
            }
            else if(onlyMkModel && selectedTmpVal == selectTmpVal) // All
                                                                    // engine
                                                                    // models
                                                                    // from this
                                                                    // model are
                                                                    // already
                                                                    // selected
            {
                dup=1;
                alert(msgAllModelSelected);
                break;
            }
            else if(onlyMake  && selectedTmpVal == selectTmpVal) // All
                                                                    // models/engine
                                                                    // models
                                                                    // from this
                                                                    // make are
                                                                    // already
                                                                    // selected
            {
                dup=1;
                alert(msgAllMakeSelected);
                break;
            }
            else if(selectTmpVal.match(/^([0-9]{1,})$/i))
            {
                if(onlyMkModel && selectedTmpVal == makeModelVal) // All
                                                                    // engine
                                                                    // models
                                                                    // from this
                                                                    // model are
                                                                    // already
                                                                    // selected
                {
                    dup=1;
                    alert(msgAllModelSelected);
                    break;
                }
                else if(onlyMake && !onlyMkModel &&  selectedTmpVal == makeModelValInfo[0]) // All
                                                                                            // models/engine
                                                                                            // models
                                                                                            // from
                                                                                            // this
                                                                                            // make
                                                                                            // are
                                                                                            // already
                                                                                            // selected
                {
                    dup=1;
                    alert(msgAllMakeSelected);
                    break;
                }
            }
            else if(selectTmpVal.match(/^([0-9]{1,})#/i))
            {
                if(onlyMake && !onlyMkModel &&  selectedTmpVal == makeModelValInfo[0]) // All
                                                                                        // models/engine
                                                                                        // models
                                                                                        // from
                                                                                        // this
                                                                                        // make
                                                                                        // are
                                                                                        // already
                                                                                        // selected
                {
                    dup=1;
                    alert(msgAllMakeSelected);
                    break;
                }

                // if select value like 8#BMW,1345#F then replace all engine
                // model with make:model: Any Engine model
                if(selModelVal)
                {
                    for(i=1; i < v1.id_engine_model.length; i++)
                    {
                        var engModel_value=new String(v1.id_engine_model[i].value);

                        for(h=0; h<totSelected; h++)
                        {
                            var v2Value=v2.options[h].value;
                            var v2ValueInfo=v2Value.split(',');

                            /** Check for id_engine_model */
                            if(v2ValueInfo[2] == engModel_value)
                            {
                                var j=0;

                                for(var r=h; r<totSelected;r++)
                                {
                                    j=r+1;

                                    if(j > (totSelected-1))
                                        j=totSelected-1;

                                    var disp=v2.options[j].text;
                                    var val=v2.options[j].value;

                                    selOpt=new Option(disp,val);
                                    eval('v2.options[r]=selOpt');
                                }
                                v2.length=totSelected-1;
                                totSelected=v2.length;
                            }
                        }
                    }
                }
                else // if select value like 8#BMW then replace all
                        // model/enginemodel with make: Any model - Engine model
                {
                    for(i=1; i < v1.id_model.length; i++)
                    {
                        for(h=0; h<totSelected; h++)
                        {
                            var v2Value=v2.options[h].value;
                            var v2ValueInfo=v2Value.split(',');

                            /** Check for id_make */
                            if(v2ValueInfo[0] == selectTmpVal)
                            {
                                var j=0;

                                for(var r=h; r<totSelected; r++)
                                {
                                    j=r+1;

                                    if(j > (totSelected-1))
                                        j=totSelected - 1;

                                    var disp=v2.options[j].text;
                                    var val=v2.options[j].value;

                                    selOpt=new Option(disp,val);
                                    eval('v2.options[r]=selOpt');
                                }
                                v2.length=totSelected-1;
                                totSelected=v2.length;
                            }
                        }
                    }
                }
            }
        }

        if(dup != 1)
        {
            /** make model and engine model selected. */
            if(v1.id_engine_model[v1.id_engine_model.selectedIndex].value.match(/^([0-9]{1,})$/i))
            {
                var selectedText=selMakeText+': '+selModelText+': '+v1.id_engine_model[v1.id_engine_model.selectedIndex].text;
                var selectedVal=makeModelValInfo[0]+','+makeModelValInfo[1]+','+v1.id_engine_model[v1.id_engine_model.selectedIndex].value;

                selOpt=new Option(selectedText,selectedVal);
            }
            else // Any Model - engine model OR Any Engine model.
                selOpt=new Option(v1.id_engine_model[v1.id_engine_model.selectedIndex].text,v1.id_engine_model[v1.id_engine_model.selectedIndex].value);

            eval('v2.options[totSelected]=selOpt');
        }
    }
}
/**
 * Function to remove selected values from selected make-model-Engine Model
 * fields, In ADV search.
 */
function removeEngineModel(v1)
{
    var p=v1.selectedIndex;
    var j=0;
    var totSelected=v1.options.length;

    if(totSelected > p)
    {
        for(i=p; i<=totSelected; i++)
        {
            j=i+1;

            if(j > (totSelected-1))
                j=totSelected-1;

            var disp=v1[j].text;
            var val=v1[j].value;

            selOpt=new Option(disp,val);
            eval('v1.options[i]=selOpt');
        }
    }
    v1.length=totSelected-1;

    /** If no option is there then add "any" as default */
    if(v1.options.length == 0)
    {
        selOpt=new Option('                                                      ','');
        eval('v1.options[0]=selOpt');
    }
}

function getDomTown(domVal,curval,page,sCode)
{
    var townStr='';
    var townUrl='http://'+location.hostname+'/ajaxGetDomicileTown.php?ajxifrm=A&frm='+page+'&site=NM&';

    if(curval) townStr='&sel_id_town='+curval;

    if(page == 'ADV')
        AjaxUpdater('adv_id_town',townUrl+'id_domicile='+domVal+townStr,"callAjax(document.adv);");
    else if(page == 'SIMP')
        AjaxUpdater('srch_id_town',townUrl+'id_domicile='+domVal+townStr,"callAjax(document.srch);");
    else if(page == 'POST')
        AjaxUpdater('post_id_town',townUrl+'id_domicile='+domVal+townStr);
    else if(page == 'listService')
        AjaxUpdater('service_id_town',townUrl+'id_domicile='+domVal+townStr);
}
