var TIEMPO_CRON = 600000; //1 minutos en milisegundos

var xatSemafor=false;
function addXatMessage(){
	if(xatSemafor){
		window.setTimeout(addXatMessage,1000);
	}
	else{
		xatSemafor=true;
		var xatInput=document.getElementById("xat-input");
		
		var url="ajax/xat.php?action=addMessage&message="+encodeURIComponent(xatInput.value);
		xatInput.value="";
		if(lastMessage!=null){
			url+="&lastmsg="+lastMessage;
		}else{
			url+="&date="+firstCall;
		}
		new AJAXHelper(updateMessagesResponse).request(url);
			
		if(interval!=null){
			window.clearInterval(updateMessages);
			interval=null;
		}
	}
}

function deleteXatMessage(idMessage){
	if(xatSemafor){
		window.setTimeout(new Function("deleteXatMessage("+idMessage+")"),1000);
	}
	else{
		xatSemafor=true;
		var url="ajax/xat.php?action=deleteMessage&msgid="+idMessage;
		if(lastMessage!=null){
			url+="&lastmsg="+lastMessage;
		}else{
			url+="&date="+firstCall;
		}		
		new AJAXHelper(updateMessagesResponse).request(url);
			
		if(interval!=null){
			window.clearInterval(updateMessages);
			interval=null;
		}
	}
}


var idInterval=null;
var lastMessage=null;
function updateMessages(){	
	if(!xatSemafor){
		//Si hay alguien actualizando no hacemos nada y esperamos al siguiente intervalo
		xatSemafor=true;
		var url="ajax/xat.php?action=getMessages";
		if(lastMessage!=null){
			url+="&lastmsg="+lastMessage;			
		}else{
			url+="&date="+firstCall;
			if(endDate){				
				url+="&endDate="+endDate;
				document.getElementById("xat-input").disabled=true;
				document.getElementById("xat-button").disabled=true;
			}
		}
		new AJAXHelper(updateMessagesResponse).request(url);
	}
}

function updateMessagesResponse(messages){
	var messageContainer=document.getElementById("message-container");
	
	for (var i=0; i<messages.length; i++){
		var message=messages[i];
		if(message.deleted){
			var toDelete=document.getElementById("line_"+message.id);
			if(toDelete){
				messageContainer.removeChild(toDelete);
			}						
		}else{
			var line=createChatLine(message)
			messageContainer.appendChild(line);
			lastMessage=message.id;
		}
	}
	if(messages.length>0){		
		messageContainer.scrollTop=messageContainer.scrollHeight;		
	}
	if(!endDate && idInterval==null){
		idInterval=window.setInterval(updateMessages,interval);
	}
	xatSemafor=false;		
}

function createChatLine(message){	
	var chatLine= document.createElement("div");	
	chatLine.className="chat-line"
	chatLine.setAttribute("id","line_"+message.id);
	if(message.canDelete){
		var chatIcons=document.createElement("div");		
		chatIcons.className="chat-icons"		
		chatIcons.onclick=new Function("deleteXatMessage("+message.id+")");
		var img=document.createElement("img");
		img.setAttribute("src","./imatges/close.gif");
		chatIcons.appendChild(img);
		chatLine.appendChild(chatIcons);
	}	
	var groupDiv=document.createElement("div");		
	groupDiv.style.color="rgb("+message.color+")";
		
	var user=document.createElement("span");
	user.className="chat-user";
	
	
	user.appendChild(document.createTextNode(message.date+","+message.user+": "));
	groupDiv.appendChild(user);
		
	groupDiv.appendChild(document.createTextNode(message.message));
	
	chatLine.appendChild(groupDiv);
	
	return chatLine;
}


function chatTextEnter(oEvento){
    var iAscii;
    
    if (oEvento.keyCode)
        iAscii = oEvento.keyCode;
    else if (oEvento.which)
        iAscii = oEvento.which;
    else
        return false;
        
    if (iAscii == 13) addXatMessage();

    return true;
} 

function changeTelecontrol(idWindow, einaId, einaName){	
}


function resizeIframeTeleControl(idWindow) {
	var finestra=document.getElementById("content-"+idWindow);
	if(finestra.style.display!="none"){
		var iframeID=idWindow+"-frame";
		var the_height=document.getElementById(iframeID).contentWindow.document.body.scrollHeight;
		//change the height of the iframe	
		document.getElementById(iframeID).height=the_height;
	}
	
} 

function setDates(frm, maxDays)
{
	var ini = getDateInput(frm, "inici");
	if (!ini)
	{
		alert("La data d'inici no és correcte");
		return;
	}

	var fin = null;
	var finaltype = getValue(frm.finaltype);
	if (finaltype == "historic")
	{
		fin = getDateInput(frm, "fi");
		if (!fin)
		{
			alert("La data de fi no és correcte");
			return;
		}
	}
	
	var realFin = fin ? fin : new Date();
	var dayInMillis = 24 * 3600 * 1000;
	var diffDays=realFin.getTime() - ini.getTime() - (maxDays * dayInMillis)	
	if (diffDays>0)
	{
		alert("El període de temps no pot excedir els " + maxDays + " dies");
		if(fin){			
			realFin.setTime(realFin.getTime()-diffDays);
			setDateInput(frm,"fi",realFin);	
		}else{					
			ini.setTime(ini.getTime()+diffDays);
			setDateInput(frm,"inici",ini);	
			
		}		
		return;
	}
	
	var url = getValue(frm.targetpage) + "?inici=" + formatDate(ini) + "&fi=" + (fin ? formatDate(fin) : "");
	document.location.href = url;
}

function setPublishParams(frm, fechaIni)
{
	var reset = (getValue(frm.pubmode) == "reset" ? 1 : 0);
	var url = "ajax/publisher.php?action=setParams&reset=" + reset + "&fechaIni=" + fechaIni;
	new AJAXHelper(setPublishParamsResponse).request(url);
}

function getPublishParams()
{
	var url = "ajax/publisher.php?action=getParams";
	new AJAXHelper(getPublishParamsResponse).request(url);
}

function setPublishParamsResponse(result)
{
	showFinestra('publish', false);
	if (result.status == "OK")
	{
		refreshPublishParams(result);
		alert("La publicació a la web oberta s'ha configurat correctament");
	}
	else
	{
		alert("No s'ha pogut configurar la publicació a la web oberta (" + resultCode + ")");
	}
}

function getPublishParamsResponse(result)
{
	if (result.status == "OK")
	{
		refreshPublishParams(result);
		showFinestra('publish', true);
	}
	else
	{
		alert("No s'ha pogut carregar la configuració de la web oberta (" + resultCode + ")");
	}
}

function refreshPublishParams(result) {
	var elm = document.getElementById("publishimg");
	if (elm)
	{
		var url = new String(elm.src);
		var idx = url.lastIndexOf('/');
		url = url.substring(0, idx) + "/publish__" + result.alertLevel + ".gif";
		elm.src = url;
	}
	var datelm = document.getElementById("data-publicacio");
	if (datelm)
	{
		datelm.innerHTML = result.date;
	}
	if (result.reset == '1') {
		document.getElementById("pubmode-reset").checked = 'checked';
	} else if (result.reset == '0') {
		document.getElementById("pubmode-fixed").checked = 'checked';
	}
}

function loadMap(fechaIni,fechaFin){	
	var url="ajax/mapa.php?fechaIni="+fechaIni+"&nocache=" + new Date().getTime();
	if(fechaFin){
		url+="&fechaFin="+fechaFin;
	}
	new AJAXHelper(loadMapResponse).request(url);	
}

function loadMapResponse(mapImage){			
	document.getElementById("mapImage").src=mapImage.image+"?nocache=" + new Date().getTime();
		
	// actualizamos la fecha
	if (mapImage.date) {
		document.getElementById("fechaFinal").innerHTML = mapImage.date;
	}
	//Actualizamos la infotmacion de la publicacion
	refreshPublishConfig();
	dojo.publish("/reloadObservacions", []);
}

function loadMapComarca(fechaIni,fechaFin,idComarca){		
	var url="../ajax/mapa.php?fechaIni="+fechaIni+"&nocache=" + new Date().getTime();
	if(fechaFin){
		url+="&fechaFin="+fechaFin;
	}	
	url+="&comarca="+idComarca;
	new AJAXHelper(loadMapComarcaResponse).request(url);
	
}

function loadMapComarcaResponse(mapImage){	
	
	document.getElementById("mapComarca").src=mapImage.image+"?nocache=" + new Date().getTime();
	addObservacions(mapImage.geometries);
	var container = document.getElementById("llegenda-container");
	var llegenda = document.getElementById("llegendaComarca");	
	if(mapImage.legend){
		container.style.display="";
		llegenda.innerHTML=mapImage.legend;		
	}else{
		container.style.display="none";
		llegenda.innerHTML="";
	}
			
	// actualizamos la fecha
	if (mapImage.date) {
		document.getElementById("fechaFinal").innerHTML = mapImage.date;
	}		
	
	dojo.publish("/reloadObservacionsComarca", []);
}

function addObservacions(observacions){	
	var obsContainer=document.getElementById("observaciones");
	while ( obsContainer.hasChildNodes() ){
		obsContainer.removeChild( obsContainer.firstChild );
	}
		
	for(var i=0; i<observacions.length;i++){
		addObservacio(observacions[i]);
	}
	separaObservaciones();	
}
function addObservacio(observacio){
		
	var obsContainer=document.getElementById("observaciones");
	var divElem=document.createElement("div");
	divElem.className="mapaObservacio";
	if (observacio.observacions) {
		var id = observacio.observacions[observacio.observacions.length - 1];
		divElem.setAttribute("id","obs-"+id);
		divElem.onclick=new Function("showDetallObservacio('"+id+"',true,'" + observacio.observacions.join(',') + "')");
	} else if (observacio.alerts) {
		var id = observacio.alerts[observacio.alerts.length -1];
		divElem.setAttribute("id","ema-"+id);
		divElem.onclick=new Function("showDetallAlertaEMA('" + id + "',true,'" + observacio.alerts.join(',') + "')");
	}
	divElem.style.position="absolute";
	divElem.style.top=observacio.top+"px";
	divElem.style.left=observacio.left+"px";
	imgElm=document.createElement("img");
	imgElm.setAttribute("src","../imatges/meteors/"+observacio.imgName+".png");
	divElem.appendChild(imgElm);
	obsContainer.appendChild(divElem);
	
}

function updateDatesSelect(radio) {
	if (radio != null) {
		if (radio.value == 'historic') {
			setDisabled('fi',false);
		} else if (radio.value == 'actual') {
			setDisabled('fi',true);
		}
	}
}

function setDisabled(id, disabled) {
	document.getElementById(id + 'dia').disabled = disabled;
	document.getElementById(id + 'mes').disabled = disabled;
	document.getElementById(id + 'any').disabled = disabled;
	document.getElementById(id + 'hora').disabled = disabled;
	document.getElementById(id + 'minut').disabled = disabled;
}

function separaObservaciones(){
	var observaciones=document.getElementById("observaciones").childNodes;
	var obsPosArray=new Array();
	for(var i=0;i< observaciones.length;i++){		
		if(observaciones[i].nodeType == ELEMENT_NODE_TYPE){	
			addObsPos(observaciones[i],obsPosArray);					
		}
	}
	
	for(var i=0;i< obsPosArray.length;i++){	
		var matrix=new Matrix();					
		for(var j=0;j<obsPosArray[i].length;j++){			
			matrix.addElement(obsPosArray[i][j]);			
		}
		
	}
}

function addObsPos(obs,arrayPos){
	var added=false;
	for(var i=0;i<arrayPos.length;i++){
		if(arrayPos[i][0].style.top==obs.style.top &&
			arrayPos[i][0].style.left==obs.style.left){
			arrayPos[i][arrayPos[i].length]=obs;			
			added=true;
		}
	}
	if(!added){
		var pos=arrayPos.length;
		arrayPos[pos]=new Array();		
		arrayPos[pos][0]=obs;
	}
}

function showPublishConfig() {
	getPublishParams();
}

function refreshPublishConfig(){
	var url = "ajax/publisher.php?action=getParams";
	new AJAXHelper(refreshPublishConfigResponse).request(url);
}

function refreshPublishConfigResponse(result){
	if (result.status == "OK")
	{
		refreshPublishParams(result);
	}
	else
	{
		alert("No s'ha pogut carregar la configuració de la web oberta (" + resultCode + ")");
	}
}

function resetFechaInicio() {
	var url="ajax/util.php?action=getToday&nocache=" + new Date().getTime();	
	new AJAXHelper(resetFechaInicioResponse).request(url);
}

function resetFechaInicioResponse(result) {
	if (result) {
		updateFechaInicio(result.today);
	}
}

function loadDades() {
	
	var head = document.getElementsByTagName("head").item(0);
	var scriptTag = document.getElementById("dades_js");
	if(scriptTag) head.removeChild(scriptTag);
	var script = document.createElement("SCRIPT");
	script.id = "dades_js";
	script.type = "text/javascript";
	head.appendChild(script);
	
	//Para IE
    script.onreadystatechange = function () {
        if (script.readyState == 'loaded') {
            load();
            script=null;
        }
    }
	//Para Firefox
    script.onload = function () {
    	load();
    }
    
    script.src = webroot + "/scripts/dades.js" + "?radn=" + (new Date()).getTime();
    head=null;
    scriptTag=null;    
    
}