// JavaScript Document

if(!Array.indexOf){
	Array.prototype.indexOf = function(obj) {
		for(var i=0; i<this.length; i++){
			if(this[i]==obj){
				return i;
			}
		}
		return -1;
	}
}

function assegnaXMLHttpRequest() {

// lista delle variabili locali
var
 // variabile di ritorno, nulla di default
 XHR = null,
 
 // informazioni sul nome del browser
 browserUtente = navigator.userAgent.toUpperCase();


 // browser standard con supporto nativo
 // non importa il tipo di browser
 if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
  XHR = new XMLHttpRequest();

 // browser Internet Explorer
 // ÃƒÂ¨ necessario filtrare la versione 4
 else if(
  window.ActiveXObject &&
  browserUtente.indexOf("MSIE 4") < 0
 ) {
 
  // la versione 6 di IE ha un nome differente
  // per il tipo di oggetto ActiveX
  if(browserUtente.indexOf("MSIE 5") < 0)
   XHR = new ActiveXObject("Msxml2.XMLHTTP.3.0");

  // le versioni 5 e 5.5 invece sfruttano lo stesso nome
  else
   XHR = new ActiveXObject("Microsoft.XMLHTTP");
 }

 return XHR;
}

function objSearch(obj, key) {
	var value = "";
	var res = false;
	for(var item in obj) {
		value = obj[item];
		if (item == key) {
			return value;
		} else if (typeof(value) == 'object') {
			if ((res = objSearch(value, key)) != false) {
				return res;
			}
		}
	}
	return res;
}

function step_2(mode) {
	var ajaxType = "POST";
	var ajaxTarget = "ordinazione.php";
	
	var errmsg = new Array();
	var sel = new Array();
	var nome = "";
	var form = document.ricercasemplice;
	var ind = form.indirizzo.value;
	if (mode == "normale" && ind.length < 3) {
		errmsg.push("Inserisci un indirizzo");
	} else if (ind.toLowerCase().indexOf("ital") < 1) {
		ind += ", Italia";
	}
	if ($("#ricercasel").css("display") == "block") {
		for (counter = 0; counter < form.check_1.length; counter++) {
			if (form.check_1[counter].checked) {
				sel.push(form.check_1[counter].value);
			}
		}
		if (sel.length < 1) {
			errmsg.push("Seleziona almeno una categoria");
		}
	}
	if ($("#ricercalocale").css("display") == "block") {
		var min = 3;
		nome = escape(form.nomelocale.value);
		if (nome.length < min) {
			errmsg.push("Inserisci almeno "+min+" caratteri nel nome del locale per iniziare la ricerca");
		}
	}
	if (errmsg != "") {
		alert(errmsg.join("\n\n"));
		// form.indirizzo.focus();
	} else if (mode != "normale") {
		var dati = "";
		if (mode == "preferiti") {
			dati = 
				"indirizzo[id]=" + $("#indirizzo-select").val() +
				"&sel=" + sel.toString()
			;
		} else if (mode == "nomelocale") {
			dati = "nomelocale=" + nome;
		}
		if (dati) {
			$.ajax({
				type: ajaxType,
				url: ajaxTarget,
				data: dati,
				beforeSend: loadCenter(),
				success: function(msg, status) {
					ordinazioneSuccess(msg);
				}
			});
		}
	} else {
		var ind = form.indirizzo.value;
		var geocoder;
		geocoder = new GClientGeocoder();
		geocoder.getLocations(ind, function(msg) {
			if (msg.Status.code == '200') {
				var address = msg.Placemark[0].address;
				var way = objSearch(msg, "ThoroughfareName");
				if (!way) {
					alert("Inserisci una via per iniziare la ricerca");
				} else {
					way = way.split(",");
					var city = objSearch(msg, "LocalityName");
					var provincia = objSearch(msg, "SubAdministrativeAreaName");
					var cap = objSearch(msg, "PostalCodeNumber");
					var civico = ind.replace(cap,"").match(/\d+[\/\-]?(\w{1,5})?/gi);
					if (civico) {
						civico = civico[civico.length - 1];
					}
					// Check delle citta' in cui siamo
					// if (citta.indexOf(provincia) < 0) {
						// alert("L'indirizzo trovato:\n\n"+address+"\n\nappartiene ad una provincia ("+provincia+") in cui non siamo presenti"); 
					// } else {
					var p1 = msg.Placemark[0].Point.coordinates[1];
					var p2 = msg.Placemark[0].Point.coordinates[0];
					$.ajax({
						type: ajaxType,
						url: ajaxTarget,
						data:
							"indirizzo[via]=" + way[0] +
							"&civico=" + civico +
							"&indirizzo[cap]=" + cap +
							"&indirizzo[comune]=" + city +
							"&indirizzo[provincia]=" + objSearch(msg, "SubAdministrativeAreaName") +
							"&point=(" + p1 + "," + p2 + ")" + 
							"&sel=" + sel.toString(),
						beforeSend: loadCenter(),
						success: function(msg, status) {
							ordinazioneSuccess(msg);
						}
					});
				}
			} else {
				alert("Indirizzo non trovato:\n\n" + objSearch(msg, "name"));
			}
		});

    }
	return false;
}

function ordinazioneSuccess(html) {
	$("#centro").html(html);
}

function contenuto_div_post_ajax(url,id,p) {
  if (url.substring(0, 4) != 'http' || 
	  url.substring(0, 5) != 'https' ||
	  url.substring(0, 3) != 'ftp' ||
	  url.substring(0, 3) != 'mms') {
  var ajax = assegnaXMLHttpRequest();
  if(ajax) {
   	ajax.open("POST", url , true);
   	ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
   	ajax.setRequestHeader("Content-length", p.length);
   	ajax.setRequestHeader("connection", "close");
   	ajax.onreadystatechange = function() {
  
      // verifica dello stato
      if(ajax.readyState === 4) {
		  if (ajax.status == 200 || ajax.status == 0) {
			  document.getElementById(id).innerHTML = ajax.responseText;
		  } else { document.getElementById(id).innerHTML= "At the moment, information are not available. Try to refresh the page."; } 
	  }
    } 
   ajax.send(p);
 }
  } else { alert("URL unsafe"); }
}

function updateCart(dati) {
	$.ajax({
		url: "riempi_carrello.php",
		data:
			"campanello=" + $("#campanello").val() +
			"&piano=" + $("#piano").val() +
			"&telefono=" + $("#telefono").val() + 
			"&ora_consegna=" + $("#ora_consegna").val() +
			"&civico=" + $("#civico").val() +
			"&indirizzocarrello=" + $("#indirizzocarrello").val() +
			"&" + dati,
		beforeSend: loadCart(),
		success: function(msg) {
			updateCarrello(msg);
		}
	});
}

function saveShipment() {
	$.ajax({
		url: "riempi_carrello.php",
		data:
			"campanello=" + $("#campanello").val() +
			"&piano=" + $("#piano").val() +
			"&telefono=" + $("#telefono").val() + 
			"&ora_consegna=" + $("#ora_consegna").val() +
			"&civico=" + $("#civico").val() +
			"&indirizzocarrello=" + $("#indirizzocarrello").val()
	});
}

function updateCarrello(msg) {
	var carrello = $('#carrello');
	$('#news, #news_header, #news_footer').hide();
	if (carrello.css("display") != "block") {
		carrello.show();
	}
	$.ajax({
		url: "random_banner.php",
		success: function(msg){
			$("#sbbanners").html(msg);
		}
	});
	carrello.html(msg);
}

function fixSidebar() {
	$("#sidebar").css({
		"left" : $("#centro").position().left + $("#centro").width() + 30,
		"position" : "fixed"
	});
}

function loadCenter() {
	$("#center-loading").height($("#centro").height());
	if ($.browser.msie) {
		$("#center-loading").show();
	} else {
		$("#center-loading").fadeIn(100);
	}
}

function loadCart() {
	$("#carrello-loading").height($("#carrello").height());
	if ($.browser.msie) {
		$("#carrello-loading").show();
	} else {
		$("#carrello-loading").fadeIn(100);
	}
}

function addToCart(el) {
	$.ajax({
		url: "riempi_carrello.php",
		data:
			"campanello=" + $("#campanello").val() +
			"&telefono=" + $("#telefono").val() + 
			"&ora_consegna=" + $("#ora_consegna").val() +
			"&civico=" + $("#civico").val() +
			"&piatto=" + $(el).attr("href").split("#")[1] +
			"&quantita=1",
			// "&quantita=" + $("#quantita"+$(el).attr("id")).val(),
		beforeSend: loadCart(),
		success: function(msg) {
			updateCarrello(msg);
		},
		error: function() {
			$("#carrello-loading").hide();
		}
	});
	return false;
}

function localeToggle(link) {
	var
		subject = "." + link.attr("href").split("#")[1].split("-")[0],
		online = link.attr("href").split("#")[1].split("-")[1].replace("online","")
	;
	if (online == 1) {
		$(".risultati .colmenu").slideUp("fast", function(){
			$("#sidebar").css("margin-top", Math.max($(window).scrollTop()-160, -12) + "px");
		});
		if ($(subject).css("display") == "none") {
			$(subject).find(".menu_categoria div").each(function(){
				$(this).show();
			});
			$(subject).slideDown("fast");
			loadCarrello(subject);
		} else {
			$(subject).slideUp();
		}
	} else {
		var width = link.attr("rev");
		window.open(
			"carica_menu.php?image=1&id_locale="+subject.replace(".menu",""),
			"Menu",
			"width="+width+",height=600,scrollbars=yes"
		);
		// loadCarrello(subject);
	}
}

function loadCarrello(subject) {
	$.ajax({
		url: "riempi_carrello.php",
		data: "locale=" + subject.replace(".menu", ""),
		beforeSend: loadCart(),
		success: function(msg) {
			updateCarrello(msg);
		},
		error: function() {
			$("#carrello-loading").hide();
		}
	});
}

function gotoLocale(nome) {
	$("#nomelocale").val(nome);
	$("#ricercasemplice").submit();
	return false;
}

var suggest = function (func, timer) {
	return suggest.fn.init(func, timer);
};

suggest.fn = {
	timeout: null,
	timer: 1000,
	
	init: function(func, timer) {
		if (!func) {
			return this;
		}
		var t = this;
		if (t.timeout) {
			clearTimeout(t.timeout);
		}
		t.timeout = setTimeout(function(){
			func();
			t.timeout = null;
		}, timer ? timer : t.timer);
	}
};

function mask() {
	var mask = $("#mask");
	if (mask.css("display") != "block") {
		var maskHeight = $(document).height();
		var maskWidth = $(window).width();
	
		mask.css({
			"width": maskWidth,
			"height": maskHeight
		});
		mask.show();
		mask.fadeTo("fast",0.7);
	} else {
		mask.hide();
	}
}

$(function(){
	$(".news").jCarouselLite({
		visible: 2,
		speed: 1200,
		vertical: true,
		circular: false,
		easing: "meglio",
		btnNext: "#nextNews",
		btnPrev: "#prevNews"
	});
	$("#login_box a").click(function(){
		if ($(this).attr("id") != "logout") {
			loadCenter();
			$("#centro").load( $(this).attr("href") );
			return false;
		}
	});
	$("#mask").click(function(){
		$("#mask").hide();
		$("div[id$='-modal']").hide();
		return false;
	});
});