/*****************
Created 13.05.2009
*****************/

var timerNewAlarmsID = 0;
var timerNewAlarmsFreq = 15000;
var newcomplete = true;
var text_you_have = '';
var text_new_alarms = '';
var text_group = '';
var text_alarm = '';
var text_alarm_for = '';
var text_start_time = '';
var text_end_time = '';
var text_check_all = '';
var text_clear_all = '';
var text_fixed = '';
var text_submit = '';
var mypops = new Object;
var visible = true;
var sound_url = '../images/alarm.swf';
var lang = 'en';
var resolve_id = null;
var hidden_pop_alarms = null;
var allow_alarms = 0;

/* 0 - nici o operatie
 * 1 - cerere alarme noi
 * 2 - inchidere popup
 * 3 - deschidere popup
 */
var operation = 0;

/**************
on window load
***************/
function loadNewAlarms() {
	if ( allow_alarms ) {
		updateNewAlarmsTimer();
	};
}

/***************
on window unload
***************/
function unloadNewAlarmsData(){
	window.clearTimeout(timerNewAlarmsID);
}

/*************************
update timer and if last 
ajax request was complete, 
make a new one
*************************/
function updateNewAlarmsTimer(){
	if ( newcomplete == true ){
		updateNewAlarms();   
	};
	timerNewAlarmsID = setTimeout("updateNewAlarmsTimer()", timerNewAlarmsFreq);
}

/************************
make a new ajax requst 
to update cars flags
************************/
function updateNewAlarms(){
	newcomplete = false;
	var myDate = new Date();
	
	operation = 1;
	
	var param = '';
	if ( ! document.getElementById('pop_content') ) {
		param+= '&text=1';
	};
	if ( resolve_id ) {
		param+= '&resolve_id='+resolve_id;
	};
	
    var myAjax = new Ajax.Request(
        'index.cgi?content_name=alarms&ajax=1&lang='+ lang + '&new_alarms=1'+param+'&rand=' + myDate.getTime(), 
        {
            method: 'get',
            onComplete: refreshNewAlarms
        }
    );

    myDate=null;
}

/*************************
if request was completed 
succesfully redraw the flags
*************************/
function refreshNewAlarms(response){
    if ( response.readyState == 4 ){
        if ( response.status == 200 ){
            drawNewAlarms(eval('(' + response.responseText + ')'));
        };
        newcomplete = true;
        resolve_id = null;
        operation = 0;
        return true;
    };
}

function drawNewAlarms(data){
	// daca a fost initiata alta operatie , o abortam pe aceasta
	if ( operation > 1 ) {
		return true;
	};
	
	var new_alarms_obj = data.new_alarms;
	var pop_alarms = data.pop_alarms;
	if ( data.text ) {
		var text = data.text;
		text_you_have	= text.text_you_have;
		text_new_alarms	= text.text_new_alarms;
		text_group		= text.text_group;
		text_alarm		= text.text_alarm;
		text_alarm_for	= text.text_alarm_for;
		text_start_time	= text.text_start_time;
		text_end_time	= text.text_end_time;
		text_check_all	= text.text_check_all;
		text_clear_all	= text.text_clear_all;
		text_fixed		= text.text_fixed;
		text_submit		= text.text_submit;
	};
	if ( data.hidden_pop_alarms ) {
		hidden_pop_alarms = 1;
	}
	else {
		hidden_pop_alarms = null;
	};
	
	// refresh new alarms
	var myalarms = document.getElementById('new_alarms');
	if ( new_alarms_obj.length > 0 ) {
		var old_alarms = myalarms.getElementsByTagName('a');
		while ( old_alarms.length > 0 ) {
			myalarms.removeChild(old_alarms[0].nextSibling);
			myalarms.removeChild(old_alarms[0]);
		};
		
		for ( var i = 0; i < new_alarms_obj.length; i++ ) {
			var a = document.createElement('a');
			if ( i == 0 ) {
				a.id = 'all_alarms';
			}
			else {
				a.id = new_alarms_obj[i].mgroup;
			};
			a.href = new_alarms_obj[i].url;
			a.innerHTML = '<tt>'+new_alarms_obj[i].mgroup+': '+new_alarms_obj[i].no+'</tt>';
			myalarms.appendChild(a);
			a = null;
			
			myalarms.appendChild(document.createElement('br'));
		};
		
		myalarms.style.display = 'block';		
	}
	else {
		myalarms.style.display = 'none';
	};
	
	var beforeNode;
	var mypop = document.getElementById('popup_alarms');
	if ( pop_alarms.length > 0 ) {
		if ( document.getElementById('pop_no') ) {
			document.getElementById('pop_no').innerHTML = text_you_have+' '+pop_alarms.length+' '+text_new_alarms;
		}
		else {
			var div	= document.createElement('div');
			div.align = 'right';
			div.style.paddingBottom = '10px';
			div.innerHTML = '<a onclick="closePopAlarms()"><img border="0" alt="" src="../images/windowclose.gif"/></a>';
			mypop.appendChild(div);
			div = null;
			
			div = document.createElement('div');
			div.id = 'pop_no';
			div.style.paddingBottom = '15px';
			div.innerHTML = text_you_have+' '+pop_alarms.length+' '+text_new_alarms;
			mypop.appendChild(div);
			div = null;
		};
		
		if ( ! document.getElementById('pop_content') ) {
			var div = document.createElement('div');
			div.width = '100%';
			div.id = 'pop_content';
			div.style.border = 'border: 1px solid rgb(204, 204, 204)';
			div.style.overflow = 'auto';
			div.style.backgroundColor = 'white';
						
			var table = document.createElement('table');
			table.cellSpacing = 0;
			table.width = '100%';
			var tbody = document.createElement('tbody');
			var tr = document.createElement('tr');
			
			var td = document.createElement('td');
			td.style.borderBottom = '1px solid rgb(200,200,200)';
			td.style.paddingTop = '5px';
			td.innerHTML = '&nbsp;';
			tr.appendChild(td);
			td = null;
			
			td = document.createElement('td');
			td.style.borderBottom = '1px solid rgb(200,200,200)';
			td.style.paddingTop = '5px';
			td.innerHTML = text_group;
			tr.appendChild(td);
			td = null;
			
			td = document.createElement('td');
			td.style.borderBottom = '1px solid rgb(200,200,200)';
			td.style.paddingTop = '5px';
			td.innerHTML = text_alarm;
			tr.appendChild(td);
			td = null;
			
			td = document.createElement('td');
			td.style.borderBottom = '1px solid rgb(200,200,200)';
			td.style.paddingTop = '5px';
			td.innerHTML = text_alarm_for;
			tr.appendChild(td);
			td = null;
			
			td = document.createElement('td');
			td.style.borderBottom = '1px solid rgb(200,200,200)';
			td.style.paddingTop = '5px';
			td.innerHTML = text_start_time;
			tr.appendChild(td);
			td = null;
			
			td = document.createElement('td');
			td.style.borderBottom = '1px solid rgb(200,200,200)';
			td.style.paddingTop = '5px';
			td.innerHTML = text_end_time;
			tr.appendChild(td);
			td = null;
			
			tbody.appendChild(tr);
			tr = null;
			table.appendChild(tbody);
			tbody = null;
			div.appendChild(table);
			table = null;
			mypop.appendChild(div);
			div = null;
		}
		else {
			beforeNode = document.getElementById('pop_content').getElementsByTagName('table')[0].getElementsByTagName('tbody')[0].firstChild.nextSibling;
		};
		
		var content = document.getElementById('pop_content').getElementsByTagName('table')[0].getElementsByTagName('tbody')[0];
		
		// remove alarms resolved/deleted
		if ( beforeNode ) {
			var nodes = content.childNodes;
			var i = 1;
			while ( i < nodes.length ) {
				var x = nodes[i].getElementsByTagName('input')[0].id.split('_');
				if ( notExists(x[1], pop_alarms) ) {
					content.removeChild(nodes[i]);
				}
				else {
					i++;
				};
			};
		};
		
		// add new alarms
		var found_new = 0;		
		for ( var i = 0; i < pop_alarms.length; i++ ) {
			if ( ! document.getElementById('pop_'+pop_alarms[i].id) ) {
				var tr = document.createElement('tr');
				var td = document.createElement('td');
				td.style.borderBottom = '1px solid rgb(230,230,230)';
				td.style.paddingTop = '5px';
				td.innerHTML = '<input type="checkbox" name="pop_alarm_id" id="pop_'+pop_alarms[i].id+'" value="'+pop_alarms[i].id+'">';
				tr.appendChild(td);
				td = null;
				
				td = document.createElement('td');
				td.style.borderBottom = '1px solid rgb(230,230,230)';
				td.style.paddingTop = '5px';
				td.innerHTML = pop_alarms[i].group;
				tr.appendChild(td);
				td = null;
				
				td = document.createElement('td');
				td.style.borderBottom = '1px solid rgb(230,230,230)';
				td.style.paddingTop = '5px';
				td.innerHTML = pop_alarms[i].info;
				tr.appendChild(td);
				td = null;
				
				td = document.createElement('td');
				td.style.borderBottom = '1px solid rgb(230,230,230)';
				td.style.paddingTop = '5px';
				td.innerHTML = pop_alarms[i].alarm_for;
				tr.appendChild(td);
				td = null;
				
				td = document.createElement('td');
				td.style.borderBottom = '1px solid rgb(230,230,230)';
				td.style.paddingTop = '5px';
				td.innerHTML = pop_alarms[i].start_time;
				tr.appendChild(td);
				td = null;
				
				td = document.createElement('td');
				td.style.borderBottom = '1px solid rgb(230,230,230)';
				td.style.paddingTop = '5px';
				if ( pop_alarms[i].end_time ) {
					td.innerHTML = pop_alarms[i].end_time;
				}
				else {
					td.innerHTML = '&nbsp;';
				};
				tr.appendChild(td);
				td = null;
				
				if ( beforeNode ) {
					content.insertBefore(tr, beforeNode);
					beforeNode = content.firstChild.nextSibling;
				}
				else {
					content.appendChild(tr);
				};
				tr = null;
				
				found_new = 1;
			};
		};
		
		content = null;
		
		//if ( found_new == 1 ) {
			document.getElementById('play_sound').style.display = 'block';
			document.getElementById('play_sound').innerHTML = '<embed src="'+sound_url+'" autostart="true" loop=false hidden="true">';
//			'<object type="audio/x-aif" data="../images/alarm.aif" width="200" height="20">'+
//  '<param name="src" value="../images/alarm.aif">  <param name="autoplay" value="true">  <param name="autoStart" value="0">  alt : <a href="../images/alarm.aif">../images/alarm.aif</a>'+
//	'</object>'; 
			//'<embed src="'+sound_url+'" autostart="true" loop=false hidden="true">';
			//document.getElementById('play_sound').style.display = 'none';
		//};
		
		if ( ! beforeNode ) {
			var div = document.createElement('div');
			div.innerHTML = '<a href="javascript:nSetChecked(true,\'pop_alarm_id\')"><tt>'+ text_check_all +'</tt></a> <a href="javascript:nSetChecked(false,\'pop_alarm_id\')"><tt>'+ text_clear_all+'</tt></a><br>';
			div.innerHTML+= '<select><option value="0">'+text_fixed+'</option></select>';
			div.innerHTML+= '<input type="button" name="resolve" onClick="resolveAlarms()" value="'+text_submit+'">';
			mypop.appendChild(div);
			div = null;
		};
		
		var wWidth = windowWidth();	
		var dHeight = document.height;
		var wHeight = windowHeight()-300;
		var left = (wWidth / 2) - 300;
		mypop.style.width = '700px';
		mypop.style.left = left+'px';
		mypop.style.top = '250px';
		
		if ( ! hidden_pop_alarms ) {
			mypop.style.display = 'block';
		}
		else {
			document.getElementById('hidden_pop_alarms').style.display = 'block';
		};
		
		if ( document.getElementById('pop_content').clientHeight > wHeight ) {
			document.getElementById('pop_content').style.height = wHeight+'px';
		};

		var ww = wWidth - 15;
		document.getElementById('cover_all').style.width = ww+'px';
		document.getElementById('cover_all').style.height = dHeight+'px';
		
		if ( ! hidden_pop_alarms ) {
			document.getElementById('cover_all').style.display = 'block';
		}
		else {
			document.getElementById('cover_all').style.display = 'none';
		};
	} 
	else {
		mypop.innerHTML = '';
		mypop.style.display = 'none';
		document.getElementById('cover_all').style.display = 'none';
		document.getElementById('play_sound').style.display = 'none';
		document.getElementById('play_sound').innerHTML = '';
		document.getElementById('hidden_pop_alarms').style.display = 'none';
	};
}

function notExists(id, n_a) {
	for ( var j = 0; j < n_a.length; j++ ) {
		if ( n_a[j].id == id ) {
			return false;
		};
	};
	return true;
};

function closePopAlarms(){
	document.getElementById('cover_all').style.display = 'none';
	document.getElementById('popup_alarms').style.display = 'none';
	document.getElementById('hidden_pop_alarms').style.display = 'block';
	
	operation = 2;
	
	var myAjax = new Ajax.Request(
        'index.cgi?content_name=alarms&ajax=1&lang='+ lang + '&hidden_pop_alarms=1', 
        {
            method: 'get',
            onComplete: showResponse
        }
    );
}

function showResponse(response){
	if ( response.readyState == 4 ){
        if ( response.status == 200 ){
        	operation = 0;
//            if ( hidden_pop_alarms == -2 ) {
//            	document.getElementById('hidden_pop_alarms').style.display = 'none';
//				document.getElementById('popup_alarms').style.display = 'block';
//				document.getElementById('cover_all').style.display = 'block';
//            };
        };
        return true;
    };
}

function showPopAlarms(){
	document.getElementById('hidden_pop_alarms').style.display = 'none';
	document.getElementById('popup_alarms').style.display = 'block';
	document.getElementById('cover_all').style.display = 'block';
	
	operation = 3;
	
	var myAjax = new Ajax.Request(
        'index.cgi?content_name=alarms&ajax=1&lang='+ lang + '&hidden_pop_alarms=2', 
        {
            method: 'get',
            onComplete: showResponse
        }
    );
}

function resolveAlarms(){
	var checks = document.getElementsByName('pop_alarm_id');
	var ids = new Array;
	for ( var i = 0; i < checks.length; i++ ) {
		if ( checks[i].checked == true ) {
			ids.push(checks[i].value);
		};
	};
	if ( ids.length > 0 ) {
		resolve_id = ids.join(',');
		updateNewAlarms();
	};
}

function resolveAlarm(alarm_id) {
	resolve_id = alarm_id;
	updateNewAlarms();
}

function nSetChecked (flag, name) {
	var checks = document.getElementsByName(name);
	for ( var i = 0; i < checks.length; i++ ) {
		checks[i].checked = flag;
	};
	return;
}

function windowWidth() {
	// Standard browsers (Mozilla, Safari, etc.)
	if (self.innerWidth)
		return self.innerWidth;
	// IE 6
	if (document.documentElement && document.documentElement.clientWidth)
		return document.documentElement.clientWidth;
	// IE 5
	if (document.body)
		return document.body.clientWidth;
	// Just in case.
	return 0;
}

function windowHeight() {
	// Standard browsers (Mozilla, Safari, etc.)
	if (self.innerHeight)
		return self.innerHeight;
	// IE 6
	if (document.documentElement && document.documentElement.clientHeight)
		return document.documentElement.clientHeight;
	// IE 5
	if (document.body)
		return document.body.clientHeight;
	// Just in case.
	return 0;
}

//window.load = load();
//window.unload = unloadNewAlarmsData();

