function validateSearchForm ( form )
{
    var errors = new errorValues();

    if(!basket_json || basket_json.has_passengers == 0) {
	errors.adults = false;
	errors.children = false;
	errors.children_age = false;
	errors.errorExists = false;
	errors.dateOverlapping = false;
	errors.dateStart = false;
	errors.dateEnd = false;
	return errors;
    }
    else {
	var basketAdults = basket_json.adults;
	var basketChildren = basket_json.children;
	var basketChildrenAge =  new Array();
	var basketDates = basket_json.dates;
	var basketDateStart;
	var basketDateEnd;

	var formAdults;
	var formChildren;
	var formChildrenAge;
	var formChildrenAgeArray = new Array();
	var formComboId;
	var formStartYearMonth;
	var formStartDay;
	var formEndYearMonth;
	var formEndDay;
	var formDateStart;
	var formDateEnd;



	for(var i = 1; i < form.length; i++)
	    {
		if(form.elements[i].id == 'adults')
		    {
			formAdults = form.elements[i].value;
		    }
		if(form.elements[i].id == 'children')
		    {
			formChildren = form.elements[i].value;
		    }
		if(form.elements[i].id == 'children_age')
		    {
			formChildrenAge = form.elements[i].value;
		    }
		if(form.elements[i].id == 'start_year_month')
		    {
			formStartYearMonth = form.elements[i].value;
		    }
		if(form.elements[i].id == 'start_day')
		    {
			formStartDay = form.elements[i].value;
		    }
		if(form.elements[i].id == 'end_year_month')
		    {
			formEndYearMonth = form.elements[i].value;
		    }
		if(form.elements[i].id == 'end_day')
		    {
			formEndDay = form.elements[i].value;
		    }
		// Used for cannonball
		if(form.elements[i].id == 'travelTypeDropdown')
		    {
			formComboId = form.elements[i].value;
		    }
	    }
	// Used for package_tours
	if(form.combo_id)
	    {
		for(var k = 0; k < form.combo_id.length; k++)		    
		    {
			if(form.combo_id[k].checked)
			    {
				formComboId = form.combo_id[k].value;
			    }
		    }
	    }
	if(basket_json.children)
	    {
 		for(var x = 0; x < basket_json.children_age.length; x++)
		    {
			basketChildrenAge.push(basket_json.children_age[x]);
		    }
		formChildrenAgeArray = formChildrenAge.split(',');
	
		for(var x = 0; x < formChildrenAgeArray.length; x++)
		    {
			for(var y = 0; y < basketChildrenAge.length; y++)
			    {	
			if(typeof basketChildrenAge[y] != "undefined" && formChildrenAgeArray[x] == basketChildrenAge[y])
				    {
					delete formChildrenAgeArray[x];
					delete basketChildrenAge[y];
				    }
			    }
		    }
		for(var x = 0; x < basketChildrenAge.length; x++)
		    {
			if(typeof basketChildrenAge[x] != "undefined")
			    {
				errors.children_age = true;
			    }
		    }
		for(var x = 0; x < formChildrenAgeArray.length; x++)
		    {
			if(typeof formChildrenAgeArray[x] != "undefined")
			    {
				errors.children_age = true;
			    }
		    }
	    }

	// checking if dates in basket and the search form are overlapping
	var tmpDates = new Array();
	if(basket_json.dates && window.Date &&
	   formStartYearMonth != "undefined" && formStartDay != "undefined" &&
	   formEndYearMonth != "undefined" && formEndDay != "undefined" &&
	   (formComboId == 2 || formComboId == 10 || formComboId == 20))
	    {
		// Dates from form (yyyy-mm-dd)
		formDateStart = formStartYearMonth + '-' + formStartDay;
		formDateEnd = formEndYearMonth + '-' + formEndDay;

		tmpDates = formDateStart.split("-");
		formDateStart = new Date(tmpDates[0], tmpDates[1] - 1, tmpDates[2]);

		tmpDates = formDateEnd.split("-");
		formDateEnd = new Date(tmpDates[0], tmpDates[1] - 1, tmpDates[2]);

		for (var productType in basket_json.dates)
		    {
			if(productType == 'hotel')
			    {
				for (var item in basket_json.dates[productType])
				    {
					if(basket_json.dates[productType][item].event_date_start &&
					   basket_json.dates[productType][item].event_date_stop)
					    {
						// Dates from basket (yyyy-mm-dd)
						basketDateStart = basket_json.dates[productType][item].event_date_start;
						tmpDates = basketDateStart.split("-");
						basketDateStart = new Date(tmpDates[0], tmpDates[1] - 1, tmpDates[2]);
						
						basketDateEnd = basket_json.dates[productType][item].event_date_stop;
						tmpDates = basketDateEnd.split("-");
						basketDateEnd = new Date(tmpDates[0], tmpDates[1] - 1, tmpDates[2]);


						// No passenger can be in two places at once
						// Check if the dates are overlapping

						//overlapping
						if(formDateStart <= basketDateStart && formDateEnd >= basketDateEnd ||
						   basketDateStart <= formDateStart && basketDateEnd >= formDateEnd)
						    {
							errors.dateOverlapping = true;
						    }

						//Start date between start and end
						else if(formDateStart >= basketDateStart && formDateStart < basketDateEnd)
						    {
							errors.dateStart = true;
						    }

						//End date between start and end
						else if(formDateEnd <= basketDateEnd && formDateEnd > basketDateStart)
						    {
							errors.dateEnd = true;
						    }
						
					    }
				    }
			    }
		    }
	    }

	errors.adults = (formAdults != basketAdults);
	errors.children = (formChildren != basketChildren);
	errors.errorExists = (errors.adults == true || errors.children == true || errors.children_age == true ||
			      errors.dateOverlapping == true || errors.dateStart == true || errors.dateEnd == true);
	return errors;
    }
}

function validateSearchFormHotel ( form )
{
    var errors = new errorValues();

    if(!basket_json || basket_json.has_passengers == 0) {
	errors.adults = false;
	errors.children = false;
	errors.children_age = false;
	errors.errorExists = false;
	errors.dateOverlapping = false;
	errors.dateStart = false;
	errors.dateEnd = false;
	return errors;
    }
    else {
	var basketAdults = basket_json.adults;
	var basketChildren = basket_json.children;
	var basketChildrenAge =  new Array();
	var basketDates = basket_json.dates;
	var basketDateStart;
	var basketDateEnd;

	var formAdults = 0;
	var formChildren = 0;
	var formChildrenAge;
	var formChildrenAgeArray = new Array();
	var formStartYearMonth;
	var formStartDay;
	var formEndYearMonth;
	var formEndDay;
	var formDateStart;
	var formDateEnd;

	var tempArray = new Array();
	var roomAdults = $$('select.roomAdults');
	var roomChildren = $$('select.roomChildren');
	var roomChildrenAge = $$('input.childrenAge');


	roomAdults.each(function(node)
	    {
		formAdults += parseInt(node.value);
	    }
			);

	roomChildren.each(function(node)
	    {
		formChildren += parseInt(node.value);
	    }
			  );

	if(basket_json.children)
	    {	   
 		for(var x = 0; x < basket_json.children_age.length; x++)
		    {
			basketChildrenAge.push(basket_json.children_age[x]);
		    }
		
		roomChildrenAge.each(function(node)
				     {
					 tempArray = node.value.split(',');
					 for(var x = 0; x < tempArray.length; x++)
					     {
						 if(parseInt(tempArray[x]) > 0)
						 {
						     formChildrenAgeArray.push(tempArray[x]);
						 }
					     }
				     }
				     );

		for(var x = 0; x < formChildrenAgeArray.length; x++)
		    {
			for(var y = 0; y < basketChildrenAge.length; y++)
			    {
				if(basketChildrenAge[y] != "undefined" && formChildrenAgeArray[x] == basketChildrenAge[y])
				    {
					delete formChildrenAgeArray[x];
					delete basketChildrenAge[y];
				    }
			    }
		    }
		
		for(var x = 0; x < basketChildrenAge.length; x++)
		    {
			if(typeof basketChildrenAge[x] != "undefined")
			    {
				errors.children_age = true;
			    }
		    }

		for(var x = 0; x < formChildrenAgeArray.length; x++)
		    {
			if(typeof formChildrenAgeArray[x] != "undefined")
			    {
				errors.children_age = true;
			    }
		    }
	    }
	
	if(form.start_year_month)
	    {
		formStartYearMonth = form.start_year_month.value;
	    }
	if(form.start_day)
	    {
		formStartDay = form.start_day.value;
	    }
	if(form.start_year_month)
	    {
		formEndYearMonth = form.end_year_month.value;
	    }
	if(form.end_day)
	    {
		formEndDay = form.end_day.value;
	    }

	// checking if dates in basket and the search form are overlapping
	var tmpDates = new Array();
	if(basket_json.dates && window.Date &&
	   formStartYearMonth != "undefined" && formStartDay != "undefined" &&
	   formEndYearMonth != "undefined" && formEndDay != "undefined")
	    {
		// Dates from form (yyyy-mm-dd)
		formDateStart = formStartYearMonth + '-' + formStartDay;
		formDateEnd = formEndYearMonth + '-' + formEndDay;
		
		tmpDates = formDateStart.split("-");
		formDateStart = new Date(tmpDates[0], tmpDates[1] - 1, tmpDates[2]);

		tmpDates = formDateEnd.split("-");
		formDateEnd = new Date(tmpDates[0], tmpDates[1] - 1, tmpDates[2]);

		for (var productType in basket_json.dates)
		    {
			if(productType == 'hotel')
			    {
				for (var item in basket_json.dates[productType])
				    {
					if(basket_json.dates[productType][item].event_date_start &&
					   basket_json.dates[productType][item].event_date_stop)
					    {
						// Dates from basket (yyyy-mm-dd)
						basketDateStart = basket_json.dates[productType][item].event_date_start;
						tmpDates = basketDateStart.split("-");
						basketDateStart = new Date(tmpDates[0], tmpDates[1] - 1, tmpDates[2]);
						
						basketDateEnd = basket_json.dates[productType][item].event_date_stop;
						tmpDates = basketDateEnd.split("-");
						basketDateEnd = new Date(tmpDates[0], tmpDates[1] - 1, tmpDates[2]);


						// No passenger can be in two places at once
						// Check if the dates are overlapping

						//overlapping
						if(formDateStart <= basketDateStart && formDateEnd >= basketDateEnd ||
						   basketDateStart <= formDateStart && basketDateEnd >= formDateEnd)
						    {
							errors.dateOverlapping = true;
						    }

						//Start date between basket start and end
						else if(formDateStart >= basketDateStart && formDateStart < basketDateEnd)
						    {
							errors.dateStart = true;
						    }

						//End date between basket start and end
						else if(formDateEnd <= basketDateEnd && formDateEnd > basketDateStart)
						    {
							errors.dateEnd = true;
						    }
						
					    }
				    }
			    }
		    }
	    }


	errors.adults = (formAdults != basketAdults);
	errors.children = (formChildren != basketChildren);
	errors.errorExists = (errors.adults == true || errors.children == true || errors.children_age == true ||
			      errors.dateOverlapping == true || errors.dateStart == true || errors.dateEnd == true);
	return errors;
    }
}

function errorValues ( )
{
    var adults;
    var children;
    var childrenAge;
    var errorExists;
    var dateOverlapping;
    var dateStart;
    var dateEnd;
}