String.prototype.replaceAt = function( index , character ) {
    return this.substr( 0 , index ) + character + this.substring( index + character.length );
};

String.prototype.uppercaseFirstLetter = function() {
    return this.replaceAt( 0 , this.charAt( 0 ).toUpperCase() );
};

String.prototype.trim = function() {
    return this.replace( /^\s+|\s+$/g , "" ).replace( /\s{2,}/g , " " );
};

String.prototype.isEmpty = function() {
    return this.trim() == "";
};

String.prototype.contains = function( string ) {
    return this.toLowerCase().match( string.toLowerCase() ) != null;
};

String.prototype.equals = function( string ) {
    return this == string;
};

String.prototype.capitalize = function(){
    return this.replace( /(^|\s)([a-z])/g , function( m , p1 , p2 ) {
        return p1 + p2.toUpperCase();
    } );
};

var xmlhttpML = null, intervalID = null, suggestionPosition = 0, outletFirstCarIndex = 0;
var t = null; //ajax timer
var defTimeout = 3000;   //default timeout time (ms)
var AJAX_URL = ( "http://" + window.location.host + "/AjaxServlet" );
var STATS_URL = "/OutletClickingServlet";
var globalCounter = 0;

function doAjax( url , callback , params, timeout, tofn ) {
    if ( window.XMLHttpRequest ) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttpML = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttpML = new ActiveXObject( "Microsoft.XMLHTTP" );
    }
    xmlhttpML.open( "GET" , url , true );
    xmlhttpML.setRequestHeader( "Content-Type" , "text/plain; charset=UTF-8" );
    // function callback
    xmlhttpML.onreadystatechange = function() {
        callback.call( this , params );
    };
    xmlhttpML.send( null );

    if(timeout!=null && timeout!='undefined' && tofn!=null && tofn!='undefined') {
        clearTimeout(t);
        t=setTimeout(tofn, timeout);
    }
}

function doAjaxPost( url , callback , params, timeout, tofn ) {
    if ( window.XMLHttpRequest ) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttpML = new XMLHttpRequest();
    }
    else {
        // code for IE6, IE5
        xmlhttpML = new ActiveXObject( "Microsoft.XMLHTTP" );
    }
    xmlhttpML.open( "POST" , url , true );
    xmlhttpML.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded; charset=UTF-8" );
    xmlhttpML.setRequestHeader( "Content-length" , params.length );
    xmlhttpML.setRequestHeader( "Connection" , "close" );
    // function callback
    xmlhttpML.onreadystatechange = function() {
        callback.call( this , params );
    };
    xmlhttpML.send( params );

    if(timeout!=null && timeout!='undefined' && tofn!=null && tofn!='undefined') {
        clearTimeout(t);
        t=setTimeout(tofn, timeout);
    }
}

function ajax(url, params, callback){
    $.ajax( {
        url:url,
        data:params,
        success:callback,
        contentType: "application/x-www-form-urlencoded;charset=UTF-8"
    } );
}

function changeCountry(){
    intervalID = setInterval( "countDown()" , 50 );
     
    var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "bodytype" , "fueltype" );

    for(var i=0; i<elements.length;i++){
        $("#"+elements[i]).attr("disabled", "disabled");
    }
    var params = "op=makes&" + getQuickSearchHomeURLParameters();
    ajax( AJAX_URL, params, updateMakesList);
    
}

function changeMake(){
    //alert("Pozivam change make");
    // ponistavamo rezultate prethodne pretrage
    $('#model').find('option:not(:first)').remove();
    $('#trim').find('option:not(:first)').remove();

    // niz selectboxeva
    if ( window.location.pathname == "/" )
        var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "bodytype" , "fueltype" );
    else
        var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "fueltype" );

    if ( $( "#make" ).val() == "any" ) {
        // saljemo ajax zahtev za update brojaca
        var params = "op=count&" + getQuickSearchHomeURLParameters();
        ajax(AJAX_URL, params, updateCounter);
        return;
    }
    // pokrecemo animaciju sa odbrojavanjem
    intervalID = setInterval( "countDown()" , 50 );

    // disejblujemo selectboxeve
    for(var i=0; i<elements.length;i++){
        $("#"+elements[i]).attr("disabled", "disabled");
    }
    var ajax_params = "op=models&" + getQuickSearchHomeURLParameters();
    
    ajax(AJAX_URL, ajax_params, updateModelsList);
    
}

function changeModel(){
   
    // ponistavamo rezultate prethodne pretrage
    $('#trim').find('option:not(:first)').remove();

    // niz sa parametrima
    if ( window.location.pathname == "/" )
        var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "bodytype" , "fueltype" );
    else
        var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "fueltype" );
 
    if ( $( "#model" ).val() == "any" ) {
        // saljemo ajax zahtev za update brojaca
        var params = "op=count&" + getQuickSearchHomeURLParameters();
        
        ajax( AJAX_URL, params , updateCounter);
        return;
    }

    // pokrecemo animaciju sa odbrojavanjem
    intervalID = setInterval( "countDown()" , 50 );

    // disejblujemo selectboxeve
    for(var i=0; i<elements.length;i++){
        $("#"+elements[i]).attr("disabled", "disabled");
    }

    var ajax_params = "op=trims&" + getQuickSearchHomeURLParameters();
    ajax( AJAX_URL, ajax_params, updateTrimList);
}

function changeTrim(){
    // niz elemenata
    if ( window.location.pathname == "/" )
        var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "bodytype" , "fueltype" );
    else
        var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "fueltype" );

    if ( $( "#trim" ).val() == "any" ) {
        // saljemo ajax zahtev za update brojaca
        var params = "op=count&" + getQuickSearchHomeURLParameters();
        ajax( AJAX_URL, params , updateCounter);
        return;
    }
    // disejblujemo selectboxeve
    for(var i=0; i<elements.length;i++){
        $("#"+elements[i]).attr("disabled", "disabled");
    }
    // pokrecemo animaciju sa odbrojavanjem
    intervalID = setInterval( "countDown()" , 50 );
    // saljemo ajax zahtev za brojanje
    var ajax_params = "op=count&" + getQuickSearchHomeURLParameters();
    ajax( AJAX_URL, ajax_params , updateCounter);
}

function changePrice(field){
    // niz selectboxeva
    if ( window.location.pathname == "/" )
        var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "bodytype" , "fueltype" );
    else
        var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "fueltype" );

    // disejblujemo selectboxeve
    for(var i=0; i<elements.length;i++){
        $("#"+elements[i]).attr("disabled", "disabled");
    }

    // racunamo opseg
    if ( field.id != "priceto" )
        calculateRange( "pricefrom" , "priceto" );

    // pokrecemo animaciju sa odbrojavanjem
    intervalID = setInterval( "countDown()" , 50 );
    var ajax_params = "op=count&" + getQuickSearchHomeURLParameters();
    // saljemo ajax zahtev za brojanje
    ajax( AJAX_URL, ajax_params, updateCounter );
}

function changeYear( field ) {
    // niz selectboxeva
    if ( window.location.pathname == "/" )
        var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "bodytype" , "fueltype" );
    else
        var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "fueltype" );

    // disejblujemo selectboxeve
    for(var i=0; i<elements.length;i++){
        $("#"+elements[i]).attr("disabled", "disabled");
    }

    // racunamo opseg
    if ( field.id != "yearto" )
        calculateRange( "yearfrom" , "yearto" );

    // pokrecemo animaciju sa odbrojavanjem
    intervalID = setInterval( "countDown()" , 50 );
    var ajax_params = "op=count&" + getQuickSearchHomeURLParameters();
    // saljemo ajax zahtev za brojanje
    ajax( AJAX_URL, ajax_params, updateCounter );
}

function changeMileage( field ) {
    // niz selectboxeva
    var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom", "mileageto" , "bodytype" , "fueltype" );

    // disejblujemo selectboxeve
    for(var i=0; i<elements.length;i++){
        $("#"+elements[i]).attr("disabled", "disabled");
    }

    // racunamo opseg
    if ( field.id != "mileageto" )
        calculateRange( "mileagefrom" , "mileageto" );

    // pokrecemo animaciju sa odbrojavanjem
    intervalID = setInterval( "countDown()" , 50 );

    var ajax_params = "op=count&" + getQuickSearchHomeURLParameters();
    // saljemo ajax zahtev za brojanje
    ajax( AJAX_URL, ajax_params, updateCounter );
}

function changeBodyType() {
    // niz selectboxeva
    var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom", "mileageto" , "bodytype" , "fueltype" );

    // disejblujemo selectboxeve
    for(var i=0; i<elements.length;i++){
        $("#"+elements[i]).attr("disabled", "disabled");
    }

    // pokrecemo animaciju sa odbrojavanjem
    intervalID = setInterval( "countDown()" , 50 );
    
    var ajax_params = "op=count&" + getQuickSearchHomeURLParameters();
    // saljemo ajax zahtev za brojanje
    ajax( AJAX_URL, ajax_params, updateCounter );
}

function changeFuelType() {
   
    var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom", "mileageto" , "bodytype" , "fueltype" );

    // disejblujemo selectboxeve
    for(var i=0; i<elements.length;i++){
        $("#"+elements[i]).attr("disabled", "disabled");
    }

    // pokrecemo animaciju sa odbrojavanjem
    intervalID = setInterval( "countDown()" , 50 );

    var ajax_params = "op=count&" + getQuickSearchHomeURLParameters();
    // saljemo ajax zahtev za brojanje
    ajax( AJAX_URL, ajax_params, updateCounter );
}

function countDown() {
    // uzimamo duzinu starog brojaca
    var counterLength = $( '#odometar > span' ).get().length;
    // brisemo staru vrednost
    $( '#odometar' ).text("");
    for ( var i = 0; i < counterLength; i++ )
        $( "#odometar" ).append($("<span>" + Math.ceil( Math.random() * 9 ) + "</span>"));
}

function disableElements( array ) {
    for ( var i = 0; i < array.length; i++ ){
        //alert(array[i]);
        $(array[i]).attr( 'disabled' , true );
    }
}

function updateMakesList( data ) {
    var make = $( "#make" ).val();
    // uzimamo odgovor sa servera
    var response = eval( "(" + data + ")" );
    // clear select boxes
    $('#make').find('option:not(:first)').remove();

    // top 5 makes
    for ( var i = 0; i < response["top5Makes"].length; i++ ) {
        $("#make").append($("<option value='" + response["top5Makes"][i] + "'>"
            + capitalizeFirstLetter(response["top5Makes"][i]) +"</option>"));
    }
    // apendujemo separator
    $("#make").append("<option value='" + "line"
        + "' disabled=\"disabled\">" + "--------------------------" + "</option>");
    
    // makeovi u regionu
    for ( var j = 0; j < response["makesInRegion"].length; j++ ) {

        $("#make").append($("<option value='" + response["makesInRegion"][j] + "'>"
            + capitalizeFirstLetter(response["makesInRegion"][j]) +"</option>"));
    }

    // appendujemo separator
    $("#make").append("<option value='" + "line"
        + "' disabled=\"disabled\">" + "--------------------------" + "</option>");


    // makeovi van regiona
    for ( var z = 0; z < response["makesNotInRegion"].length; z++ )
        $("#make").append($("<option value='" + response["makesNotInRegion"][z] + "'>"
            + capitalizeFirstLetter(response["makesNotInRegion"][z]) +"</option>"));

    $("#make").val(make).attr("selected", "selected");
    // osvezavamo brojac
    var params = "op=count&" + getQuickSearchHomeURLParameters();
    ajax( AJAX_URL, params , updateCounter);
}

function updateModelsList(data){
    var make = $("#make").val();
    var model = $("#model").val();
    // uzimamo odgovor sa servera
    var response = eval( "(" + data + ")" );
    // clear select boxes
    $('#model').find('option:not(:first)').remove();
    // modeli u regionu
    for ( var j = 0; j < response["modelsInRegion"].length; j++ ) {

        $("#model").append($("<option value='" + response["modelsInRegion"][j] + "'>"
            + capitalizeFirstLetter(response["modelsInRegion"][j]) +"</option>"));
    }

    // appendujemo separator
    $("#model").append("<option value='" + "line"
        + "' disabled=\"disabled\">" + "--------------------------" + "</option>");


    // makeovi van regiona
    for ( var z = 0; z < response["modelsNotInRegion"].length; z++ )
        $("#model").append($("<option value='" + response["modelsNotInRegion"][z] + "'>"
            + capitalizeFirstLetter(response["modelsNotInRegion"][z]) +"</option>"));
    if(make!="any"){
        $("#make").val(make).attr("selected", "selected");
        if(model!="any")
            $("#model").val(model).attr("selected", "selected");
    }
    // osvezavamo brojac
    var params = "op=count&" + getQuickSearchHomeURLParameters();

    ajax( AJAX_URL, params , updateCounter);
}

function updateTrimList(data){

    var make = $("#make").val();
    var model = $("#model").val();
    var trim = $("#trim").val();
    // ukoliko je zahtev uspesno izvrsen
   
    var response = eval( "(" + data + ")" );
    // appending trims in trim select box
    for ( var i = 0; i < response.length; i++ )
        $("#trim").append($("<option value='" + response[i] + "'>"
            + capitalizeFirstLetter(response[i]) +"</option>"));

    if(make!="any"){
        $("#make").val(make).attr("selected", "selected");
        if(model!="any"){
            $("#model").val(model).attr("selected", "selected");
            if(trim!="any")
                $("#trim").val(trim).attr("selected", "selected");
        }
    }
    // pozivamo brojac
    var params = "op=count&" + getQuickSearchHomeURLParameters();
    ajax( AJAX_URL, params , updateCounter);

    
}
function updateCounter(data){
    var response = eval( "(" + data + ")" );
    // zaustavaljamo odbrojavanje
    clearInterval( intervalID );
    // uzimamo novu vrednost brojaca
    var counter = response["count"].replace( /\./g , '' );
    //alert(counter.prettynumber());
    // alert($("#submitButton").val());
    var j = 0;
    var res = "";
    var substr = "";
    while(j <= counter.length - 3){
        substr = counter.substring(counter.length-j-3, counter.length - j);
        res = "." + substr + res;
        j=j+3;
    }

    if(j!=counter.length){
        substr = counter.substring(0, counter.length - j);
        res = substr + res;
    }
    
    if(res[0] == "."){
        //alert(res[0]);
        res = res.substring(1, res.length);
    }
    // brisemo staru vrednost brojaca
    /*$( '#odometar' ).text("");
    // postavljamo novu vrednost brojaca
    for ( var i = 0; i < ( 8 - counter.length ); i++ ) {
        $("#odometar").append($("<span>" + 0 + "</span>"));
    }
    for ( var j = 0; j < counter.length; j++ )
        $("#odometar").append($("<span>" + counter.substr( j , 1 ) + "</span>"));*/
    res = res + " " + $("#resultsForButton").val();
    $("#submitButton").val(res);
    enableQS();
    
    if(counter == 0){
        showNullMesage();
    }
}



function getQuickSearchHomeURLParameters() {
    // zemlja
    var parameters = "country=" + $("#country").val().substr( $("#country").val().indexOf( "|" ) + 1 );
    // izuzeci
    var countries = document.getElementById( "country" ).options;
    
    for ( var i = 0; i < countries.length; i++ ) {
        if ( $(countries[i]).val().substr($("#country").val().indexOf( "|" ) + 1 ) == $( "#country" ).val().substr( $( "#country" ).val().indexOf( "|" ) + 1 ) && countries[i].parentNode.id == "usa" ) {
            parameters = "country=united states&state=" + $( "#country" ).val().substr( $( "#country" ).val().indexOf( "|" ) + 1 );
            break;
        }
    }

    // make
    if ( $( "#make" ).val() != null )
        parameters += ( "&make=" + $( "#make" ).val() );
    //alert($( "#make" ).val());
    //alert(parameters);

    // model
    if ( $( "#model" ).val() != null )
        parameters += ( "&model=" + $( "#model" ).val() );

    // trim
    if ( $( "#trim" ).val() != null )
        parameters += ( "&trim=" + $( "#trim" ).val() );

    // price from
    if ( $( "#pricefrom" ).val() != null )
        parameters += ( "&price=" + $( "#pricefrom" ).val() );

    // price to
    if ( $( "#priceto" ).val() != null )
        parameters += ( "&price=" + $( "#priceto" ).val() );

    // year from
    if ( $( "#yearfrom" ).val() != null )
        parameters += ( "&year=" + $( "#yearfrom" ).val() );

    // year to
    if ( $( "#yearto" ).val() != null )
        parameters += ( "&year=" + $( "#yearto" ).val() );

    // mileage
    if ( $( "#mileagefrom" ).val() == null && $( "#mileageto" ).val() != null )
        parameters += ( "&mileage=0&mileage=" + $( "#mileageto" ).val() );
    else
        parameters += ( "&mileage=" + $( "#mileagefrom" ).val() + "&mileage=" + $( "#mileageto" ).val() );

    // body type
    if ( $( "#bodytype" ).val() != null )
        parameters += ( "&bodytype=" + $( "#bodytype" ).val() );

    // fuel type
    if ( $( "#fueltype" ).val() != null )
        parameters += ( "&fueltype=" + $( "#fueltype" ).val() );
    //var x = parameters.replace( / /g , '+' );

    //alert(x);
    return parameters.replace( / /g , '+' );
    
}


// utils functions

function capitalizeFirstLetter (mystring) {
    var sp = mystring.split(' ');
    //var wl=0;
    var f ,r;
    var word = new Array();
    for (i = 0 ; i < sp.length ; i ++ ) {
        f = sp[i].substring(0,1).toUpperCase();
        r = sp[i].substring(1);
        word[i] = f+r;
    }
    newstring = word.join(' ');
    return newstring;
}

function enableQS(){
    var elements = new Array( "country" , "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "bodytype" , "fueltype" );
    for(var i=0; i<elements.length;i++){
        $("#"+elements[i]).removeAttr("disabled");
    }
}

function calculateRange( idFrom , idTo ) {
    // vrednosti select boxa od
    /*var values = document.getElementById( idFrom ).options;
    // brisemo sadrzaj select boxa do
    $('#' + idTo).find('option:not(:first)').remove();
    // uzimamo vrednost select boxa od
    var from = parseInt( $("#" + idFrom).val() );
    
    // krecemo se kroz opcije
    for ( var i = 0; i < values.length; i++ ) {
        // creating new options element
        var option = $("<option value='" + $( values[i]).val() + "'>"
            + $(values[i]).val() +"</option>");
        //alert($(values[i]).val());

        // ukoliko je poslednji znak plus, brisemo ga
        if ( option.html().substring( option.html().length - 1 ) == "+" )
            option.html(option.html().substring( 0 , option.html().length - 1 ));

        // ukoliko je elemenat any appenduj sve elemente, u suprotnom samo one koji su veci ili jednaki nego vrednost elementa idFrom
        alert($("#" + idFrom).val());
        if ( $("#" + idFrom).val()  == "any" )
            $("#" + idTo ).append( option );
        else if ( $("#" + idFrom).val()  == "yearfrom" && parseInt( $(values[i]).val() ) >= from )
            $("#" + idTo).append( option );
        else if ( $("#" + idFrom).val()  != "yearfrom" && parseInt( $(values[i]).val() ) > from )
            $("#" + idTo).append( option );
    }

    // selektujemo prvi elemenat
    document.getElementById( idTo ).selectedIndex = 0;*/
    // vrednosti select boxa od
    var values = getRefference( idFrom ).options;
    // brisemo sadrzaj select boxa do
    getRefference( idTo ).options.length = 1;
    // uzimamo vrednost select boxa od
    var from = parseInt(  getElementValue( idFrom ) );

    // krecemo se kroz opcije
    for ( var i = 1; i < values.length; i++ ) {
        // creating new options element
        var option = createElementWithAttributes( "option" , {
            "value" : values[i].value ,
            "innerHTML" : values[i].innerHTML
        } );

        // ukoliko je poslednji znak plus, brisemo ga
        if ( option.innerHTML.substring( option.innerHTML.length - 1 ) == "+" )
            option.innerHTML = option.innerHTML.substring( 0 , option.innerHTML.length - 1 );

        // ukoliko je elemenat any appenduj sve elemente, u suprotnom samo one koji su veci ili jednaki nego vrednost elementa idFrom
        if ( getElementValue( idFrom ) == "any" )
            getRefference( idTo ).appendChild( option );
        else if ( idFrom == "yearfrom" && parseInt( values[i].value ) >= from )
            getRefference( idTo ).appendChild( option );
        else if ( idFrom != "yearfrom" && parseInt( values[i].value ) > from )
            getRefference( idTo ).appendChild( option );
    }

    // selektujemo prvi elemenat
    getRefference( idTo ).selectedIndex = 0;
}

function suggest( input , e ) {
    // ukoliko je query polje prazno ili je korisnik pritisnuo ESC, sakrivamo div sa sugestijama
    if ( input.value.trim().isEmpty() || pressedKeyCode( e ) == 27 ) {
        hideElement( "suggestion" );

        return;
    }

    // ukoliko je pritisnuo ENTER, submitujemo
    if ( pressedKeyCode( e ) == 13 ) {
        hideElement( "suggestion" );
        submitSearchForm();
        return;
    }

    // dohvatamo stare sugestije
    var oldSuggestions = getRefference( "suggestion" ).getElementsByTagName( "li" );

    // ukoliko je korisnik pritisnuo strelicu levo, strelicu desno ili select, ne radi nista
    if ( pressedKeyCode( e ) == 39 || pressedKeyCode( e ) == 37 || pressedKeyCode( e ) == 82 ) return;

    // ukoliko je pritisnuo strelicu na gore
    if ( pressedKeyCode( e ) == 38 ) {

        if ( suggestionPosition == 0 ) {
            oldSuggestions[suggestionPosition].className = "reseted";
            suggestionPosition = oldSuggestions.length;
        }

        oldSuggestions[suggestionPosition - 1].className = "selected";
        changeElementValue( "query" , oldSuggestions[suggestionPosition - 1].innerHTML.replace( /<[\/]?b>/gi , "" ) );

        try {
            oldSuggestions[suggestionPosition].className = "reseted"
        } catch ( e ) { };

        suggestionPosition--;

        return;
    }

    // ukoliko je pritisnuo strelicu na dole
    if ( pressedKeyCode( e ) == 40 ) {

        if ( suggestionPosition == oldSuggestions.length ) {
            oldSuggestions[oldSuggestions.length - 1].className = "reseted";
            suggestionPosition = 0;
        }

        try {
            oldSuggestions[suggestionPosition - 1].className = "reseted";
        } catch( e ) { };

        oldSuggestions[suggestionPosition].className = "selected";
        changeElementValue( "query" , oldSuggestions[suggestionPosition].innerHTML.replace( /<[\/]?b>/gi , "" ) );

        suggestionPosition++;

        return;
    }

    // saljemo AJAX zahtev
    doAjax( AJAX_URL + "?op=suggestion&q=" + input.value.trim().toLowerCase() , updateSuggestions , {
        "user_input" : input.value.trim()
    } );

    // resetujemo poziciju
    suggestionPosition = 0;
}

function updateSuggestions( params ) {
    // ukoliko je zahtev uspesno izvrsen
    if ( xmlhttpML.readyState == 4 && xmlhttpML.status == 200 ) {
        // uzimamo odgovor sa servera
        var response = eval( "(" + xmlhttpML.responseText + ")" );

        // brisemo prethodne sugestije
        clearContent( "suggestion" );

        // prikazujemo div sa sugestijama
        showElement( "suggestion" );

        // ukoliko nista nije pronadjeno, sakrivamo div sa sugestijama
        if ( response.length == 0 ) {
            hideElement( "suggestion" );

            return;
        }

        // kreiramo parent elementa
        var suggestionList = document.createElement( "ul" );

        // iteriramo kroz response objekat (ono sto smo dobili sa servera) i appendujemo listu
        for ( var i = 0; i < response.length; i++ ) {
            var value = document.createElement( "li" );
            value.innerHTML = response[i].trim().replace( params["user_input"] , "<b>" + params["user_input"] + "</b>" );
            value.onclick = function() {
                changeElementValue( "query" , this.innerHTML.replace( /<[\/]?b>/gi , "" ) );
                hideElement( "suggestion" );
                submitSearchForm();
            }
            suggestionList.appendChild( value );
        }

        // appendujemo sugestije u div sa sugestijama
        getRefference( "suggestion" ).appendChild( suggestionList );

    }
}

function getElementValue( id ) {
    return getRefference( id ).value;
}

function getRefference( id ) {
    return document.getElementById( id );
}

function appendElement( id , child ) {
    document.getElementById( id ).appendChild( child );
}

function createElementWithAttributes( type , attributes ) {
    var element = document.createElement( type );

    for ( key in attributes )
        element[key] = attributes[key];

    return element;
}

function clearContent( id ) {
    getRefference( id ).innerHTML = "";
}

function clearValue( id ) {
    getRefference( id ).value = "";
}

function pressedKeyCode( e ) {
    return ( window.event ) ? event.keyCode : e.keyCode;
}

function showElement( id ) {
    getRefference( id ).style.display = "block";
}

function hideElement( id ) {
    getRefference( id ).style.display = "none";
}

function changeElementValue( id , value ) {
    getRefference( id ).value = value;
}

function removeChildNodes( parentID ) {
    // getting refference to parent element
    var parent = getRefference( parentID );

    // removing child nodes
    if ( parent.hasChildNodes() ) {

        while ( parent.childNodes.length > 0 ) {
            parent.removeChild( parent.firstChild );
        }

    }

}

function getCounter(){
    /*if(document.all){
        strOdo=document.getElementById("odometar").innerText;
    }
    else{
        strOdo=document.getElementById("odometar").textContent;
    }
    strOdo=strOdo.replace(/\s+/g,"");
    strOdo=strOdo*1;*/

    var strOdo = $("#submitButton").val().split(" ");
    //alert(strOdo[0]);
    return strOdo[0];
}

function submitQuickSearch() {
    
    if(getCounter() == 0){
        showNullMesage();
        return;
    }

    
    // uzimamo prevod labele "used cars"
    var url = getElementValue( "usedCarsLabel" );
    
    // make
    if ( getElementValue( "make" ) != "any" )
        url += ( "/" + getElementValue( "make" ) );

    // model
    if ( getElementValue( "model" ) != "any" )
        url += ( "-" + getElementValue( "model" ) );

    // trim
    if ( getElementValue( "trim" ) != "any" )
        url += ( "-" + getElementValue( "trim" ) );

    // country
    url += ( "/" + getElementValue( "country" ) ).substr( 0 , getElementValue( "country" ).indexOf( "|" ) + 1 );

    // izuzeci
    var countries = getRefference( "country" ).options;

    for ( var i = 0; i < countries.length; i++ ) {
        if ( countries[i].value.substr( 0 , getElementValue( "country" ).indexOf( "|" ) + 1 ) == getElementValue( "country" ).substr( 0 , getElementValue( "country" ).indexOf( "|" ) + 1 ) && countries[i].parentNode.id == "usa" ) {
            url = url.replace( getElementValue( "country" ).substr( 0 , getElementValue( "country" ).indexOf( "|" ) ) , getElementValue( "usaLabel" ) );
            url += ( "-" + getElementValue( "country" ) ).substr( 0 , getElementValue( "country" ).indexOf( "|" ) + 1 );
            break;
        }
    }

    // zip code
    /*if ( !getElementValue( "zip" ).isEmpty() )
        url += ( "/zip-" + getElementValue( "zip" ) ); */

    // ukoliko su odabrana oba parametra
    if ( getElementValue( "pricefrom" ) != "any" && getElementValue( "priceto" ) != "any" )
        url += ( "/price-" + getElementValue( "pricefrom" ) + "+" + getElementValue( "priceto" ) );

    // ukoliko je odabran samo priceto
    if ( getElementValue( "pricefrom" ) == "any" && getElementValue( "priceto" ) != "any" )
        url += ( "/price-less+" + getElementValue( "priceto" ) );

    // ukoliko je odabran samo pricefrom
    if ( getElementValue( "pricefrom" ) != "any" && getElementValue( "priceto" ) == "any" )
        url += ( "/price-" + getElementValue( "pricefrom" ) + "+more" );

    var date = new Date();

    // ukoliko su odabrani i yearfrom i yearto
    if ( getElementValue( "yearfrom" ) != "any" && getElementValue( "yearto" ) != "any" )
        url += ( "/year-" + getElementValue( "yearfrom" ) + "+" + getElementValue( "yearto" ) );

    // ukoliko je samo odabran yearto
    if ( getElementValue( "yearfrom" ) == "any" && getElementValue( "yearto" ) != "any" )
        url += ( "/year-less+" + getElementValue( "yearto" ) );

    // ukoliko je samo odabran yearfrom
    if ( getElementValue( "yearfrom" ) != "any" && getElementValue( "yearto" ) == "any" )
        url += ( "/year-" + getElementValue( "yearfrom" ) + "+more" );

    // mileage
    if ( getRefference( "mileagefrom" ) == null && getElementValue( "mileageto" ) != "any" )
        url += ( "/mileage-less+" + getElementValue( "mileageto" ) );

    if ( getRefference( "mileagefrom" ) != null && getElementValue( "mileagefrom" ) != "any" && getElementValue( "mileageto" ) == "any" )
        url += ( "/mileage-" + getElementValue( "mileagefrom" ) + "+more" );

    if ( getRefference( "mileagefrom" ) != null && getElementValue( "mileagefrom" ) == "any" && getElementValue( "mileageto" ) != "any" )
        url += ( "/mileage-less+" + getElementValue( "mileageto" ) );

    if ( getRefference( "mileagefrom" ) != null && getElementValue( "mileagefrom" ) != "any" && getElementValue( "mileageto" ) != "any" )
        url += ( "/mileage-" + getElementValue( "mileagefrom" ) + "+" + getElementValue( "mileageto" ) );

    // bodytype
    if ( getRefference( "bodytype" ) != null &&  getElementValue( "bodytype" ) != "any" )
        url += ( "/bodytype-" + getElementValue( "bodytype" ) );

    // fueltype
    if ( getElementValue( "fueltype" ) != "any" )
        url += ( "/fueltype-" + getElementValue( "fueltype" ) );
    
    // redirecting user to the new location
    window.location = url.replace( / /gi , "+" ).toLowerCase();
   
}

function addParameterAndSubmit( source ) {
    if ( source.href.charAt( source.href.length - 1 ) == '/' )
        source.href = source.href.substring( 0 , source.href.length - 1 );

    window.location = source.href.replace ( /#/g , '/' );
}

function viewMoreViewLess( field ) {

    // view less / view more link
    var lessMore = getRefference( field ).getElementsByTagName( "li" )[ getRefference( field ).getElementsByTagName( "li" ).length - 1 ].getElementsByTagName( "a" )[0];

    if ( lessMore.innerHTML.equals( getElementValue( "viewmore" ) ) ) {
        // calling ajax function for view more
        doAjax( AJAX_URL + "?op=filter&url=" + window.location.href.replace( "http://" , "" ) + "&lang=" + getElementValue( "language" ) + "&what=" + field.replace( 'box_' , '' ) + "&limit=30&" + getElementValue( "filterparams" ) , updateFilterBox , new Array( field ) );
    } else {
        // calling ajax function for view less
        doAjax( AJAX_URL + "?op=filter&url=" + window.location.href.replace( "http://" , "" ) + "&lang=" + getElementValue( "language" ) + "&what=" + field.replace( 'box_' , '' ) + "&limit=10&" + getElementValue( "filterparams" ) , updateFilterBox , new Array( field ) );
    }

}

function updateFilterBox( params ) {
    // ukoliko je zahtev uspesno izvrsen
    if ( xmlhttpML.readyState == 4 && xmlhttpML.status == 200 ) {
        var response = eval( "(" + xmlhttpML.responseText + ")" );

        // keeping box title and view less / view more text
        var boxName = getRefference( params[0] ).getElementsByTagName( "li" )[0];
        var lessMore = getRefference( params[0] ).getElementsByTagName( "li" )[ getRefference( params[0] ).getElementsByTagName( "li" ).length - 1 ].getElementsByTagName( "a" )[0];

        // clearing previous content of parent box
        removeChildNodes( params[0] );

        // adding box title
        getRefference( params[0] ).appendChild( boxName );

        for ( var i = 0; i < response.length; i++ ) {
            var li = document.createElement( "li" );
            var span = createElementWithAttributes( "span" , {
                "innerHTML" : response[i].counter
            } );
            var url = createElementWithAttributes( "a" , {
                "href" : ( 'http://' + response[i].url ) ,
                "innerHTML" : response[i].translation.capitalize()
            } );
            if ( url.href.contains( "#" ) )
                url.onclick = function() {
                    addParameterAndSubmit( this );
                    return false;
                };

            li.appendChild( span );
            li.appendChild( url );
            getRefference( params[0] ).appendChild( li );
        }

        if ( lessMore.innerHTML.equals( getElementValue( "viewmore" ) )  ) {
            lessMore.innerHTML = getElementValue( "viewless" );
            lessMore.title = getElementValue( "viewless" ).substring( 0 , getElementValue( "viewless" ).length - 2 );
        }
        else {
            lessMore.innerHTML = getElementValue( "viewmore" );
            lessMore.title = getElementValue( "viewmore" ).substring( 0 , getElementValue( "viewmore" ).length - 2 );
        }

        var li = document.createElement( "li" );
        li.appendChild( lessMore );

        // appending view more / view less link
        getRefference( params[0] ).appendChild( li );

    }
}

function replaceImage( reference , imageURL ) {
    reference.src = imageURL;
}


function sortResults( field ) {

    var url = window.location.toString();

    if ( url.contains( "sort-" + field + "\\+asc" ) ) {
        url = url.replace( /asc/g , "desc" );
    } else if ( url.contains( "sort-" + field + "\\+desc" ) ) {
        url = url.replace( /desc/g , "asc" );
    }
    else {
        if ( url.contains( "sort-[a-z]+\\+(asc|desc)" ) )
            url = url.replace( /sort-[a-z]+\+(asc|desc)/g , "sort-" + field + "+asc" );
        else
            url = ( url + "/sort-" + field + "+asc" );
    }

    window.location = url;
}

function resetQuickSearch() {

    var yearFrom = getElementValue( "yearfromvalue" );
    var yearTo = getElementValue( "yeartovalue" );
    var priceFrom = getElementValue( "pricefromvalue" );
    var priceTo = getElementValue( "pricetovalue" );
    var mileageFrom = getElementValue( "mileagefromvalue" );
    var mileageTo = getElementValue( "mileagetovalue" );


    // year from
    for ( var i = 0; i < getRefference( "yearfrom" ).options.length; i++ ) {

        if ( getRefference( "yearfrom" ).options[i].value == yearFrom ) {
            getRefference( "yearfrom" ).selectedIndex = i;
            removeLowerValues( "yearto" , yearFrom );
        }

    }

    // yearto
    for ( var i = 0; i < getRefference( "yearto" ).options.length; i++ ) {

        if ( getRefference( "yearto" ).options[i].value == yearTo )
            getRefference( "yearto" ).selectedIndex = i;

    }

    // price from
    for ( var i = 0; i < getRefference( "pricefrom" ).options.length; i++ ) {

        if ( getRefference( "pricefrom" ).options[i].value == priceFrom ) {
            getRefference( "pricefrom" ).selectedIndex = i;
            removeLowerValues( "priceto" , priceFrom );
        }

    }

    // price to
    for ( var i = 0; i < getRefference( "priceto" ).options.length; i++ ) {

        if ( getRefference( "priceto" ).options[i].value == priceTo )
            getRefference( "priceto" ).selectedIndex = i;

    }

    // mileage from
    for ( var i = 0; i < getRefference( "mileagefrom" ).options.length; i++ ) {

        if ( getRefference( "mileagefrom" ).options[i].value == mileageFrom ) {
            getRefference( "mileagefrom" ).selectedIndex = i;
            removeLowerValues( "mileageto" , mileageFrom );
        }

    }

    // mileage to
    for ( var i = 0; i < getRefference( "mileageto" ).options.length; i++ ) {

        if ( getRefference( "mileageto" ).options[i].value == mileageTo )
            getRefference( "mileageto" ).selectedIndex = i;

    }

}

function removeLowerValues( id , value ) {
    if ( value == "any" ) return;

    for ( var i = getRefference( id ).options.length - 1; i > 0; i-- ) {
        if ( parseInt( getRefference( id ).options[i].value ) <  parseInt( value ) )
            getRefference( id ).removeChild( getRefference( id ).options[i] );
    }

}

function changeLanguage() {
    if ( document.getElementsByName("language")[0].value == "any" )
        return;

    window.location.href = ( "http://" + document.getElementsByName("language")[0].value );
}

function resetHomeValues() {
    // niz select boxeva
    resetSelectedBoxes( new Array( "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "bodytype" , "fueltype" ) );
}

function resetResultsValues() {
    if ( getElementValue( "make" ) == "any" )
        resetSelectedBoxes( new Array( "make" ) );
}

function openPopup( url ) {
    var nw = window.open( url , 'name' , 'scrollbars=yes,height=710,width=510' );

    if ( window.focus )
        nw.focus()
}

function showHideSlidePanel( id ) {
    // dohvatamo sve div elemente u containeru i skrivamo ih
    var elements = getRefference( "slider1" ).getElementsByTagName( "div" );

    for ( var i = 0; i < elements.length; i++ )
        elements[i].style.visibility = "hidden";

    // prikazujemo samo onaj div koji je prosledjen kao parametar
    getRefference( "slider1" ).getElementsByTagName( "div" )[id].style.visibility = "visible";

    // dohvatamo sve a elemente u containeru i brisemo im klasu selected
    elements = getRefference( "paginate-slider1" ).getElementsByTagName( "a" );

    for ( var i = 0; i < elements.length; i++ )
        elements[i].className = "toc";

    // setujemo klasu selected samo za kliknuti link
    getRefference( "paginate-slider1" ).getElementsByTagName( "a" )[parseInt(id) + 1].className = "toc selected";

    // generisemo linkove previous i next
    elements = getRefference( "slider1" ).getElementsByTagName( "div" );

    if ( parseInt( id ) == 0 )
        getRefference( "previousPanel" ).href = ( "javascript: showHideSlidePanel('" + ( elements.length - 1 ) + "');" );
    else
        getRefference( "previousPanel" ).href = ( "javascript: showHideSlidePanel('" + ( parseInt( id ) - 1 ) + "');" );

    if ( parseInt( id ) == ( elements.length - 1 ) )
        getRefference( "nextPanel" ).href = ( "javascript: showHideSlidePanel('0');" );
    else
        getRefference( "nextPanel" ).href = ( "javascript: showHideSlidePanel('" + ( parseInt( id ) + 1 ) + "');" );
}

function submitContactForm() {

    // parametri za slanje AJAX zahtevom
    var params = ( "firstLastName=" + getRefference( "firstLastName" ).value + "&emailAddress=" + getRefference( "emailAddress" ).value + "&telephoneNumber=" + getRefference( "telephoneNumber" ).value + "&messageText=" + getRefference( "messageText" ).value );

    // saljemo AJAX zahtev
    doAjaxPost( "/ContactServlet" , sendingContactFormResponse , params );
}

function sendingContactFormResponse() {
    
    if( xmlhttpML.readyState == 4 ) {
        var msgids = new Array( "firstLastNameError" , "emailAddressError" , "telephoneNumberError" , "messageTextError" , "mailNotSentOk" , "mailSentOk" );

        for ( var i = 0; i < msgids.length; i++ )
            getRefference( msgids[i] ).style.display = "none";

        var response = new String( xmlhttpML.responseText ).trim();

        getRefference( response ).style.display = "block";

    }

}

function submitLeadForm() {
    
    $("#msgFirstName").text("");
    $("#msgLastName").text("");
    $("#msgZipCode").text("");
    $("#msgPhone").text("");
    $("#msgEmail").text("");
    // parametri za slanje AJAX zahtevom
    var params = ( "firstName=" + $( '#firstName' ).val() + "&lastName=" + $('#lastName' ).val() +"&email=" +
        $( "#email" ).val() + "&phone=" + $( "#phone" ).val() + "&zipcode=" + $( "#zipcode" ).val()
        + "&contactTime=" + $("#contactTime").val() + "&make=" + $("#make").val() + "&model=" + $("#model").val()
        + "&year=" + $("#year").val() + "&idlead=" + $("#idlead").val() + "&url=" + $("#url").val() );
    // saljemo AJAX zahtev
    ajax( "http://" + window.location.host +  "/DetroitLeads", params, sendingLeadFormResponse);
    $("#leadButton").attr("disabled", "disabled");

    
}

function sendingLeadFormResponse(data) {
    $("#leadButton").removeAttr('disabled');
    var response = eval( "(" + data + ")" );
    //alert(response["dataOK"]);
    if(response["dataOK"] == "OK"){
        disablePopup();
    }else{
        $("#msgFirstName").text(response["firstNameError"]);
        $("#msgLastName").text(response["lastNameError"]);
        $("#msgZipCode").text(response["zipcodeError"]);
        $("#msgPhone").text(response["phoneError"]);
        $("#msgEmail").text(response["emailError"]);
    }
    

}

function loadAnotherImage( imageRefference , carID ) {
    var images = getRefference( carID + "-images" ).value.split( "|" );
    if ( getRefference( carID + "-links" ) )
        var links = getRefference( carID + "-links" ).value.split( "|" );
    var counter = parseInt( getRefference( carID + "-counter" ).value );

    if ( counter <= images.length - 1 ) {

        imageRefference.src = images[counter];

        if ( getRefference( "detailimgurl" ) != null ) {
            getRefference( "detailimgurl" ).href = links[counter];
            getRefference( "vmore1" ).href = links[counter];
        }

        counter = counter + 1;
        getRefference( carID + "-counter" ).value = counter;

    } else {
        imageRefference.src = '/images/noimage-results.jpg';
    }
}

function slide( direction , reference ) {



    var outletCars = getRefference( reference ).getElementsByTagName( "li" );

    if ( direction == "right" && outletFirstCarIndex < outletCars.length - 2 ) {

        if ( outletFirstCarIndex == outletCars.length - 3 )
            return;

        for ( var i = 0; i < outletFirstCarIndex + 1; i++ )
            outletCars[i].style.display = "none";

        outletFirstCarIndex = outletFirstCarIndex + 1;

    } else {

        if ( outletFirstCarIndex == 0 )
            return;

        outletCars[outletFirstCarIndex - 1].style.display = "block";

        outletFirstCarIndex = outletFirstCarIndex - 1;

    }

    // brojanje klika na scroll u outletima

    // odabrana zemlja
    var country = getRefference( "country" ).value.substr( getRefference( "country" ).value.indexOf( "|" ) + 1 );

    var countries = getRefference( "country" ).options;

    for ( var i = 0; i < countries.length; i++ ) {
        if ( countries[i].value.substr( getElementValue( "country" ).indexOf( "|" ) + 1 ) == getElementValue( "country" ).substr( getElementValue( "country" ).indexOf( "|" ) + 1 ) && countries[i].parentNode.id == "usa" ) {
            country = "united states";
            break;
        }
    }
    // saljemo AJAX requestove za statistiku za prikaz outleta
    outletAction( "click" , "scroll-outlet" , getRefference( "clientIP" ).value , '' , '' , country );
}

function resetSelectedBoxes( array ) {

    for ( var i = 0; i < array.length; i++ )
        getRefference( array[i] ).options.selectedIndex = 0;

}

function clearSelectBoxes( arrayOfIDs ) {
    for ( var i = 0; i < arrayOfIDs.length; i++ )
        getRefference( arrayOfIDs[i] ).options.length = 1;
}


function resetAll() {
    // resetujemo sve select boxeve
    resetSelectedBoxes( new Array( "make" , "bodytype" , "fueltype" , "pricefrom" , "yearfrom" , "mileagefrom" ) );

    // brisemo sadrzaj select boxeva
    clearSelectBoxes( new Array( "model" , "trim" ) );

    // ponovo racunamo rangeove
    calculateRange( "pricefrom" , "priceto" );
    calculateRange( "yearfrom" , "yearto" );
    calculateRange( "mileagefrom" , "mileageto" );

    var elements = new Array( "make" , "model" , "trim" , "pricefrom" , "priceto" , "yearfrom" , "yearto" , "mileagefrom" , "mileageto" , "bodytype" , "fueltype" );

    // disableujemo select boxeve
    disableElements( elements );
    setTimeout(enableQS, 3000);

    // brojimo
    doAjax( AJAX_URL + "?op=count&" + getQuickSearchHomeURLParameters() , updateCounter , elements );
}

function submitSearchForm() {

    // redirektujemo korisnika na stranicu sa rezultatima
    window.location.href = ( getRefference( "usedCarsLabel" ).value + "/" + getRefference( "domainCountry" ).value + "/q=" + getRefference( "query" ).value.trim().replace( / /g , "+" ) );

}

function subMenu(show) {
    if (show){
        document.getElementById('sub_menu').style.display = 'block';
    } else {
        document.getElementById('sub_menu').style.display = 'none';
    }
}

function showNullMesage(){
    $(".no-results-info").fadeIn();
    setTimeout( function(){
        $(".no-results-info").fadeOut("slow");
    }, 4000);
}

function clickMobile(event, action , outletName , ipAddress , make , model , country){
    var targ;
    if (!event) var event = window.event;
    if (event.target) targ = event.target;
    else if (event.srcElement) targ = event.srcElement;
    var dateTime = new Date();
    var params = ( "action=" + action + "&outlet=" + outletName + "&ip=" + ipAddress + "&make=" + make + "&model=" + model + "&country=" + country + "&time=" + dateTime.getTime()
        + "&srcUrl=" + window.location + "&destUrl=" + "");

    if($.browser.msie){
        switch(event.button){
            case 1: {
                if(targ.tagName == 'A' || targ.tagName == "IMG"){
                    $.get( STATS_URL, params);
                }
                break;
            }
            case 4: {
                if(targ.tagName == 'A' || targ.tagName == "IMG"){
                    $.get( STATS_URL, params);
                }
                break;
            }
        }

    }else{
        switch(event.which){
            case 1: {
                if(targ.tagName == 'A' || targ.tagName == "IMG"){
                    $.get( STATS_URL, params);
                }
                break;
            }
            case 2: {
                if(targ.tagName == 'A' || targ.tagName == "IMG"){
                    $.get( STATS_URL, params);
                }
                break;
            }
        }
    }
}

function countStats(event, action , outletName , ipAddress , make , model , country, srcUrl, destUrl){
    var dateTime = new Date();
    var url = destUrl.replace(/&/g, "::::");
    var params = ( "action=" + action + "&srcUrl=" + srcUrl +
        "&outlet=" + outletName + "&ip="
        + ipAddress + "&make=" + make + "&model=" + model + "&country=" + country + "&time=" + dateTime.getTime()
        + "&destUrl=" + url);
    if($.browser.msie){

        switch(event.button){
            case 1: {
                $.get( STATS_URL, params);
                window.location = $("#car").attr("href");
                break;
            }
            case 4: {
                $.get( STATS_URL, params);
                break;
            }
        }

    }else{
        switch(event.which){
            case 1: {
                $.get( STATS_URL, params);
                break;
            }
            case 2: {
                $.get( STATS_URL, params);
                break;
            }
        }
    }

}


function countZip(event, srcUrl, ip, country){
    var dateTime = new Date();

    // uzimamo prevod labele "used cars"
    var url = getElementValue( "usedCarsLabel" );

    // make
    if ( getElementValue( "make" ) != "any" )
        url += ( "/" + getElementValue( "make" ) );

    // model
    if ( getElementValue( "model" ) != "any" )
        url += ( "-" + getElementValue( "model" ) );

    // trim
    if ( getElementValue( "trim" ) != "any" )
        url += ( "-" + getElementValue( "trim" ) );

    // country
    url += ( "/" + getElementValue( "country" ) ).substr( 0 , getElementValue( "country" ).indexOf( "|" ) + 1 );

    // izuzeci
    var countries = getRefference( "country" ).options;

    for ( var i = 0; i < countries.length; i++ ) {
        if ( countries[i].value.substr( 0 , getElementValue( "country" ).indexOf( "|" ) + 1 ) == getElementValue( "country" ).substr( 0 , getElementValue( "country" ).indexOf( "|" ) + 1 ) && countries[i].parentNode.id == "usa" ) {
            url = url.replace( getElementValue( "country" ).substr( 0 , getElementValue( "country" ).indexOf( "|" ) ) , getElementValue( "usaLabel" ) );
            url += ( "-" + getElementValue( "country" ) ).substr( 0 , getElementValue( "country" ).indexOf( "|" ) + 1 );
            break;
        }
    }

    // zip code
    /*if ( !getElementValue( "zip" ).isEmpty() )
        url += ( "/zip-" + getElementValue( "zip" ) ); */

    // ukoliko su odabrana oba parametra
    if ( getElementValue( "pricefrom" ) != "any" && getElementValue( "priceto" ) != "any" )
        url += ( "/price-" + getElementValue( "pricefrom" ) + "+" + getElementValue( "priceto" ) );

    // ukoliko je odabran samo priceto
    if ( getElementValue( "pricefrom" ) == "any" && getElementValue( "priceto" ) != "any" )
        url += ( "/price-less+" + getElementValue( "priceto" ) );

    // ukoliko je odabran samo pricefrom
    if ( getElementValue( "pricefrom" ) != "any" && getElementValue( "priceto" ) == "any" )
        url += ( "/price-" + getElementValue( "pricefrom" ) + "+more" );

    var date = new Date();

    // ukoliko su odabrani i yearfrom i yearto
    if ( getElementValue( "yearfrom" ) != "any" && getElementValue( "yearto" ) != "any" )
        url += ( "/year-" + getElementValue( "yearfrom" ) + "+" + getElementValue( "yearto" ) );

    // ukoliko je samo odabran yearto
    if ( getElementValue( "yearfrom" ) == "any" && getElementValue( "yearto" ) != "any" )
        url += ( "/year-less+" + getElementValue( "yearto" ) );

    // ukoliko je samo odabran yearfrom
    if ( getElementValue( "yearfrom" ) != "any" && getElementValue( "yearto" ) == "any" )
        url += ( "/year-" + getElementValue( "yearfrom" ) + "+more" );

    // mileage
    if ( getRefference( "mileagefrom" ) == null && getElementValue( "mileageto" ) != "any" )
        url += ( "/mileage-less+" + getElementValue( "mileageto" ) );

    if ( getRefference( "mileagefrom" ) != null && getElementValue( "mileagefrom" ) != "any" && getElementValue( "mileageto" ) == "any" )
        url += ( "/mileage-" + getElementValue( "mileagefrom" ) + "+more" );

    if ( getRefference( "mileagefrom" ) != null && getElementValue( "mileagefrom" ) == "any" && getElementValue( "mileageto" ) != "any" )
        url += ( "/mileage-less+" + getElementValue( "mileageto" ) );

    if ( getRefference( "mileagefrom" ) != null && getElementValue( "mileagefrom" ) != "any" && getElementValue( "mileageto" ) != "any" )
        url += ( "/mileage-" + getElementValue( "mileagefrom" ) + "+" + getElementValue( "mileageto" ) );

    // bodytype
    if ( getRefference( "bodytype" ) != null &&  getElementValue( "bodytype" ) != "any" )
        url += ( "/bodytype-" + getElementValue( "bodytype" ) );

    // fueltype
    if ( getElementValue( "fueltype" ) != "any" )
        url += ( "/fueltype-" + getElementValue( "fueltype" ) );
    
    url += ( "/zip" );


    //var destUrl = url.replace(/&/g, "::::");
    var params = ( "action=click" + "&srcUrl=" + srcUrl +
        "&outlet=details-desni" + "&ip="
        + ip + "&make=all" + "&model=all" + "&country=" + country + "&time=" + dateTime.getTime()
        + "&destUrl=" + url);
    $.get( STATS_URL, params);       

}

// f-ja za brojanje impresija
$(document).ready(function() {
    var country = $("#country").val();
    if(country.indexOf("|") != -1){
        country = getRefference( "country" ).value.substr( getRefference( "country" ).value.indexOf( "|" ) + 1 );

        var countries = getRefference( "country" ).options;

        for ( var i = 0; i < countries.length; i++ ) {
            if ( countries[i].value.substr( getElementValue( "country" ).indexOf( "|" ) + 1 ) == getElementValue( "country" ).substr( getElementValue( "country" ).indexOf( "|" ) + 1 ) && countries[i].parentNode.id == "usa" ) {
                country = "united states";
                break;
            }
        }
    }

    var dateTime = new Date();
    if($("#outlet-results-right-shown").val() != null){
        var params = ( "action=" + "impression" + "&outlet=" + "results-desni" + "&ip=" + $( "#clientIP" ).val() + "&make=" + '' + "&model=" + '' + "&country=" + "france" + "&time=" + dateTime.getTime()
            + "&srcUrl=" + window.location + "&destUrl=" + "");
        $.get( STATS_URL, params);
    }

    if($("#outlet-details-right-shown").val() != null){
        var paramsDetail = ( "action=" + "impression" + "&outlet=" + "details-desni" + "&ip=" + $( "#clientIP" ).val() + "&make=" + '' + "&model=" + '' + "&country=" + "france" + "&time=" + dateTime.getTime()
            + "&srcUrl=" + window.location + "&destUrl=" + "");
        $.get( STATS_URL, paramsDetail);
    }

    if($("#outlet-result-big-upper-shown").val() != null){
        var paramsGanga = ( "action=" + "impression" + "&outlet=" + "results-gornji" + "&ip=" + $( "#clientIP" ).val() + "&make=" + $("#make").val() + "&model=" + $("#model").val() + "&country=" + country + "&time=" + dateTime.getTime()
            + "&srcUrl=" + window.location + "&destUrl=" + "");
        $.get( STATS_URL, paramsGanga);
    }

    if($("#outlet-first-shown").val() != null){
        var paramsGanga = ( "action=" + "impression" + "&outlet=" + "results-prvi-oglas" + "&ip=" + $( "#clientIP" ).val() + "&make=" + $("#make").val() + "&model=" + $("#model").val() + "&country=" + country + "&time=" + dateTime.getTime()
            + "&srcUrl=" + window.location + "&destUrl=" + "");
        $.get( STATS_URL, paramsGanga);
    }

    if($("#outlet-second-shown").val() != null){
        var paramsGanga = ( "action=" + "impression" + "&outlet=" + "results-drugi-oglas" + "&ip=" + $( "#clientIP" ).val() + "&make=" + $("#make").val() + "&model=" + $("#model").val() + "&country=" + country + "&time=" + dateTime.getTime()
            + "&srcUrl=" + window.location + "&destUrl=" + "");
        $.get( STATS_URL, paramsGanga);
    }

    if($("#outlet-before-last-shown").val() != null){
        var paramsGanga = ( "action=" + "impression" + "&outlet=" + "results-pretposlednji-oglas" + "&ip=" + $( "#clientIP" ).val() + "&make=" + $("#make").val() + "&model=" + $("#model").val() + "&country=" + country + "&time=" + dateTime.getTime()
            + "&srcUrl=" + window.location + "&destUrl=" + "");
        $.get( STATS_URL, paramsGanga);
    }

    if($("#outlet-last-shown").val() != null){
        var paramsGanga = ( "action=" + "impression" + "&outlet=" + "results-poslednji-oglas" + "&ip=" + $( "#clientIP" ).val() + "&make=" + $("#make").val() + "&model=" + $("#model").val() + "&country=" + country + "&time=" + dateTime.getTime()
            + "&srcUrl=" + window.location + "&destUrl=" + "");
        $.get( STATS_URL, paramsGanga);
    }

    if($("#outlet-index-shown").val() != null){
        var paramsGanga = ( "action=" + "impression" + "&outlet=" + "index-outlet" + "&ip=" + $( "#clientIP" ).val() + "&make=" + '' + "&model=" + '' + "&country=" + country + "&time=" + dateTime.getTime()
            + "&srcUrl=" + window.location + "&destUrl=" + "");
        $.get( STATS_URL, paramsGanga);
    }
});

// contact form functions
//SETTING UP OUR POPUP
//0 means disabled; 1 means enabled;
var popupStatus = 0;  

//loading popup with jQuery magic!
function loadPopup(){
    //loads popup only if it is disabled
    if(popupStatus==0){
        $("#backgroundPopup").css({
            "opacity": "0.7"
        });
        $("#backgroundPopup").fadeIn("slow");
        $("#contactForm").fadeIn("slow");
        popupStatus = 1;
    }
}

//disabling popup with jQuery magic!
function disablePopup(){
    //disables popup only if it is enabled
    if(popupStatus==1){
        $("#backgroundPopup").fadeOut("slow");
        $("#contactForm").fadeOut("slow");
        popupStatus = 0;
    }
}

//centering popup
function centerPopup(){
    //request data for centering
    var windowWidth = document.documentElement.clientWidth;
    var windowHeight = document.documentElement.clientHeight;
    var popupHeight = $("#contactForm").height();
    var popupWidth = $("#contactForm").width();
    //centering
    $("#contactForm").css({
        "position": "absolute",
        "top": windowHeight/2-popupHeight/2,
        "left": windowWidth/2-popupWidth/2
    });
    //only need force for IE6

    $("#backgroundPopup").css({
        "height": windowHeight
    });

}

function showPopup(){
    //centering with css
    centerPopup();
    //load popup
    loadPopup();
}
       


$(document).ready(function(){
    //CLOSING POPUP
    //Click the x event!
    $("#popupContactClose").click(function(){
        disablePopup();
    });
    //Click out event!
    $("#backgroundPopup").click(function(){
        disablePopup();
    });
});

function clearZip(){
    $("#zip").val("");
}


