function hideShow(element) {
	if (element.hasClass('show')) {
		element.removeClass('show').addClass('hide');
	} else {
		element.removeClass('hide').addClass('show');
	}
}

function showCheck(el) {
	el.attr('src', '/interface/field_ok.gif');
}

function Checker(text, type, field) {
	/*
		types:
		- text (length>0)
		- email (OK)
		- age (15-90)
		- select (value!=0)
		- radio (checked)
		- date (MM/DD/YYYY)
		- phone (???)
	*/
	switch (type) {
		case 'text':
			if (text.length>0) {
				return 1;
			}
		break;
		case 'email':
			if (text.length>5 && text.match(/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/)) {
				return 1;
			}
		break;
		case 'age':
			var age = parseInt(text);
			if (age>15 && age<=90) {
				return 1;
			}
		break;
		case 'select':
			if (text!='0') {
				return 1;
			}
		break;
		case 'date':
			//MM/DD/YYYY
			//MM [1-12]
			//DD [1-31]
			//YYYY [>1900]
			var dateArr = text.split('/');
			if (parseInt(dateArr[0])>0 && parseInt(dateArr[0])<=12) {
				if (parseInt(dateArr[1])>0 && parseInt(dateArr[1])<=31) {
					if (parseInt(dateArr[2])>=1900) {
						return 1;
					}
				}
			}
		break;
		case 'phone':
			// Valid Phone
			// (???)???-????
			
			// премахваме всички символи освен цифрите
			// от изпратения стринг
			var p = text.replace(/[^\d]/gi, "");
			
			if (p.length==10) {
				// цифрите са нужния брой
				// телефона е валиден
				
				// създаваме нов стринг с форматиран такъв
				// без значение какво е въвел потребителя
				var result = '('+p.substring(0,3)+') '+p.substring(3,6)+'-'+p.substring(6);
				// попълваме данните в полето
				$(field).val(result);
				// връщаме положителен резултат
				return 1;
			}
		break;
		case 'number':
			if (parseInt(text)>0) return 1;
		break;
	}
	return 0;
}

function checkField(field, type) {
	if ($(field)) {
		var value = $.trim($(field).val());
		var OK = Checker(value, type, field)>0;
		var t = $(field).get(0).tagName.toLowerCase();
		var hObj = $("#formHint");
		var iObj = $(field).next();
		
		// скриваме обекта с hint и изтриваме съдържанието му
		hObj.css({'display':'none'});
		hObj.html('');
	
		if (t=='input') {
			if (OK>0) {
				$(field).removeClass('in in_err').addClass('in_ok');
			} else {
				$(field).removeClass('in in_ok').addClass('in_err');
			}
		} else if (t=='select') {
			if (OK>0) {
				$(field).removeClass('sl sl_err').addClass('sl_ok');
			} else {
				$(field).removeClass('sl sl_ok').addClass('sl_err');
			}
		}
		if (OK>0) iObj.attr('src','/interface/field_ok.gif');
		else {
			// показваме иконката за грешно въведено поле
			iObj.attr('src','/interface/field_err.gif');
			if ($(field).attr('alt').length>0) {
				// вземаме hint от атрибут alt и заменяме символа '|' с <br />
				var h = $(field).attr('alt').split('|');
				var hint = '';
				$(h).each(function (index, el) { hint += el + '<br />'; });
				// предаваме hint стринга в html частта на #formHint
				hObj.html('<p>'+hint+'</p><img src="/interface/hint_arr.gif" class="a" alt="-" />');
				// сменяме позицията на #formHint, за да застане срещу input/select полето
				// координатите се вземат спрямо img тага, който е задължително под полето (картинката е за иконата)
				pos=iObj.offset();
				if (pos) {
					hObj.css({
						'display':'block',
						'top':(parseInt(pos.top)-10)+'px',
						'left':(parseInt(pos.left)+22)+'px'
					});
				}
			}
		}
	}
}

function MoreLessDetails() {
	hideShow($('#more_fields'));
	hideShow($('#more_fields_info'));
	hideShow($('#less_fields_info'));
}

function initForm() {
	$('#formValidate [rel]').each(function(index, el){
		// rel = 'validate|text'
		var r = $(el).attr('rel');
		r = $.trim(r).split('|');
		if (r[0]=='validate') {
			$(el).bind('blur', function(){
				checkField(this,r[1]);
				if ($(this).val().length>0) {
					saveData(r[2],r[3],r[4],$(this).val());
				}
			});
		}
	});
	$('div[rel="validate|radio"] input:radio').each(function(index, el) {
		$(el).bind('click', function(){
			var r = $(el).attr('rel');
			r = $.trim(r).split('|');
			showCheck($(el).parent().find('img.status'));
			saveData(r[0],r[1],r[2],$(this).val());
		});
	});
}
// записва данните на полето през ajax
function saveData(step, identifier, itt, value) {
	$.ajax({
		url: "/_request.php?function=fieldsave&step="+step+"&identifier="+identifier+"&itt="+itt+"&value="+value,
		cache: false,
		success: function(msg){
			if (msg.length>0) $("#percent_complete").text(msg);
			//alert(msg);
		}
	});
	//alert('Step: '+step+'; ID: '+identifier+'; Itteration: '+itt+'; Value: '+value)
}

// премахва поле и записва данните без него през ajax
function removeData(step, identifier, itt, value) {
	$.ajax({
		url: "/_request.php?function=fieldsave&remove=1&step="+step+"&identifier="+identifier+"&itt="+itt+"&value="+value,
		cache: false,
		success: function(msg){
			if (msg.length>0) alert(msg);
		}
	});
	//alert('Step: '+step+'; ID: '+identifier+'; Itteration: '+itt)
}

function showObj(id, style){
	if (id) {
		if (typeof(id) == 'object' && id) {
			id.style.visibility = "visible";
			id.style.display = style ? style : "block";
		} else if (obj = document.getElementById(id)) {
			obj.style.visibility = "visible";
			obj.style.display = style ? style : "block";
		}
	}
}
		
function hideObj(id){
	if (id) {
		if (typeof(id) == 'object' && id) {
			id.style.visibility = "hidden";
			id.style.display = "none";
		} else if (obj = document.getElementById(id)) {
			obj.style.visibility = "hidden";
			obj.style.display = "none";
		}
	}
}

function showHint(iObj, top, left) {
	pos=iObj.offset();
	$("#formHint").css({
		'display':'block',
		'top':(parseInt(pos.top)+top)+'px',
		'left':(parseInt(pos.left)+left)+'px'
	});
}

/* Vehicle Functions */
function selectCarMake(year, make) {
	// имаме избрана година и производител
	
	// изчистваме падащите менюта за
	// модел и подмодел
	$("select#field_car_model option[value!='0']").remove(); 
	$("select#field_car_submodel option[value!='0']").remove();
	// изваждаме моделите за избраната година и производител
	$('select#field_car_model').load('/_request.php?function=carmodel&year='+year+'&make='+make);
}

function selectCarModel(year, make, model) {
	// имаме избрана година, производител и модел
	
	// изчистваме падащите менюта за
	// подмодел
	$("select#field_car_submodel option[value!='0']").remove();
	// изваждаме моделите за избраната година и производител
	$('select#field_car_submodel').load('/_request.php?function=carsubmodel&year='+year+'&make='+make+'&model='+model);
}

function dialogSaveQuote() {
	$("#dialog").dialog({
		modal: true,
		minWidth: 400,
		closeOnEscape: true,
		beforeclose: function(event, ui) {
			$("#sqd-home").removeClass("hide").addClass("show");
			$("#sqd-email").removeClass("show").addClass("hide");
			$("#sqd-message").removeClass('success_message error_message').text('');
		}
	})
}

function dialogSaveQuoteButton() {
	var emailCheck = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i,
		passCheck = /^([0-9a-zA-Z])+$/,
		emailVal = $("#sqdf-email").val(),
		passwordVal = $("#sqdf-password").val(),
		message = $("#sqd-message");
	if (emailCheck.test(emailVal) && passCheck.test(passwordVal)) {
		message.removeClass('error_message').addClass('success_message');
		message.text('Email address and password accepted, proceeding...');
		$.ajax({
			url: '/_request.php?function=save_quote&email='+emailVal+'&password='+passwordVal,
			success: function(data) {
				message.html(data);
				setTimeout(function() {
					location.href='/';
				}, 3000);
			}
		});
	} else {
		message.removeClass('success_message').addClass('error_message');
		message.text('Sorry, but the email address or password are invalid, please enter valid data and try again!');
	}
}

function dialogLoadQuote() {
	$("#dialog").dialog({
		modal: true,
		minWidth: 400,
		closeOnEscape: true,
		beforeclose: function(event, ui) {
			$("#sqd-home").removeClass("hide").addClass("show");
			$("#sqd-email").removeClass("show").addClass("hide");
			$("#sqd-message").removeClass('success_message error_message').text('');
		}
	})
}
function dialogLoadQuoteButton() {
	var emailVal = $("#sqdf-email").val(),
		passwordVal = $("#sqdf-password").val(),
		message = $("#sqd-message");
	$.ajax({
		url: '/_request.php?function=load_quote&action=list&email='+emailVal+'&password='+passwordVal,
		success: function(data) {
			if (data>0) {
				// зареждането е успешно, пренасочваме потребителя към нужната стъпка
				// стъпката е изпратена през променлива data
				message.removeClass('error_message').addClass('success_message');
				message.text('Email address and password accepted, proceeding...');
				setTimeout(function() {
					location.href='/quote/step'+data+'/';
				}, 3000);
			} else {
				if (data==0) {
					// има проблем със зареждането, показваме грешка
					message.removeClass('success_message').addClass('error_message');
					message.text('Sorry, but the email address or password are invalid, please enter valid data and try again!');
				} else {
					// трябва да заредим списък с бланките попълнени от този потребител
					message.removeClass('error_message success_message');
					message.html(data);
				}
			}
		}
	});
}
function dialogLoadQuoteList(uid) {
	var message = $("#sqd-message");
	$.ajax({
		url: '/_request.php?function=load_quote&action=load&uid='+uid,
		success: function(data) {
			if (data>0) {
				// зареждането е успешно, пренасочваме потребителя към нужната стъпка
				// стъпката е изпратена през променлива data
				message.removeClass('error_message').addClass('success_message');
				message.text('Quote chosen and loaded, proceeding...');
				setTimeout(function() {
					location.href='/quote/step'+data+'/';
				}, 3000);
			} else {
				// има проблем със зареждането, показваме грешка
				message.removeClass('success_message').addClass('error_message');
				message.text('Sorry, but the quote cannot be loaded, please try another quote!');
			}
		}
	});
}

function dialogLoadQuoteCookie() {
	var message = $("#sqd-message");
	$.ajax({
		url: '/_request.php?function=load_quote&action=cookie',
		success: function(data) {
			if (data>0) {
				// зареждането е успешно, пренасочваме потребителя към нужната стъпка
				// стъпката е изпратена през променлива data
				message.removeClass('error_message').addClass('success_message');
				message.text('Quote chosen and loaded, proceeding...');
				setTimeout(function() {
					location.href='/quote/step'+data+'/';
				}, 3000);
			} else {
				// има проблем със зареждането, показваме грешка
				message.removeClass('success_message').addClass('error_message');
				message.text('Sorry, but the quote cannot be loaded, please try another quote!');
			}
		}
	});
}
