$(document).ready(function() {
	//$('#smprogramma').mouseout(function() {
	//	$('#smprogramma').slideUp(500)
	//});
	getFlickrPhotos();
	getYouTubeVideos();
});

function showMenu(arg) {
	switch(arg) {
		case 'programma':
			$('#smfilm').hide();
			$('#smprogramma').slideDown(500);
			setTimeout('$(\'#smprogramma\').slideUp(500)', 10000);
			break;
		case 'film':
			$('#smprogramma').hide();
			$('#smfilm').slideDown(500);
			setTimeout('$(\'#smfilm\').slideUp(500)', 10000);
			break;
	}
}

// -------------- FUNZIONI VARIE -------------- 

function getElementsByClassName(oElm, strTagName, strClassName) {
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements);
}

function getById(arg) {
	return document.getElementById(arg);
}

function getByTagName(arg) {
	return document.getElementsByTagName(arg);
}

function getByClassName(arg1, arg2, arg3) {
	return getElementsByClassName(arg1, arg2, arg3);
}

function createReq() {
	var newReq;
	if (window.XMLHttpRequest) {
		newReq = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		newReq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return newReq;
}

function getCode(url, divId, oldClass, waitClass, waitCode, method, reqC) {

	this.url = url.toLowerCase();
	this.divId = divId;
	this.oldClass = oldClass;
	this.waitClass = waitClass;
	this.waitCode = waitCode;
	this.method = method.toUpperCase();;

	this.reqC = reqC;

	this.startGet = startGet;
	this.makeReq = makeReq;
	this.loadText = loadText;

	function startGet() {
		getById(divId).className != null ? oldClass = getById(divId).className : oldClass = "";
		getById(divId).className = waitClass;
		getById(divId).innerHTML = waitCode;
		makeReq(url);
	}

	function makeReq(arg) {
		var urlc = "";
		try {
			if(arg.indexOf("?") > -1)
				urlc = arg.replace('?', '?rnd=' + Math.floor(Math.random() * 100) + '&');
			else
				urlc = arg + '?rnd=' + Math.floor(Math.random() * 100);
			if (window.XMLHttpRequest) {
				//reqC = new XMLHttpRequest();
				reqC.onreadystatechange = loadText;
				if(method == 'GET') {
					reqC.open(method, urlc, true);
					reqC.send(null);
				}
				else if(method == 'POST') {
					var addr = urlc.substring(0, urlc.indexOf("?"))
					var vars = urlc.substring(urlc.indexOf("?") + 1, urlc.length)
					reqC.open(method, addr, true);
					reqC.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
					reqC.send(vars);
				}
			}
			else if (window.ActiveXObject) {
				//reqC = new ActiveXObject("Microsoft.XMLHTTP");
				reqC.onreadystatechange = loadText;
				if(method == 'GET') {
					reqC.open(method, urlc, true);
					reqC.send();
				}
				else if(method == 'POST') {
					var addr = urlc.substring(0, urlc.indexOf("?"))
					var vars = urlc.substring(urlc.indexOf("?") + 1, urlc.length)
					reqC.open(method, addr, true);
					reqC.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
					reqC.send(vars);
				}
			}
		}
		catch(tError) {
			alert( tError.name + ": " + tError.message);
		}
	}

	function loadText() {
		if (reqC.readyState == 4) {
			if (reqC.status == 200) {
				getById(divId).className = oldClass;
				getById(divId).innerHTML = reqC.responseText;
			}
		}
	}

}

function goSelectedURL(arg) {
	document.location = arg.options[arg.selectedIndex].value;
}

function mostraRighe(tabella_id, class_on, class_off) {
	var righe = getByClassName(getById(tabella_id), "tr", class_off);
	for(var i = 0; i < righe.length; i++) {
		righe[i].onmouseover = function() { this.className = class_on; }
		righe[i].onmouseout = function() { this.className = class_off; }
	}
}

String.prototype.trim = function() {
	return this.replace(/^\s+/, '').replace(/\s+$/, '');
};

String.prototype.escape_html = function() {
	return this.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
};

var unicodeC = new Array("&#34;", "&#39;", "&#38;", "&#60;", "&#62;", "&#160;", "&#161;", "&#164;", "&#162;", "&#163;", "&#165;", "&#166;", "&#167;", "&#168;", "&#169;", "&#170;", "&#171;", "&#172;", "&#173;", "&#174;", "&#8482;", "&#175;", "&#176;", "&#177;", "&#178;", "&#179;", "&#180;", "&#181;", "&#182;", "&#183;", "&#184;", "&#185;", "&#186;", "&#187;", "&#188;", "&#189;", "&#190;", "&#191;", "&#215;", "&#247;", "&#192;", "&#193;", "&#194;", "&#195;", "&#196;", "&#197;", "&#198;", "&#199;", "&#200;", "&#201;", "&#202;", "&#203;", "&#204;", "&#205;", "&#206;", "&#207;", "&#208;", "&#209;", "&#210;", "&#211;", "&#212;", "&#213;", "&#214;", "&#216;", "&#217;", "&#218;", "&#219;", "&#220;", "&#221;", "&#222;", "&#223;", "&#224;", "&#225;", "&#226;", "&#227;", "&#228;", "&#229;", "&#230;", "&#231;", "&#232;", "&#233;", "&#234;", "&#235;", "&#236;", "&#237;", "&#238;", "&#239;", "&#240;", "&#241;", "&#242;", "&#243;", "&#244;", "&#245;", "&#246;", "&#248;", "&#249;", "&#250;", "&#251;", "&#252;", "&#253;", "&#254;", "&#255;", "&#732;", "&#8230;", "&#8240;", "&#8249;", "&#8250;", "&#8364;");
var htmlC = new Array("&quot;", "&apos;", "&amp;", "&lt;", "&gt;", "&nbsp;", "&iexcl;", "&curren;", "&cent;", "&pound;", "&yen;", "&brvbar;", "&sect;", "&uml;", "&copy;", "&ordf;", "&laquo;", "&not;", "&shy;", "&reg;", "&trade;", "&macr;", "&deg;", "&plusmn;", "&sup2;", "&sup3;", "&acute;", "&micro;", "&para;", "&middot;", "&cedil;", "&sup1;", "&ordm;", "&raquo;", "&frac14;", "&frac12;", "&frac34;", "&iquest;", "&times;", "&divide;", "&Agrave;", "&Aacute;", "&Acirc;", "&Atilde;", "&Auml;", "&Aring;", "&AElig;", "&Ccedil;", "&Egrave;", "&Eacute;", "&Ecirc;", "&Euml;", "&Igrave;", "&Iacute;", "&Icirc;", "&Iuml;", "&ETH;", "&Ntilde;", "&Ograve;", "&Oacute;", "&Ocirc;", "&Otilde;", "&Ouml;", "&Oslash;", "&Ugrave;", "&Uacute;", "&Ucirc;", "&Uuml;", "&Yacute;", "&THORN;", "&szlig;", "&agrave;", "&aacute;", "&acirc;", "&atilde;", "&auml;", "&aring;", "&aelig;", "&ccedil;", "&egrave;", "&eacute;", "&ecirc;", "&euml;", "&igrave;", "&iacute;", "&icirc;", "&iuml;", "&eth;", "&ntilde;", "&ograve;", "&oacute;", "&ocirc;", "&otilde;", "&ouml;", "&oslash;", "&ugrave;", "&uacute;", "&ucirc;", "&uuml;", "&yacute;", "&thorn;", "&yuml;", "&tilde;", "&hellip;", "&permil;", "&lsaquo;", "&rsaquo;", "&euro;");
var charC = new Array("\"", "'", "&", "<", ">", "non-breaking space", "¡", "¤", "¢", "£", "¥", "¦", "§", "¨", "©", "ª", "«", "¬", "­soft hyphen", "®", "™", "¯", "°", "±", "²", "³", "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "×", "÷", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ", "˜", "…", "‰", "‹", "›", "€");

function htmlEncode(arg) {
	var sString = arg;
	for (i = 0; i < charC.length; i++) {
		sString = sString.replace(eval("/" + charC[i] + "/g"), htmlC[i]);
	}
	return(sString);
}

function addZero(arg) {
	if(arg < 10)
		return '0' + arg;
	else
		return arg.toString();
}

function delZero(arg) {
	var temp = arg;
	if(temp.length > 1) {
		while((temp.substring(0, 1) == '0') && (temp.length > 1))
			temp = temp.substring(1, temp.length);
		return(temp);
	}
	else return(temp);
}

function encodeDate(arg) {
	return(arg.getFullYear() + addZero(arg.getMonth()) + addZero(arg.getDate()));
}

function decodeDate(arg) {
	var temp = new Date();
	if(/([0-9]{4})([0-9]{2})([0-9]{2})/.test(arg)) {
		var giorno = delZero(RegExp.$3);
		var mese = delZero(RegExp.$2);
		var anno = RegExp.$1;
		temp.setFullYear(parseInt(anno), parseInt(mese), parseInt(giorno));
		return(temp);
	}
	else return(null);
}

function mMonth(arg) {
	var temp = new Date();
	var mese = arg.getMonth();
	var anno = arg.getFullYear();
	mese--;
	if(mese == -1) {
		mese = 11;
		anno--;
	}
	temp.setFullYear(anno, mese, arg.getDate());
	return(temp)
}

function pMonth(arg) {
	var temp = new Date();
	var mese = arg.getMonth();
	var anno = arg.getFullYear();
	mese++;
	if(mese == 12) {
		mese = 0;
		anno++;
	}
	temp.setFullYear(anno, mese, arg.getDate());
	return(temp)
}

var giorni = new Array("domenica", "lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato");
var mesi = new Array("gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre");

function show_hide() {
	for (var i = 0; i < arguments.length; i++) {
		if(i == 0)
			getById(arguments[i]).style.display = "block";
		else
			getById(arguments[i]).style.display = "none";
	}
}

function setCSSAttribute(arg, vv) {
	if(document.all)
		arg.style.cssText = vv;
	else
		arg.setAttribute("style", vv);
}

function getAbsoluteOffsetTop(obj) {
	var top = obj.offsetTop;
	var parent = obj.offsetParent;
	while (parent != document.body) {
		top += parent.offsetTop;
		parent = parent.offsetParent;
	}
	return top;
}

function getAbsoluteOffsetLeft(obj) {
	var left = obj.offsetLeft;
	var parent = obj.offsetParent;
	while (parent != document.body) {
		left += parent.offsetLeft;
		parent = parent.offsetParent;
	}
	return left;
}

function isArray(obj) {
	if($.browser.safari) { 
		if (obj instanceof Array)
			return true;
		else
			return false;
	}
	else {
		if (obj.constructor.toString().indexOf("Array()") > -1)
			return true;
		else
			return false;
	}
}

function makeArray(arg) {
	if(isArray(arg))
		return arg;
	else {
		temp = new Array();
		temp.push(arg);
		return temp;
	}
}

function getURLParam(strParamName){
	var strReturn = "";
	var strHref = window.location.href;
	if( strHref.indexOf("?") > -1 ){
		var strQueryString = strHref.substr(strHref.indexOf("?"));
		var aQueryString = strQueryString.split("&");
		for (var iParam = 0; iParam < aQueryString.length; iParam++){
			if(aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				break;
			}
		}
	}
	return unescape(strReturn);
}

function getScrollXY() { // calcola il valore dello scroll
	var scrOfX = 0, scrOfY = 0;
	if(typeof(window.pageYOffset) == 'number') {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [scrOfX, scrOfY];
}

function generaPassw(len) {
	var chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ0123456789';
	var passw = '';
	for(var i = 1; i <= len; i++) {
		var rand = Math.floor(Math.random() * chars.length);
		passw += chars.substr(rand, 1);
	}
	return passw.toLowerCase();
}

function cf_ospitalita(form) {

	if (form.nome.value.trim().length == 0) {
		alert("Indica un nome valido, grazie");
		form.nome.focus();
		return false
	}
	
	if (form.cognome.value.trim().length == 0 || form.cognome.value.trim().match(/[^\w ]/)) {
		alert("Indica un cognome valido, grazie");
		form.cognome.focus();
		return false
	}

	if (form.universita.value.trim().length == 0 || form.universita.value.trim().match(/[^\w ]/)) {
		alert("Indica un'universita' valida, grazie");
		form.universita.focus();
		return false
	}

	if (form.docente.value.length == 0 || form.docente.value.trim().match(/[^\w ]/)) {
		alert("Indica un nome e un cognome di un docente validi, grazie");
		form.docente.focus();
		return false
	}

	if (form.indirizzo.value.trim().length == 0 || form.indirizzo.value.trim().match(/[^\w ]/)) {
		alert("Indica un indirizzo valido, grazie");
		form.indirizzo.focus();
		return false
	}

	if (form.citta.value.trim().length == 0 || form.citta.value.trim().match(/[^\w ]/)) {
		alert("Indica una città valida, grazie");
		form.citta.focus();
		return false
	}

	if (form.telefono.value.trim().length == 0 || !form.telefono.value.trim().match(/^[0-9]*$/)) {
		alert("Indica un numero di telefono valido, solo numeri, senza caratteri di separazione, grazie");
		form.telefono.focus();
		return false
	}

	if (form.cellulare.value.length == 0 || !form.cellulare.value.trim().match(/^[0-9]*$/)) {
		alert("Indica un numero di cellulare valido, solo numeri, senza caratteri di separazione, grazie");
		form.cellulare.focus();
		return false
	}

	if (form.email.value.trim().length == 0 || !form.email.value.trim().match(/^\S+\@[\w-]+\.[\w\.-]+$/)) {
		alert("Indica un indirizzo email valido, grazie");
		form.email.focus();
		return false
	}

	if (form.arrivo.selectedIndex == 0 && form.pernottamento.checked) {
		alert("Indica una data di arrivo, grazie");
		form.arrivo.focus();
		return false
	}
	
	if (form.partenza.selectedIndex == 0 && form.pernottamento.checked) {
		alert("Indica una data di partenza, grazie");
		form.partenza.focus();
		return false
	}
	
	if (form.arrivo.value > form.partenza.value && form.pernottamento.checked) {
		alert("La data di partenza deve essere successiva alla data di arrivo, grazie");
		form.partenza.focus();
		return false
	}
	
	if (form.partenza.selectedIndex - form.arrivo.selectedIndex >= 2 && form.pernottamento.checked) {
		alert("Non puoi indicare un periodo superiore ai tre giorni, grazie");
		form.partenza.focus();
		return false
	}
	
}

function noOspitalita(c) {
	$('#area_ospitalita').toggle();
	if(!c.checked) {
		getById('partenza').selectedIndex = 0;
		getById('arrivo').selectedIndex = 0;
		$('#pernottamento1').removeAttr('checked');
		$('#pranzo1').removeAttr('checked');
		$('#cena1').removeAttr('checked');
		$('#pernottamento2').removeAttr('checked');
		$('#pranzo2').removeAttr('checked');
		$('#cena2').removeAttr('checked');
	}
}

function mostraTemp() {
	$('#preparazione').fadeIn(750, function() {
		setTimeout('$(\'#preparazione\').fadeOut(750)', 2500);
	});
}

function jsonFlickrApi(rsp) { return rsp; }
function sortById(a, b) {
	id1 = parseInt(delZero(a.title.split(" ")[0]));
	id2 = parseInt(delZero(b.title.split(" ")[0]));
	return id1 - id2;
}

function getFlickrPhotos() {
	var maxfoto = 6;
	var flickr_url = 'get_flickr_img.php?m=s&sr=date-posted-desc&t=premioamidei2008&u=27974571@N05&p=1&pp=' + maxfoto;
	$('#flickr_home_foto').addClass("caricamento");
	$('#flickr_home_foto').html('<img src="images/caricamento.gif" width="32" height="32" vspace="15" alt="Lettura dati" />');
	$.get(flickr_url, function(resp) {
		eval('flickr_resp = ' + resp);
		//alert(JSONstring.make(flickr_resp));
		var chtml = '';
		var ftemplate = 'http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}_s.jpg';
		try {
			flickr_resp.photos.photo.sort(sortById);
			flickr_resp.photos.photo.reverse();
			for(var i = 0; i < flickr_resp.photos.photo.length; i++) {
				var fphoto = flickr_resp.photos.photo[i];
				var furl = ftemplate.replace('{farm-id}', fphoto['farm']);
				furl = furl.replace('{server-id}', fphoto['server']);
				furl = furl.replace('{id}', fphoto['id']);
				furl = furl.replace('{secret}', fphoto['secret']);
				chtml += '<li><a href="photo_gallery.php?id=' + fphoto['id'] + '&s=' + fphoto['secret'] + '" title="' + fphoto['title'] + '">' 
					+ '<img src="' + furl + '" width="75" height="75" alt="' + fphoto['title'] + '" />'
					+ '</a></li>';
			}
			if(chtml.length > 0) {
				$('#flickr_home_foto').removeClass("caricamento");
				chtml = '<ul>' + chtml + '</ul>';
			}
			else
				chtml = 'Nessuna foto trovata';
		}
		catch(my_err) {
			chtml = 'Nessuna foto trovata';
		}
		$('#flickr_home_foto').html(chtml); 
	});
}

function getYouTubeVideos() {
	var maxvideo = 6;
	var yt_url = 'bridge.php?xml=y&'
		+ 'url=http://gdata.youtube.com/feeds/api/videos%3Fv=2%26alt=json%26q=premio%2520amidei%26orderby=published%26max-results=' + maxvideo + '%26start-index=1';
	$('#yt_home_video').addClass("caricamento");
	$('#yt_home_video').html('<img src="images/caricamento.gif" width="32" height="32" vspace="15" alt="Lettura dati" />');
	$.getJSON(yt_url, function(yt_json) {
		yt_resp = yt_json;
		var chtml = '';
		try {
			$.each(yt_resp.feed.entry, function(i, item) {
				var tfurl = item['media$group']['media$thumbnail'][0]['url'];
				var ttitle = item['media$group']['media$title']['$t'];
				var tid = item.id['$t'].split(':')[3];
				tfurl = 'http://www.amidei.com/galleries/imgyt.php?f=' + tfurl + '%26nn=' + tid;
				chtml += '<li><a href="video_gallery.php?vv=' + tfurl + '&amp;idc=' + i + '" title="' + ttitle + '">' 
					+ '<img src="' + tfurl + '" width="75" height="75" alt="' + ttitle + '" />'
					+ '</a></li>';
			});
			if(chtml.length > 0) {
				$('#yt_home_video').removeClass("caricamento");
				chtml = '<ul>' + chtml + '</ul>';
			}
			else
				chtml = 'Nessun video trovato';
		}
		catch(my_err) {
			chtml = 'Nessun video trovato';
		}
		$('#yt_home_video').html(chtml);
	});
}

// -------------- ESTENSIONI JQUERY -------------- 

jQuery.getCSS = function(url, media, rel, title) {
	jQuery(document.createElement('link')).attr({
		href: url,
		media: media || 'screen',
		type: 'text/css',
		title: title || '',
		rel: rel || 'stylesheet'
	}).appendTo('head');
};

(function() {
	jQuery.fn.fullhtml = function() {
		var tagName = this[0].tagName.toLowerCase()
		var attribs = this[0].attributes
		var outCode = "<" + tagName;
		for( var i = 0; i < attribs.length; i++ ) {
			var attrName = attribs[i].nodeName;
			outCode += " "+ attrName + "='" + $(this).attr( attrName ) + "'"
		}
		outCode += ">" + $(this).html() + "</" + tagName + ">"
		return outCode
	}
})(jQuery);

(function() {
	jQuery.fn.keyenter = function(callback) {
	return this.each(function(){
		$(this).keyup(function(e) {
			var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
			if((key == 13) && callback)
				return callback
		});
	});
}
})(jQuery);
