
var valid_pickup_city = false;
var valid_delivery_city = false;

$(function () {

	isSafari3 = false;
	if(window.devicePixelRatio) isSafari3 = true;

	if(isSafari3){
		$('.hint').css('left',163);
	}
	

	var MINUTE = 60 * 1000;
	var HOUR = 60 * MINUTE;
	var DAY = 24 * HOUR;

	function isDisabled(date) {
		var today = new Date();
		if(date.getTime() > (today.getTime() - DAY)){
			return false;
		} else {
			return true;
		}
	}

	Calendar.setup({
		inputField : 'shipdate',
		ifFormat : "%m/%d/%Y",
		button : 'shipdate-calendar',
		disableFunc : isDisabled
	});

	$('#move-house').bind('click', function () {
		$('#house-extra').slideDown();
	});

	$('#dont-move-house').bind('click', function () {
		$('#house-extra').slideUp();
	});

	$('[rel = required]').bind('click', function () {
		$(this).css('border', '1px solid #B7B7B7');
		$('[rel = ' + $(this).attr('id') + ']').removeClass('red');
	});

	$('#vehicle-make-2').bind('click', function () {
		$(this).css('border', '1px solid #B7B7B7');
		$('[rel = ' + $(this).attr('id') + ']').removeClass('red');
	});
	
	$('#vehicle-model-2').bind('click', function () {
		$(this).css('border', '1px solid #B7B7B7');
		$('[rel = ' + $(this).attr('id') + ']').removeClass('red');
	});


	$('#vehicle-make-1').bind('change', function () {
		if ($(this).val() == 0) {
			$('#vehicle-model-1').attr('disabled', true).html('<option value="0">Please select</option>');
		} else {
			setModels($(this).val(), 1);
		}
	});

	/*$('#pickup-city').bind('keyup', function () {
		if ($(this).val() != 0) {			
			setState($(this).val(), 'pickup');
		}
	});

	$('#pickup-city').bind('blur', function () {
		if (valid_pickup_city == false && $(this).val() != 0) {
			$('[rel = pickup-city]').addClass('red');
			showDeliveryError('Invalid pickup city');
		}
	});

	$('#delivery-city').bind('blur', function () {
		if (valid_delivery_city == false && $(this).val() != 0) {
			$('[rel = delivery-city]').addClass('red');
			showDeliveryError('Invalid delivery city');
		}
	});

	$('#delivery-city').bind('keyup', function () {
		if ($(this).val() != 0) {			
			setState($(this).val(), 'delivery');
		}
	});

	
	$('#pickup_state').bind('change', function () {
		if ($(this).val() != 0) {
			$('[rel = pickup-state]').removeClass('red');
			setZip($('#pickup-city').val(),$('#pickup_state > option:selected').text(), 'pickup');
		}
	});

	$('#pickup_zip').bind('change', function () {
		if ($(this).val() != 0) {
			$('[rel = pickup-zip]').removeClass('red');
		}
	});	

	$('#delivery_state').bind('change', function () {
		if ($(this).val() != 0) {
			$('[rel = delivery-state]').removeClass('red');
			setZip($('#delivery-city').val(),$('#delivery_state > option:selected').text(), 'delivery');
		}
	});

	$('#delivery_zip').bind('change', function () {
		if ($(this).val() != 0) {
			$('[rel = delivery-zip]').removeClass('red');
		}
	}); */

	$('#delivery-state').bind('change', function () {
		if ($(this).val() != 0) {
			$('[rel = delivery-state]').removeClass('red');			
			city = $('#delivery-city').val();
			state = $('#delivery-state > option:selected').text();
			zip = $('#delivery-zip').val();

			if(city != '' && state != '' && zip != ''){
				checkAddress(city, state, zip, 'delivery');
			}
		}
	});

	$('#pickup-state').bind('change', function () {
		if ($(this).val() != 0) {
			$('[rel = pickup-state]').removeClass('red');
			city = $('#pickup-city').val();
			state = $('#pickup-state > option:selected').text();
			zip = $('#pickup-zip').val();

			if(city != '' && state != '' && zip != ''){
				checkAddress(city, state, zip, 'pickup');
			}
		}
	});

	$('#delivery-zip').bind('blur', function () {
		city = $('#delivery-city').val();
		state = $('#delivery-state > option:selected').text();
		zip = $(this).val();
		checkAddress(city, state, zip, 'delivery');
	});

	$('#pickup-zip').bind('blur', function () {
		city = $('#pickup-city').val();
		state = $('#pickup-state > option:selected').text();
		zip = $(this).val();
		checkAddress(city, state, zip, 'pickup');
	});


	$('#vehicle-make-2').bind('change', function () {
		if ($(this).val() == 0) {
			$('#vehicle-model-2').attr('disabled', true).html('<option value="0">Please select</option>');
		} else {
			setModels($(this).val(), 2);
		}
	});

	// quote submiting
	$('#submit-quote').bind('click', function () {
		if (validate('quote-form', function () {
			additional();
		})) {
			err = false;
			phone = $('#phone').val();
			reg = new RegExp('[^0-9-+() ]','g');
			if(reg.test(phone) == true){
				$('[rel = phone]').addClass('red');
				showMessage('Phone number should contain numeric, aphabetical symbols');
				err = true;
			}

			name = $('#name').val();
			reg = /[^a-zA-Z- ']/g;
			if(reg.test(name) == true){
				$('[rel = name]').addClass('red');
				showMessage('Name should contain letter, aphabetical symbols');
				err = true;
			}

			if(err == false) {
				$('#quote-form').submit();
			}
			
		}else
			showMessage(errorText);
	});

});

/**
 * @var make int make_id
 * @var vh int vehicle (1 or 2)
 */
function setModels(make, vh) {
	$.post('/quote/get-models.html', {
		'make' : make
	}, function (html) {
		$('#vehicle-model-' + vh).attr('disabled', false).html(html);
	});
}

function setState(city, prefix){
	$.post('/quote/get-state.html', {
		'city' : city
	}, function (data) {
		data = eval('(' +data+')');
	
		html = '<option value="0">Please select</option>';

		//clear zip dropdown
		$('#'+ prefix + '_zip').html(html);

		for(state in data){
			html +=  '<option value="' + data[state].state_id + '">' + data[state].state_name + '</option>';
		}

		$('#'+ prefix + '_state').html(html);
		
		if(data.length == 1){
			setZip(city, data[0].state_name, prefix);
			$('#' + prefix +'_state > [value=' + data[0].state_id + ']' ).attr('selected', true);
			$('[rel = ' + prefix +'-state]').removeClass('red');
		}

		if(data.length == 0) {
			if(prefix == 'pickup'){
				valid_pickup_city = false;
			} else {
				valid_delivery_city = false;
			}
		} else {
			if(prefix == 'pickup'){
				valid_pickup_city = true;
			} else {
				valid_delivery_city = true;
			}
			clearDeliveryError();
		}
	});
}

function setZip(city, state, prefix){
	$.post('/quote/get-zip.html', {
		'city' : city,
		'state' : state
	}, function (data) {
		data = eval('(' +data+')');
		html = '<option value="0">Please select</option>';
		for(zip in data){
			html +=  '<option value="' + data[zip].zip_code + '">' + data[zip].zip_code + '</option>';
		}
		$('#'+ prefix + '_zip').html(html);

		if(data.length == 1){
			$('#' + prefix +'_zip > [value=' + data[0].zip_code + ']' ).attr('selected', true);
			$('[rel = ' + prefix +'-zip]').removeClass('red');
		} 	
	});
}

function checkAddress(city, state, zip, prefix){
	error = false;
	if (state == 0) {
		$('[rel = ' + prefix + '-state]').addClass('red');
		error = true;
	}

	if(city == ''){
		$('[rel = ' + prefix + '-city]').addClass('red');
		error = true;
	}

	if(zip == '') {
		$('[rel = ' + prefix + '-zip]').addClass('red');
		error = true;
	}

	if(error  == false) {
		$.post('/quote/check-address.html', {
			'city' : city,
			'state' : state,
			'zip' : zip
		}, function (data) {
			if(data != '1'){
				error = true;
				$('[rel = ' + prefix + '-state]').addClass('red');
				$('[rel = ' + prefix + '-city]').addClass('red');
				$('[rel = ' + prefix + '-zip]').addClass('red');
				showDeliveryError('Your city, state and ZIP code do not match.');
			} else {
				$('[rel = ' + prefix + '-state]').removeClass('red');
				$('[rel = ' + prefix + '-city]').removeClass('red');
				$('[rel = ' + prefix + '-zip]').removeClass('red');
				clearDeliveryError();
			}
		});
	} else {
		showDeliveryError('Your city, state and ZIP code do not match.');
	}

	return error;
}

function additional() {
	vehicle2_make = $('#vehicle-make-2').val();
	vehicle2_model = $('#vehicle-model-2').val();

	//if veh2 make or model is set, so do validation of all veh2 fields
	if (vehicle2_make != '0' || vehicle2_model != '0') {
		if (empty(vehicle2_make)) {
			error = true;
			$('[rel = vehicle-make-2]').addClass('red');
		}

		if (empty(vehicle2_model)) {
			error = true;
			$('[rel = vehicle-model-2]').addClass('red');
		}
	}

	if($('#pickup_state').val() == '0') {
		error = true;
		$('[rel = pickup-state]').addClass('red');
	}

	if($('#pickup_zip').val() == '0') {
		error = true;
		$('[rel = pickup-zip]').addClass('red');
	}

	if($('#delivery_state').val() == '0') {
		error = true;
		$('[rel = delivery-state]').addClass('red');
	}

	if($('#delivery_zip').val() == '0') {
		error = true;
		$('[rel = delivery-zip]').addClass('red');
	}	
}

function showMessage(msg){
	text = '<div class="error">' + msg + '</div>';
	$('#client_error').html(text);
}

function clearMessage(){	
	$('#client_error').html('');
}

function showDeliveryError(msg){
	text = '<div class="error">' + msg + '</div>';
	$('#delivery_error').html(text);
}

function clearDeliveryError(){
	$('#delivery_error').html('');
}
