// JavaScript Document
/*
	tagliavini daniele asrael
	daniele.tagliavini@mindagency.com
*/

jQuery(document).ready(function($) {

	$formTarget = "_blank";  // possible values  : embedded, _blank)

	// VALIDATION RULES
	$rules_natale = {	nome: { required: true, minlength: 2 },
						localita_nas: { required: true, minlength: 2 },
						localita_sel: { required: true },
						data_nascita: { validDate : true },
						ora_nascita: { validTime: true }
						};
	$messages_natale = { nome: { required: "Per favore, inserisci il tuo nome", minlength: "Il tuo nome deve essere almeno 2 caratteri"},
						localita_nas: { required: "Per favore inserisci la tua località di nascita", minlength: "La città deve essere almeno di 2 caratteri" },
						localita_sel: { required: "Per favore seleziona la località precisa" },
						data_nascita: { validDate: "La data non è valida"},
						ora_nascita: { validTime: "L'ora non è valida" }
						};

	$rules_coppia =	{	localita_nas2: { required: true, minlength: 2 },
						localita_sel2: { required: true },
						data_nascita2: { validDate : true },
						ora_nascita2: { validTime: true }
						};
	$messages_coppia = { localita_nas2: { required: "Per favore inserisci la tua località di nascita", minlength: "La città deve essere almeno di 2 caratteri"},
						localita_sel2: { required: "Per favore seleziona la località precisa" },
						data_nascita2: { validDate: "La data non è valida"},
						ora_nascita2: { validTime: "L'ora non è valida"}
						};

	// autcomplete field with same settings
	$form_natale	= { "natale" : {
											"loc_nas"	:	"#localita_nas",
											"loc_sel"	:	"#localita_sel",
											"loadsnake"	:	"#snake",
											"data_dd"	:	"#data_dd",
											"data_mm"	:	"#data_mm",
											"data_yy"	:	"#data_yy",
											"ora_hh"	:	"#ora_hh",
											"ora_mm"	:	"#ora_mm",
											"data_nas"	:   "#data_nascita",
											"ora_nas"	:   "#ora_nascita"
											}
							};

	$form_coppia	= { "coppia" : {
											"loc_nas"	:	"#localita_nas2",
											"loc_sel"	:	"#localita_sel2",
											"loadsnake"	:	"#snake2",
											"data_dd"	:	"#data_dd2",
											"data_mm"	:	"#data_mm2",
											"data_yy"	:	"#data_yy2",
											"ora_hh"	:	"#ora_hh2",
											"ora_mm"	:	"#ora_mm2",
											"data_nas"	:   "#data_nascita2",
											"ora_nas"	:   "#ora_nascita2"
											}
							};


	// SETTINGS FOR NATALE O COPPIA
	$type = $("#themeForm #type").val();
	if($type=="natale") {
		$settings	= $form_natale;
		$rules		= $rules_natale;
		$messages	= $messages_natale;
	}
	else {
		$settings	= jQuery.extend($form_natale, $form_coppia);
		$rules		= jQuery.extend($rules_natale, $rules_coppia);
		$messages	= jQuery.extend($messages_natale, $messages_coppia);
	}

	jQuery.each($settings, function(type, listField) {
		$($settings[type]["loc_nas"]).keyup(function (event) {
			if (event.keyCode != 13) {
				if($($settings[type]["loc_nas"]).val().length>=2) {
					$($settings[type]["loadsnake"]).show();
				}
				if($($settings[type]["loc_nas"]).val().length>=20) {
					alert("Non stai premendo un pò troppi tasti?")
					$($settings[type]["loc_nas"]).val("");
				}
			}
		});
		$($settings[type]["loc_nas"]).blur(function () {
			$($settings[type]["loadsnake"]).hide();
		});

		$($settings[type]["loc_nas"]).autocomplete("/external/cities.php", {
			cacheLength: 10,
			minChars: 2,
			max: 50,
			scrollHeight: 220,
			formatItem: formatItem,
			formatResult: formatResult
		}).result(function(event, row, formatted) {
			$($settings[type]["loadsnake"]).hide();
			$($settings[type]["loc_sel"]).html("<option value=\""+row[3]+":"+row[2]+":"+row[4]+":"+row[0]+":"+row[1]+":"+row[0]+":"+row[5]+"\">"+row[1]+"-"+row[0]+" ("+row[2]+"-"+row[3]+")</option");
			$($settings[type]["loc_nas"]).val(row[1] + " (" + row[0] + ")");
		});
	});


	// add a method for each type

	$.validator.addMethod("validDate",
		function(value, element) {
			var valid = true;
			switch(element.name) {
				case "data_nascita":
					var gg = $("#data_dd").val();
					var mm = $("#data_mm").val();
					var aa = $("#data_yy").val();
					break;
				case "data_nascita2":
					var gg = $("#data_dd2").val();
					var mm = $("#data_mm2").val();
					var aa = $("#data_yy2").val();
					break;
			}

			if(gg=="" || mm=="" || aa=="") {
				valid = false;
			}
				
			if (gg == 31 && ( mm == 4 || mm == 6 || mm == 9 || mm ==11 ) ) {
				valid = false;
			}
			if (( gg == 30 || gg == 31 ) && mm == 2 ) {
				valid = false;
			}
			if ( gg == 29 && mm == 2 ) {
				if ((aa % 4 == 0 && aa %100 != 0) || aa % 400 == 0)	{
					valid = true;
				} else {
					valid = false;
				}
		  	}

			return valid;
		}
	);

	$.validator.addMethod("validTime",
		function(value, element) {
		    var valid = false;
			switch(element.name) {
				case "ora_nascita":
					var hh = $("#ora_hh").val();
					var mm = $("#ora_mm").val();
					break;
				case "ora_nascita2":
					var hh = $("#ora_hh2").val();
					var mm = $("#ora_mm2").val();
					break;
			}
			if(hh=="" || mm=="") {
				valid = false;
			}
			else if(hh>=0 && hh<=23 && mm>=0 && mm<=59)
			    valid = true;
			return valid;
		}
	);
	
    $formDefaultSettings = {
		rules: $rules,
		messages: $messages
	};
	$formTargetSettings = {};

	if($formTarget == "embedded") {
		$("#ajaxPost").val("1");
		$formTargetSettings = {
			submitHandler: function() {
				$('#loading').show();
				$('#result').slideUp('slow', function() {
					$('#resultHtml').html();
				});
			}
		}
	};

	$validatorSettings = jQuery.extend($formDefaultSettings, $formTargetSettings);

	$numInvalid = 0;
	var validator = $("#themeForm").validate($validatorSettings);

//	$newWind = window.open("http://www.armonics2zero.it/external/popup.html", "mywindow", "status=1");

	if($formTarget == "embedded") {
		$("#themeForm").ajaxForm({
			// target identifies the element(s) to update with the server response
			target: '#resultHtml',
			beforeSubmit : function(form, jform, options) {
				if(validator.numberOfInvalids()>0) {
					return false;
				}
				// validate the comment form when it is submitted
				//   return $("#themeForm").validate().form();
			},
			// success identifies the function to invoke when the server response
			// has been received; here we apply a fade-in effect to the new content
			success: function(responseText) {
				$('#loading').hide();
				if(responseText == "error") {
	                alert('Il form ha generato degli errori!\nL\'errore è stato loggato per un controllo')
	                $('#resultHtml').html();
				}
				else {
					$('#result').slideDown('slow');
				}
			}
		});
	}

	function formatItem(row) {
		return row[1] + " (<strong>" + row[0] + "</strong>)";
	}

	function formatResult(row) {
		/* FORMAT 4 SELECT BOX
			45.28N:9.12E:-1:I:Milano:I:I1
			(latitudine:longitudine:fuso:nazione:citta:nazione:area)
			row : nazione|citta|longitudine|latitudine|fuso|area
		*/
		return row[1] + " (" + row[0] + ")";
	}
});