var readyState = {
	INATTIVO:	0,
	INIZIALIZZATO:	1,
	RICHIESTA:	2,
	RISPOSTA:	3,
	COMPLETATO:	4
}

var statusText = new Array();
statusText[100] = "Continue";
statusText[101] = "Switching Protocols";
statusText[200] = "OK";
statusText[201] = "Created";
statusText[202] = "Accepted";
statusText[203] = "Non-Authoritative Information";
statusText[204] = "No Content";
statusText[205] = "Reset Content";
statusText[206] = "Partial Content";
statusText[300] = "Multiple Choices";
statusText[301] = "Moved Permanently";
statusText[302] = "Found";
statusText[303] = "See Other";
statusText[304] = "Not Modified";
statusText[305] = "Use Proxy";
statusText[306] = "(unused, but reserved)";
statusText[307] = "Temporary Redirect";
statusText[400] = "Bad Request";
statusText[401] = "Unauthorized";
statusText[402] = "Payment Required";
statusText[403] = "Forbidden";
statusText[404] = "Not Found";
statusText[405] = "Method Not Allowed";
statusText[406] = "Not Acceptable";
statusText[407] = "Proxy Authentication Required";
statusText[408] = "Request Timeout";
statusText[409] = "Conflict";
statusText[410] = "Gone";
statusText[411] = "Length Required";
statusText[412] = "Precondition Failed";
statusText[413] = "Request Entity Too Large";
statusText[414] = "Request-URI Too Long";
statusText[415] = "Unsupported Media Type";
statusText[416] = "Requested Range Not Satisfiable";
statusText[417] = "Expectation Failed";
statusText[500] = "Internal Server Error";
statusText[501] = "Not Implemented";
statusText[502] = "Bad Gateway";
statusText[503] = "Service Unavailable";
statusText[504] = "Gateway Timeout";
statusText[505] = "HTTP Version Not Supported";
statusText[509] = "Bandwidth Limit Exceeded";

function assegnaXMLHttpRequest() {
var
	XHR = null,
	browserUtente = navigator.userAgent.toUpperCase();
	if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object") {
		XHR = new XMLHttpRequest();
	}
	else {
		if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
			if(browserUtente.indexOf("MSIE 5") < 0)
				XHR = new ActiveXObject("Msxml2.XMLHTTP");
			else
				XHR = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return XHR;
}

function load_url(elementId,url) {
	var ajax = assegnaXMLHttpRequest();
	if(ajax) {
		ajax.open("get", url , true);
		ajax.setRequestHeader("connection", "close");
		ajax.onreadystatechange = function() {
			if(ajax.readyState === readyState.COMPLETATO) {
				if(statusText[ajax.status] === "OK")
					document.getElementById(elementId).innerHTML = ajax.responseText;
				else {
					document.getElementById(elementId).innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
					document.getElementById(elementId).innerHTML += "Errore riscontrato: " + statusText[ajax.status];
				}
			}
		};
		ajax.send(null);
	};
}

function stringToHex (s) {
  var r = "0x";
  var hexes = new Array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
  for (var i=0; i<s.length; i++) {r += hexes [s.charCodeAt(i) >> 4] + hexes [s.charCodeAt(i) & 0xf];}
  return r;
}

function hexDigit(c) {
	var d=c.toLowerCase().charCodeAt(0);
	if ( d >= 97 && d <= 102 ) return d-87;
	if ( d >= 48  && d <= 57 ) return d-48;
	return null;
}

function hexToString(h) {
	if ( h.length < 2 ) return "";
	var s=h.toLowerCase();
	if ( s.substring(0,2) != "0x" ) return "";
	s = s.substring(2);
	var r="";
	for ( var i=0; i<s.length-1 ; i+=2 ) {
		var ch=hexDigit(s.substr(i,1));
		var cl=hexDigit(s.substr(i+1,1));
		r+=String.fromCharCode(ch*16+cl);
	}
	return r;
}

var thumb_save_idcam;
var thumb_save_ut;
var stc = 0;

function load_link() {
	var idcam = thumb_save_idcam;
	var ut = thumb_save_ut;
	var idpic = thumb_save_idpic;
	var hashes = "";
	if ( idcam != "" && idcam != undefined && !isNaN(idcam) ) {
		hashes+="c="+idcam;
	}
	if ( ut != "" && ut != undefined && !isNaN(ut) ) {
		if ( hashes != "" ) hashes += "&";
		hashes+="t="+ut;
	}
	if ( idpic != "" && idpic != undefined && !isNaN(idpic) ) {
		if ( hashes != "" ) hashes += "&";
		hashes+="p="+idpic;
	}
	if ( hashes != "" ) 
		window.location.hash="#"+stringToHex(hashes);
}

function load_calendar(m,a) {
	var reqstr = "";
	if ( m != "" ) {
		if ( "" == reqstr )
			reqstr="?mese="+m;
		else
			reqstr=reqstr+"&mese="+m;
	}
	if ( a != "" ) {
		if ( "" == reqstr )
			reqstr="?anno="+a;
		else
			reqstr=reqstr+"&anno="+a;
	}

	load_url("calendar_div","/calendar.php"+reqstr);
}

function load_camsList(s) {
	if ( s ) {
		stc = 1;
		load_url("camsList_div","/camsList.php?static=1&ut="+thumb_save_ut);
	}
	else {
		stc = 0;
		load_url("camsList_div","/camsList.php");
	}
}

var thumb_save_idpic;

function load_thumbnails(idcam,ut) {
	var reqstr = "";

	if ( ut==undefined || ut==null || isNaN(ut) ) {
		ut = "";
	}
	if ( idcam==undefined || idcam==null || isNaN(idcam) ) {
		idcam = "";
	}

	document.getElementById("image_div").innerHTML = '';
	document.getElementById("thumbnails_div").innerHTML = '<br/><br/><br/><br/><br/><strong style=\"color:#ff0;\">&nbsp;&nbsp;Caricamento in corso: attendere...</strong>';

	if ( ut != "" ) {
		thumb_save_ut = ut;
	}
	if ( idcam != "" ) {
		thumb_save_idcam = idcam;
		load_calendar("","",idcam);
	}

	if ( "" == reqstr )
		reqstr="?idcam="+thumb_save_idcam;
	else
		reqstr=reqstr+"&idcam="+thumb_save_idcam;

	if ( "" == reqstr )
		reqstr="?ut="+thumb_save_ut;
	else
		reqstr=reqstr+"&ut="+thumb_save_ut;
	thumb_save_idpic="";
	load_link();
	load_url("thumbnails_div","/thumbnails.php"+reqstr);
	if ( stc == 1 ) {
		load_camsList(1);
	}
}

function load_pic(idpic) {
	thumb_save_idpic = idpic;
	load_link();
	document.getElementById("image_div").innerHTML = '<a title="Scarica immagine alla massima risoluzione disponibile"'+
                                                         ' target="_blank" href="http://webcam.valbrembanaweb.com/img.php?idpic='+idpic+'">'+
                                                         '<img style="border:2px solid #090909;"'+
                                                         ' src="http://webcam.valbrembanaweb.com/img.php?'+
                                                         'type=m&idpic='+idpic+'"/></a><hr style="clear:both; visibility:hidden">';
}

function load(s) {
	var main = document.createElement('div');
	var leftPane = document.createElement('div');
	var calendar_div = document.createElement('div');
	var camsList_div = document.createElement('div');
	var signature = document.createElement('div');
	var rightPane = document.createElement('div');
	var thumbnails_div = document.createElement('div');
	var image_div = document.createElement('div');

	main.setAttribute('id','main');
	leftPane.setAttribute('id','leftPane');
	calendar_div.setAttribute('id','calendar_div');
	camsList_div.setAttribute('id','camsList_div');
	signature.setAttribute('id','signature');
	rightPane.setAttribute('id','rightPane');
	thumbnails_div.setAttribute('id','thumbnails_div');
	image_div.setAttribute('id','image_div');

	signature.innerHTML='Realizzato da IW2NGG<br/><a title="nicola.gualteroni.it" href="http://nicola.gualteroni.it">Nicola Gualteroni</a>';
	main.innerHTML='<h1>Archivio storico &ldquo;webcam&rdquo; - Val Brembana</h1>'+
                       '<p>(dal: 15 marzo 2008)<br/><a title="vai a www.valbrembanaweb.com"'+
                       ' href="http://www.valbrembanaweb.com">www.valbrembanaweb.com</a></p>';

	var l=document.createElement("link");
	l.setAttribute("type","text/css");
	l.setAttribute("rel","stylesheet");
	l.setAttribute("href",'http://webcam.valbrembanaweb.com/index.css');

	//document.title='Archivio storico webcam - Val Brembana - Bergamo';
	
	document.getElementsByTagName("head")[0].appendChild(l);

	document.body.appendChild(main);

	main.appendChild(leftPane);
	main.appendChild(rightPane);

	leftPane.appendChild(calendar_div);
	leftPane.appendChild(camsList_div);
	leftPane.appendChild(signature);
	rightPane.appendChild(thumbnails_div);
	rightPane.appendChild(image_div);

	var idcam="";
	var idpic="";
	var ut="";
	var a="";
	var m="";
	var parts=hexToString(window.location.hash.substr(1)).split('&');
	for ( var i=0 ; i<parts.length ; i++) {
        	part=parts[i].split('=',2);
        	if ( part.length == 2 ) {
                	if ( part[0] == 'c' ) idcam=part[1];
                	if ( part[0] == 'p' ) idpic=part[1];
                	if ( part[0] == 't' ) ut=part[1]; 
        	}
	}

        var d = new Date();
	if ( idcam != "" && !isNaN(idcam) && idcam!=undefined 
          && ut != "" && !isNaN(ut) && ut!=undefined ) {
        	d.setTime(ut*1000);
	}
	else {
		ut = Math.floor(d.getTime()/86400000)*86400;
        	m=d.getMonth()+1;
        	a=d.getYear();
	}

	thumb_save_ut = ut;

	load_calendar(m,a,idcam);
	load_camsList(s);
	load_thumbnails(idcam,ut);

	if ( idpic != undefined && idpic != "" && !isNaN(idpic) ) load_pic(idpic);

}

function removeChilds(el) {
	if ( el == null || el == undefined ) return;
	//alert(el.tagName);
	var c=el.lastChild;
	while (c != null && c != undefined ) {
		removeChilds(c);
		d=c.previousSibling;
		el.removeChild(c);
		c=d;
	}
}

function load_intro(idcam) {
	var b = window.document.getElementsByTagName('BODY');
	removeChilds(b[0]);
	load(1);
	thumb_save_idcam = idcam;
	load_thumbnails(idcam,'');
}



