// Mappe per ristoranti
var geocoder;
var map;
function initialize(zoom) {
	geocoder = new google.maps.Geocoder();
	var latlng = new google.maps.LatLng(41.861379,12.524414);
	var myOptions = {
		zoom: zoom,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	}
	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}

function codeAddress(address, address_alternative) {
	if (geocoder) {
		geocoder.geocode( { 'address': address},
			function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {
					map.setCenter(results[0].geometry.location);
					var marker = new google.maps.Marker({
						map: map, 
						position: results[0].geometry.location
					});
				} else {
					if( address_alternative ) {
						codeAddress(address_alternative);
					} else {
						alert("Geocode was not successful for the following reason: " + status);
					}
				}
			}
		);
	}
}

// JavaScript Document
function init(id_elemento,tipo_elemento) {
	new Ajax.Request('ajax/conta.php', {
		parameters: 'id_elemento='+id_elemento+'&tipo_elemento='+tipo_elemento
	});
}

function printWindow(){
	browserVersion = parseInt(navigator.appVersion)
	if (browserVersion >= 4) window.print()
}

function invia_codice(email) {
	var emailFilter=/^([^ ][a-zA-Z0-9_\.\-]+)\@(([a-zA-Z0-9\-]+)\.)+([a-zA-Z0-9]{2,4})$/;

	if(email.value && emailFilter.test(email.value)) {
		new Ajax.Updater('email_captcha', '/ajax/captcha_generator_via_email.php', {parameters: { email: email.value } });
		//email.disable();
		Effect.Appear('email_captcha');
	}
}

function set_tag_ricetta(id_ricetta, id_tag) {
	new Ajax.Request('/ajax/set_tag_ricetta.php', {
		onComplete: function(transport) {
			id_ricetta_tag = transport.responseText;
			$('tag_'+id_tag).setAttribute("onclick", "return unset_tag_ricetta('"+id_ricetta_tag+"','"+id_ricetta+"','"+id_tag+"')");
			$('tag_'+id_tag).setAttribute("class", "selezionato");
			Effect.Fade('tag_'+id_tag, { from: 1, to: 0.6, duration: 0.3 });
		},
		parameters: 'id_ricetta='+id_ricetta+'&id_tag='+id_tag
	});
	return false;
}

function unset_tag_ricetta(id_ricetta_tag, id_ricetta, id_tag) {
	new Ajax.Request('/ajax/unset_tag_ricetta.php', {
		parameters: 'id_ricetta_tag='+id_ricetta_tag
	});
	$('tag_'+id_tag).setAttribute("onclick", "return set_tag_ricetta('"+id_ricetta+"','"+id_tag+"')");
	Effect.Fade('tag_'+id_tag, { from: 0.6, to: 1, duration: 0.3 });
	$('tag_'+id_tag).removeAttribute("class");
	return false;
}

function get_tag(id_ricetta) {
	if($('tag_ricetta_container').style.left == "" || $('tag_ricetta_container').style.left == "-351px") {
		if( $('tag_ricetta_content').innerHTML == "") {
			new Ajax.Updater('tag_ricetta_content', '/ajax/get_tag.php', {
				parameters: 'id_ricetta='+id_ricetta
			});
		}
		new Effect.Move('tag_ricetta_container', { x: 351, y: 0, mode: 'relative', transition: Effect.Transitions.sinoidal});
	} else {
		new Effect.Move('tag_ricetta_container', { x: -351, y: 0, mode: 'relative', transition: Effect.Transitions.sinoidal});
	}
	return false;
}

function invia_variante_ricetta() {
	var emailFilter=/^([^ ][a-zA-Z0-9_\.\-]+)\@(([a-zA-Z0-9\-]+)\.)+([a-zA-Z0-9]{2,4})$/;

	if($('nome').value && $('userSecurityCode').value && $('preparazione_variante').value && (!$('email').value || emailFilter.test($('email').value))) {
		$('invia_variante_ricetta').request(
		{
            onSuccess: function(req) {
                if(req.responseText.match(/Wrong security code/)) {
					alert("Verifica il codice di sicurezza che ti abbiamo inviato.");
				} else {
					location.href = "grazie_per_il_suggerimento_"+$('id_ricetta').value+".htm";
				}
			}
		});
    } else {
		warning_message = "Compila correttamente tutti i campi: \n";
		if(!$('nome').value) {
			warning_message += "\t- inserisci il nome\n";
		}
		if(!$('email').value) {
			warning_message += "\t- inserisci l'e-mail\n";
		}
		if(!$('preparazione_variante').value) {
			warning_message += "\t- scrivi la procedura di preparazione\n";
		}
		if($('email').value && !emailFilter.test($('email').value)) {
			warning_message += "\t- inserisci un indirizzo e-mail valido\n";
		}
		if($('userSecurityCode') && !$('userSecurityCode').value) {
			warning_message += "\t- inserisci il codice di verifica (anti-spam)";
		}
		alert(warning_message);
	}
}

function invia_commento_beta(ricetta, url) {
	var emailFilter=/^([^ ][a-zA-Z0-9_\.\-]+)\@(([a-zA-Z0-9\-]+)\.)+([a-zA-Z0-9]{2,4})$/;

	if($('nome').value && $('commento').value && $('userSecurityCode').value && (!$('email').value || emailFilter.test($('email').value))) {
        $('commenta').request({
            onSuccess: function(req) {
                if(req.responseText.match(/Già inserito/)) {
                	if($('status')) {
						$('status').innerHTML='Hai già inviato il tuo commento! Collegati al <a href=\'commenti_su_' + url + '.htm\'>forum dedicato a ' + ricetta + '</a> per vederlo (se non lo vedi, <strong>aggiorna la pagina nel tuo browser</strong>). Grazie!';
						location.href = "commenti_su_" + url + ".htm";
					} else {
						alert('Hai già inviato il tuo commento!\nSe non lo vedi, prova ad aggiornare la pagina nel tuo browser (tasto F5 del tuo browser).\nGrazie!');
					}
					$('commenta').disable();
				} else if(req.responseText=='') {
                	alert('Verifica che il campo con il codice di sicurezza sia corretto!');
					$('userSecurityCode').focus();
                } else {
					if($('lista_commenti')) {
						$('lista_commenti').innerHTML=req.responseText+$('lista_commenti').innerHTML;
						jQuery('.new').corner();
					} else if($('niente')) {
						$('niente').replace('<ul id="lista_commenti">'+req.responseText+'</ul>');
					} else if($('status')) {
						$('status').innerHTML='Messaggio inviato. Collegati al <a href=\'commenti_su_' + url + '.htm\'>forum dedicato a ' + ricetta + '</a> per vederlo. Grazie!';
						location.href = "commenti_su_" + url + ".htm";
					}
					$('commenta').disable();
					$('riabilita').appear();
					$('riabilita').enable();
					//self.location.hash='discussioni';
				}
            }
        });
    } else {
		warning_message = "Compila correttamente tutti i campi: \n";
		if(!$('nome').value) {
			warning_message += "\t- inserisci il nome\n";
		}
		if(!$('commento').value) {
			warning_message += "\t- inserisci il commento\n";
		}
		if(!$('userSecurityCode').value) {
			warning_message += "\t- inserisci il codice di sicurezza (anti-spam)\n";
		}
		if($('email').value && !emailFilter.test($('email').value)) {
			warning_message += "\t- inserisci un indirizzo e-mail valido. Se non vuoi ricevere gli avvisi di risposta via e-mail puoi lasciare questo campo vuoto";
		}
		alert(warning_message);
	}
}

function br2nl(str) {
	mod_str = str.replace(/[ ]*<br>[ ]*/g,"\r\n");
	return mod_str;
}

function apri_e_stampa(indirizzo) {
	window.open(indirizzo, 'stampa', 'width=800,height=700')
}

function chiudi(){
	window.close()
}

function stampa(){
	browserVersion = parseInt(navigator.appVersion)
	if (browserVersion >= 4) window.print()
}
function fbs_click() {
	u=location.href;
	t=document.title;
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
	return false;
}

function tw_click(href) {
	window.open(href,'sharer_tw','toolbar=0,status=0,width=626,height=436');
	return false;
}

function correggi_regione(id_ricetta) {
	if($('container_ajax')) {
		Effect.BlindDown('container_ajax');
		new Ajax.Updater("container_ajax", "/ajax/correggi_regione.php", {
			parameters: {
				id_ricetta: id_ricetta
			}
		});
	}
}

function set_regione_suggerita(id_ricetta, id_regione_suggerito) {
	if($('id_regione_suggerito').value != 0 && $('userSecurityCode').value) {
		$('correggi_regione').request({
            onSuccess: function(req) {
                if(req.responseText.match(/Wrong security code/)) {
					alert("Verifica il codice di sicurezza.");
				} else {
					location.href = "grazie_della_correzione_"+id_regione_suggerito+"-"+id_ricetta+".htm";
				}
			}
		});
	} else {
		warning_message = "Compila correttamente tutti i campi: \n";
		if($('id_regione_suggerito').value == 0) {
			warning_message += "\t- seleziona una regione o nazione\n";
		}
		if(!$('userSecurityCode').value) {
			warning_message += "\t- inserisci il codice di sicurezza (anti-spam)\n";
		}
		alert(warning_message);		
	}
}

function checkForm(form) {
	var emailFilter=/^([^ ][a-zA-Z0-9_\.\-]+)\@(([a-zA-Z0-9\-]+)\.)+([a-zA-Z0-9]{2,4})$/;
	var error_msg = "";
	for ( var i=0;i<form.length;i++ ) {
		
		var campo = form.elements[i];
		var titolo = campo.title;
		var valore = campo.value;
		var classe = campo.className;
		var nome_campo = campo.name;
		var tipo = campo.type;
		var tag = campo.tagName;
		
		if(tipo != "hidden" && tag != "FIELDSET") {
			//alert(classe + " " + nome_campo);
			if(classe.search(/obbligatorio/i) > -1) {
				/*
				 * Campi con valore utente.
				 */
				if( valore == "" ) {
					if(titolo == "") {
						error_msg += "Completa correttamente il campo " + nome_campo + ".\n";
					} else {
						error_msg += titolo + ".\n";
					}
				} else {
					/*
					 * Controllo sul valore
					 * 	      * * *
					 * Campo di tipo e-mail
					 */					
					if( nome_campo == "email" ) {
						if( !emailFilter.test(valore) ) {
							error_msg += "L'e-mail inserita non è in formato valido: "
							if(classe.search(/obbligatorio/i) > -1) {
								error_msg += "è OBBLIGATORIA e deve essere corretta.\n";
							} else {
								error_msg += "NON E' OBBLIGATORIO l'inserimento, quindi è possibile lasciare vuoto questo campo.\n";
							}
						}
					}
					
					/*
					 * Gestione campi di tipo intero.
					 */
					if( classe.search(/input_int/i) > -1 ) {
						if( !isInteger(valore) ) {
							if(titolo == "") {
								error_msg += "Completa correttamente il campo " + nome_campo;
							} else {
								error_msg += titolo;
							}
							error_msg += ": è RICHIESTO un numero intero.\n";
						}
					}
					
					/*
					 * Gestione campi di tipo diverso: checkbox, radio, ecc...
					 */
					if( tipo == "checkbox" && !campo.checked ) {
						error_msg += "Devi accettare le condizioni del campo " + nome_campo + "\n";
					}
					
				}
			}
			

		}
	}
	
	if(error_msg) {
		alert(error_msg);
		return false;	
	} else {
		return true;
	}
}

function isInteger(value) {
	var integer = /^\d+$/;
	return integer.test(value)
}

if( eval('(typeof(Effect) != "undefined");') ) {
	Effect.BlindRight = function(element) {
	  element = $(element);
	  var elementDimensions = element.getDimensions();
	  return new Effect.Scale(element, 100, Object.extend({
		scaleContent: false,
		scaleY: false,
		scaleFrom: 0,
		scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
		restoreAfterFinish: true,
		afterSetup: function(effect) {
		  effect.element.makeClipping().setStyle({
			width: '0px',
			height: effect.dims[0] + 'px'
		  }).show();
		},
		afterFinishInternal: function(effect) {
		  effect.element.undoClipping();
		}
	  }, arguments[1] || { }));
	};
	
	
	Effect.BlindLeft = function(element) {
	  element = $(element);
	  element.makeClipping();
	  return new Effect.Scale(element, 0,
		Object.extend({ scaleContent: false,
		  scaleY: false,
		  scaleMode: 'box',
		  scaleContent: false,
		  restoreAfterFinish: true,
		  afterSetup: function(effect) {
			effect.element.makeClipping().setStyle({
			  height: effect.dims[0] + 'px'
			}).show();
		  },
		  afterFinishInternal: function(effect) {
			effect.element.hide().undoClipping();
		  }
		}, arguments[1] || { })
	  );
	};
}