var sliderStarted = false;
var isAutoload = false;

$(document).ready(function () {
    $(document).ajaxError(function () {
        if (window.console && window.console.error) 
        {
            console.error(arguments);
        }
    });

    if (!sliderStarted && $("#price-slider").html() != null) {
        startSlider();
        // sliderSetValues();
    }

    $(document).ajaxStart(function () {
        blockUI();
    }).ajaxStop(function () {
        unblockUI();
    });

    $("#select_country").change(function () {
        $.ajaxSetup({
            url: "/default/ajax/pickup-location"
        });

        $.ajax({
            data:
	               {
	                   idCountry: $(this).val(),
	                   rand: randomNumber()
	               },
            type: "GET",
            dataType: "html",
            timeout: 10000,

            error: function (e) {
                $.prompt("Server is not responding. Please try to repeat your request");
            },

            success: function (html) {
                $("#wrapper #reservation > #reservation-body #div_pickup").html(html);
            }
        });
    });

    $("#reservation #reservation-body #reservation-form .filter").change(function () {

        var isChecked = false;

        $("#reservation #reservation-body #reservation-form .category").each(function () {
            if ($(this).is(":checked")) 
            {
                isChecked = true;
                return;
            }
        });

        if (isChecked) 
        {
            filterCars();
        }
        else 
        {
            $("#reservation #reservation-body #reservation-form #all-categories").attr("checked", true).change();
        }

    });

    $("#reservation #reservation-body #reservation-form input").click(function () {
        
    });

    $("#reservation #reservation-body #reservation-form .category").change(function () {
        if ($("#reservation #reservation-body #reservation-form #all-categories").is(":checked")) {
            $("#reservation #reservation-body #reservation-form #all-categories").attr("checked", false);
        }

        filterCars();
    });

    $("#reservation #reservation-body #reservation-form #all-categories").change(function () {
        if ($(this).is(":checked")) {
            $("#reservation #reservation-body #reservation-form .category").attr("checked", true);
            filterCars();
        }
    });

    $(function () {
        $("#search-location").autocomplete({
            source: "/default/ajax/get-json-locations",
            minLength: 2,
            select: function (event, ui) {
                isAutoload = false;
                $(this).siblings("#hidden-id-city").val(ui.item.id_city);
                $(this).siblings("#hidden-id-node").val(ui.item.id_node);
                $(this).siblings("#hidden-id-provider").val(ui.item.id_provider);
                $(this).siblings("#hidden-id-provider-branch").val(ui.item.id_provider_branch);
                ajaxDropOffLocation();
            },
            search: function (event, ui) { isAutoload = true; },
            open: function (event, ui) { $("#drop-off").hide(); },
            close: function (event, ui) { $("#drop-off").show(); isAutoload = false; }
        });

    });


    $(".city-book-button-node").click(function () {
        $("#hidden-id-node").val($(this).siblings(".id_node").val());
        $("#hidden-id-provider").val("");
        $("#hidden-id-provider-branch").val("");
        $("#search-location").val($(this).siblings(".pick_up").val());
        ajaxDropOffLocation();
    });


    $(".city-book-button-branch").click(function () {
        $("#hidden-id-node").val("");
        $("#hidden-id-provider").val($(this).siblings(".id_provider").val());
        $("#hidden-id-provider-branch").val($(this).siblings(".id_provider_branch").val());
        $("#search-location").val($(this).siblings(".pick_up").val());
        ajaxDropOffLocation();
    });

});

function blockUI() 
{
    if (!isAutoload) 
    {
        $("#reservation-body").block({
            message: $("#ajax-loader"),
            css: {
                border: "",
                backgroundColor: ""
            },
            fadeOut: 0
        });
    } 
}

function unblockUI()
{
    if (!isAutoload) $("#reservation-body").unblock();
}

function filterCars(boundaries, priceAmount)
{
	var sipp = generateSipp();
	
	var availability = new Array();
	
	 $("#reservation-form input.availability").each(
			 function(index)
			 {
				 if($(this).is(":checked"))
				 {
				     availability.push($(this).val())
				 }
			 }
	);
	
	if(priceAmount) 
	{
		$.ajaxSetup({
			url: "/default/ajax/filter-cars-by-price"
		});
	}
	else
	{
		$.ajaxSetup({
			url: "/default/ajax/filter-cars"
		});
	}
	$.ajax({
               data: 
               {
                   //"reservationFormHtml" : $("#reservation-form").html(),
				   "sipp[]" : sipp,
                   "availability[]" : availability,
                   "priceAmount": priceAmount,
                   "boundaries": boundaries,
                   rand: randomNumber()
			   },
			   type: "GET",
			   dataType: "html",
			   timeout: 10000,

			   error: function(e) 
			   {
				   $.prompt("Server is not responding. Please try to repeat your request");
			   },

			   success: function(html) 
			   {
				   $("#cars").html(html);
				   sliderSetValues();
				   
				   $("#left-col #cars > .car .a-car-view-more").click(function(){
			    		$.prompt($(this).siblings(".car-info-view").html());
			    		$(".jqi").css("width", "510px");
			    		return false;
			    	});
			    	
			    	$("#reservation #container #reservation-body #cars .book-submit-input").click(function(){
						
					//	return true;
					});
			    	
			    	$(".a_submit").click(function(){  
						var parent;
			    		if($(this).siblings(".hidden-on-request").val() == "1")
						{   
							parent = $(this).parent().parent().parent().parent();
							parent.hide();
							parent.siblings(".on-request-content").show();
							return false;
						}
			    		else
			    		{		
			    			$(this).parent().parent().submit(); 
			    		}
			    	});	
			    	/*
			    	$("#reservation #container #reservation-body #cars .a_submit_on_request").click(function () {
			            var parent; 
			    		if ($(this).siblings(".hidden-on-request").val() == "1") {
			                 parent = $(this).parent().parent().parent().parent();
			                 parent.hide();
			                 parent.siblings(".on-request-content").show();

			                 return false;
			             }
			            
			         }); */
			    	
			    	$("#reservation #container #reservation-body #cars .car .on-request-submit").click(function(){
			    		if(isEmail($(this).parent().siblings("label").children("input").val()))
			    		{
			    			$(this).parent().parent().submit(); 
			    		}
			    		else
			    		{
			    			$.prompt("Email " + $("#bad-email-format-translate").val());
			    			return false;
			    		}
			    	});
			   }
    });	
}

function isEmail(value) {
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    if (reg.test(value) == false) 
    {
        return false;
    }
    else 
    {
        return true;
    }
}

function ajaxDropOffLocation()
{
	$.ajaxSetup({
		url: "/default/ajax/drop-off-location"
	});
	
	$.ajax({
               data: 
               {
                   idProvider: $("#hidden-id-provider").val(),
                   idProviderBranch: $("#hidden-id-provider-branch").val(),
                   idNode: $("#hidden-id-node").val(),
                   rand: randomNumber()
			   },
			   type: "GET",
			   dataType: "html",
			   timeout: 10000,

			   error: function(e) 
			   {
			       $.prompt("Server is not responding. Please try to repeat your request");
			   },

			   success: function(html) 
			   {
                    $("#wrapper #reservation > #reservation-body #div-drop-off").html(html);
			   }
        });
}

function generateSipp()
{
	var categories = new Array();
	var aircondition = new Array();
	var transmission = new Array();
	
	$("#checkbox-array input").each(
			function(index) 
			{ 
				if($(this).is(":checked")  && $(this).val())
				{
					categories.push($(this).val())
				}
			}
	)
			
	$("#reservation-form input.transmission").each(
			function(index) 
			{ 
				if($(this).is(":checked"))
				{
					transmission.push($(this).val())
				}
			}
	)
	
	$("#reservation-form input.aircond").each(
			function(index) 
			{ 
				if($(this).is(":checked"))
				{
					aircondition.push($(this).val())
				}
			}
	)
	
	var sipp = new Array();
	var tmp = "";
	
	for(i = 0; i < categories.length; i++)
	{
		tmp = categories[i] + "_";
		
		if(transmission.length == 0)
		{
			tmp = tmp + "_";
			
			if(aircondition.length == 0) 
			{
				sipp.push(tmp + "_");
			}
			
			for(k = 0; k < aircondition.length; k++)
			{
				sipp.push(tmp + aircondition[k]);
			}
		}
		
		for(j = 0; j < transmission.length; j++)
		{
			if(aircondition.length == 0) 
			{
				tmp = categories[i] + "_" + transmission[j] + "_";
				sipp.push(tmp);
			}
			else
			{
				for(l = 0; l < aircondition.length; l++)
				{
					tmp = categories[i] + "_" + transmission[j] + aircondition[l];
					sipp.push(tmp);
				}
			}
		}		
		//sipp.push(tmp);
	}
	
	return sipp;
}

function randomNumber()
{
    return parseInt(new Date().getTime().toString().substring(0, 10));
}

function startSlider() 
{
    sliderStarted = true;
    var values = $("#cars #start-values").val().split(";");
    var val1 = parseInt(values[0]);
    var val2 = parseInt(values[1]);

    var sliderObject = $("#wrapper #left-col #reservation #price-slider");

    sliderObject.slider({
        range: true,
        values: [val1, val2],
        slide: function (event, ui) {
            var boundaries = $("#cars #amount-boundaries").val().split(";");
            var currency = boundaries[2];

            $("#amount-left").text(ui.values[0] + " " + currency);
            $("#amount-right").text(ui.values[1] + " " + currency);
        },
        stop: function (event, ui) {
            var boundaries = $("#cars #amount-boundaries").val().split(";");

            var minB = parseInt(boundaries[0]);
            var maxB = parseInt(boundaries[1]);
            var currency = boundaries[2];

            filterCars(minB + ";" + maxB, ui.values[0] + ";" + ui.values[1]);
        }
    });
    $("#amount").val('$' + $("#slider-range").slider("values", 0) + ' - $' + $("#slider-range").slider("values", 1));

    sliderSetValues();

    /*
	var boundaries = $("#cars #amount-boundaries").val().split(";");
    var values = $("#cars #start-values").val().split(";");

    var sliderObj = $("#wrapper #left-col #reservation #price-slider");
    
    var parent = sliderObj.parent();

    var minB = parseInt(boundaries[0]);
    var maxB = parseInt(boundaries[1]);
    var currency = boundaries[2];

    var val1 = parseInt(values[0]);
    var val2 = parseInt(values[1]);
   
    if(val1 != minB || val2 != maxB)
    {
    	$("#amount-left").text(val1 + " " + currency);
    	$("#amount-right").text(val2 + " " + currency);
    }
    else
    {
    	$("#amount-left").text(minB + " " + currency);
    	$("#amount-right").text(maxB + " " + currency);
    }
   
    sliderObj.slider({
        range: true,
        min: minB,
        max: maxB,
        values: [val1,val2],
        slide: function(event, ui) 
        {
            $("#amount-left").text(ui.values[0] + " " + currency);
            $("#amount-right").text(ui.values[1] + " " + currency);
        },
        stop: function(event, ui) 
        	  {  
	        	 var boundaries = $("#cars #amount-boundaries").val().split(";");
	     		
		         var minB = parseInt(boundaries[0]);
		         var maxB = parseInt(boundaries[1]);
		         var currency = boundaries[2];

        		 filterCars(minB + ";" + maxB, ui.values[0] + ";" + ui.values[1]); 
        	  }

   }); 
    $("#amount").val('$' + $("#slider-range").slider("values", 0) + ' - $' + $("#slider-range").slider("values", 1)); */
}

function sliderSetValues()
{
	var boundaries = $("#cars #amount-boundaries").val().split(";");
    var values = $("#cars #start-values").val().split(";");

   	var sliderObj = $("#wrapper #left-col #reservation #price-slider");
   
    var minB = parseInt(boundaries[0]);
    var maxB = parseInt(boundaries[1]);
    var currency = boundaries[2];
        
    var val1 = parseInt(values[0]);
    var val2 = parseInt(values[1]);
    
    if(val1 != minB || val2 != maxB)
    {
    	$("#amount-left").text(val1 + " " + currency);
    	$("#amount-right").text(val2 + " " + currency);
    }
    else
    {
    	$("#amount-left").text(minB + " " + currency);
    	$("#amount-right").text(maxB + " " + currency);
    }

    if (maxB == minB) 
    {
        sliderObj.slider("option", "disabled", true);
    }
    else
    {
        sliderObj.slider("option", "disabled", false);
        sliderObj.slider("option", "min", minB);
        sliderObj.slider("option", "max", maxB);
        sliderObj.slider("option", "values", [val1, val2]);
    }
}

