function initCalc(oRef,sBaseURL) {
    $('select[name="city_from"]',oRef).change(function() {
        if(this.value!="-1") {
            $('select[name="city_to"] option[value!="-1"]').remove();
            $.post(sBaseURL+'/sernam_calc/getcitiesfor',{id:this.value}, function(data){
                for(var i=0,j=data.length;i<j;i++) {
                    var item=data[i];

                   $('select[name="city_to"]').append('<option value="'+item.id+'">'+item.name+'</option>');
                }
            },'json');
            $('select[name="city_to"]').removeAttr('disabled');
        }
        else {
            $('select[name="city_to"]').attr('disabled','disabled');
        }

    })
    $('select[name="city_to"]',oRef).change(function() {
        if(this.value!="-1") {
           $.post(sBaseURL+'/sernam_calc/gethours',{from:$('select[name="city_from"]').val(),to:$('select[name="city_to"]').val()}, function (data){
               $('#hours_selection ul li').remove();
               for(var i=0,j=data.length;i<j;i++) {
                    var item=data[i];

                   $('#hours_selection ul').append('<li style="color:#2d3e70;background:none!important;margin:0;padding:0;clear:both"><input type="radio" name="hour" value="'+item.id+'" style="border:none" /><label>'+item.depart_time+'-------------------------&gt;'+item.arrive_time+'</label></li>');
                }
                $('#hours_selection ul li input').click(function(){
                    $('#goToStep3').css('display', 'block');
                })
           },'json');
           $('#hours_selection').get(0).parentNode.style.display='block';

        }
        else {
            $('#hours_selection').get(0).parentNode.style.display='none';
        }

    })
    $('#calc_btn').click(function() {
        var iCount=parseInt($('input[name="count"]',oRef).val());
        var iWeight=parseInt($('input[name="weight"]',oRef).val());
        var iFrom=$('select[name="city_from"]',oRef).val();
        var iTo=$('select[name="city_to"]',oRef).val();
        var bError=false;
        if(!iWeight) {
            $('input[name="weight"]',oRef).css('border','1px red solid');
            $('#weight_error',oRef).css('display', 'block');
            bError=true;
        }
        else {
            /*if(parseInt($('input[name="weight"]',oRef).val())>100) {
                $('input[name="weight"]',oRef).css('border','1px red solid');
                $('#weight_error2',oRef).css('display', 'block');
                bError=true;
            }*/
            if(iWeight/iCount>30) {
                $('input[name="weight"]',oRef).css('border','1px red solid');
                $('#weight_error2',oRef).html('Le poids maximum autorisé est de ' + iCount * 30 + 'Kg, nous vous invitons à contacter notre service client au 0&nbsp;825&nbsp;05&nbsp;05&nbsp;05.');
                $('#weight_error2',oRef).css('display', 'block');
                bError=true;
            }
            else {
                $('input[name="weight"]',oRef).css('border','1px black solid');
                $('#weight_error',oRef).css('display', 'none');
                $('#weight_error2',oRef).css('display', 'none');
            }
        }
        if(!iCount) {
            $('input[name="count"]',oRef).css('border','1px red solid');
            $('#count_error',oRef).css('display', 'block');
            bError=true;
        }
        else {
            $('input[name="count"]',oRef).css('border','1px black solid');
            $('#count_error',oRef).css('display', 'none');
        }
        if(bError) {
            $('#result').css('display','none');
            return false;
        }
        $.post(sBaseURL+'/sernam_calc/calc',{count:iCount,weight:iWeight,from:iFrom,to:iTo,hour:$('input[name="hour"]:checked').val()},function(data){$('input[name="price"]',oRef).val(data.price)},'json');
        $('#result').css('display','block').addClass('enabled');
    })
    $('#goToStep3').click(function() {
        $.post(sBaseURL+'/sernam_calc/route', {from_id:$('select[name="city_from"]').val(),to_id:$('select[name="city_to"]').val(),hour_id:$('input[name="hour"]:checked').val()}, function (data) {

            var aSpans=$('#tarif_route span');
            aSpans.get(0).innerHTML=data.city_from;
            aSpans.get(1).innerHTML=data.hour_from;
            aSpans.get(2).innerHTML=data.city_to;
            aSpans.get(3).innerHTML=data.hour_to;
            aSpans=$('#reservation_route span');
            aSpans.get(0).innerHTML=data.city_from;
            aSpans.get(1).innerHTML=data.hour_from;
            aSpans.get(2).innerHTML=data.city_to;
            aSpans.get(3).innerHTML=data.hour_to;
        }, 'json');

        activateStep(3);

    });
    $('#goToStep4').click(function() {
       var aSpans=$('#package_data span');
        aSpans.get(0).innerHTML=$('input[name="count"]').val();
        aSpans.get(1).innerHTML=$('input[name="weight"]').val();
        activateStep(4);
    });
    $('#save_btn').click(function(){
        var bError=false;
        if(jQuery.trim($('input[name="name"]').val())==''){
            bError=true;
            $('input[name="name"]').css('border','1px solid red');
        }
        else
        {
        	$('input[name="name"]').css('border','1px solid #000000');
        }
        if(jQuery.trim($('input[name="phone"]').val())==''){
            bError=true;
            $('input[name="phone"]').css('border','1px solid red');
        }
        else
        {
        	$('input[name="phone"]').css('border','1px solid #000000');
        }
        if(jQuery.trim($('input[name="company"]').val())==''){
            bError=true;
            $('input[name="company"]').css('border','1px solid red');
        }
        else
        {
        	$('input[name="company"]').css('border','1px solid #000000');
        }
        //14.05.2009 - Audrey says: we don't want validation here
       // 22.05.2009 - Cyril says: we want validation here
        if(bError) {
            $('#reservation .error_message').css('display','block');
            return false;
        }
        else {
            $('input[name="phone"]').css('border','1px solid black');
            $('input[name="name"]').css('border','1px solid black');
            oRef.submit();
        }
    })
    activateStep(1);
}
function activateStep(iStepNo) {
    $('ul.wizard>li div.wizard_content').css('display','none');
    $('ul.wizard>li div.wizard_label').css('cursor','auto');
    $('ul.wizard>li:eq('+(iStepNo-1)+') div.wizard_content').css('display','block').addClass('enabled');
    $('ul.wizard>li div.wizard_content.enabled').siblings('.wizard_label').css('cursor','pointer');
}
function activatePrevious(iStepNo) {
    var oPrev=$('ul.wizard>li:eq('+(iStepNo-1)+') div.wizard_content');
    if(oPrev.hasClass('enabled')) {
        activateStep(iStepNo);
        $('ul.wizard>li:gt('+(iStepNo-1)+') div.wizard_content').removeClass('enabled');
    }
    else
        if(iStepNo==2)
                activateStep(2);

}
function update(oRef,oDest) {
    oDest.innerHTML=oRef.value;
}
function recalculate() {
    if($("#result").hasClass('enabled'))
        $("#calc_btn").click();
}