
//sb.include("utils.timer");
 
if(typeof(RPCI) == 'undefined'){ var RPCI ={};}	
	
	
	/* Faux Refrence Collection */
	RPCI.alarmeditor = s$("#alarmeditor");	
	RPCI.textlanding = s$("#textlanding");
	RPCI.editcontrols = s$("#editcontrols");
	RPCI.alarmform = s$("#alarmform");
	RPCI.arm = s$("#arm");
	RPCI.disarm = s$("#disarm");
	RPCI.deletemessage = s$("#deletemessage");
	RPCI.humanstatus = s$("#humanstatus");
	RPCI.alert_div = s$("#alert_div");
	


/**
* Starts the alarm client application layer
*/
RPCI.alarm = {
	init : function(){		
		this.editor.init();
		this.display.init();
	},
		
	isArmed : function(){
	
		var bRet = false;	
		new sb.ajax({
			url : '/Applications/Alarm/data/process.php',
			data : 'c=isArmed',
			async : false,
			handler : function(data){				
				bRet = (data == 1)?true:false;
			}			
		}).fetch();
				
		return bRet;
	}
};

/*Editor Object*/
RPCI.alarm.editor = {
	
	alarmStatusMessages : [
		'RPCI Alarm is <u>armed</u>',
		'RPCI Alarm is <u>disarmed<u>',
		'RPCI Alarm is <u>disarmed</u>, and the Alarm <u>message is not set</u>. To enable RPCI Alarm, first choose a message and then click the "Arm Alarm" button'		
	],
	
	
	attachEvents : function(){		
		
		RPCI.alarmeditor.event('click', this.clickCatch);		
	},
		
	addMessage : function(){
		RPCI.newmessage = $('#newmessage');
		
		if(RPCI.newmessage){
			new sb.ajax({
				url : '/Applications/Alarm/data/process.php',
				data : 'c=addMessage&message=' + escape(RPCI.newmessage.value),
				format : 'json',
				handler : function(data){
					if(typeof(data) != 'undefined'){
						RPCI.emtpyline = $("#emptyline");
						if(RPCI.emtpyline){RPCI.emtpyline.innerHTML = '';}
						RPCI.alarm.editor.addNewLine(data.message, data.mid);						
						
						
					}
				}
			}).fetch();
		}
	},
		
	addNewLine : function(sMessage, iId){
		var line = new sb.element({ 
			nodeName: 'LI',
			id : 'line' + iId,
			innerHTML :"<input type='radio' id='message" + iId + "' name='message' value='" + iId + "' $checked />" +
						"<label for='message" + iId + "' id='for" + iId + "' >" +
							sMessage +								
						"</label>"
		}).appendAfter($("#lineX"));
		
		RPCI.alarm.editor.cancelMessage();
			
	},
	
	
	clickHere : '[Click here to add a new message]',
	
	clickCatch : function(e){
		
		
		
		var targ = sb.events.target(e);				
		switch(targ.nodeName){
			
			case 'INPUT':			
				if(targ.type == 'radio'){							
				
		
						if(RPCI.alarm.editor.messageSelected()){			
							
							RPCI.alarm.editor.setMessage();							
							RPCI.alarm.editor.toggleDeleteButton(1);
							RPCI.alarm.editor.enableActivationButtons(1);					
							
						}
					
				}else{
					if(targ.id != 'messageX'){		
						
						
						switch(targ.id){
							case 'add':
								RPCI.alarm.editor.addMessage();
							break;
							
							case 'clear':
								RPCI.alarm.editor.clearText();
							break;
							
							case 'cancel':
								RPCI.alarm.editor.cancelMessage();
							break;
							
							case 'arm':
								if(!targ.disabled){
									RPCI.alarm.editor.toggleArm(1);				
								}
							break;
							
							case 'disarm':
								if(!targ.disabled){
									RPCI.alarm.editor.toggleArm(0);
								}
							break;
							
							case 'deletemessage':
								if(!targ.disabled){	
									RPCI.alarm.editor.deleteMessage();
								}
							break;
						}
					}
				}
			break;
			
			case 'SPAN':
				if(targ.id == 'textlanding'){
					RPCI.alarm.editor.startEditor(e);
				}			
			break;
			
			case 'TEXTAREA':
				sb.events.stopAndPrevent(e);
			break;
			
		}
	},
	
	clearText : function(){
		if(RPCI.newmessage){
			RPCI.newmessage.value = '';
			RPCI.newmessage.focus();
		}
	},
	
	
	cancelMessage : function(){		
		RPCI.textlanding.innerHTML = RPCI.alarm.editor.clickHere;
		RPCI.newmessage = null;
		RPCI.alarm.editor.toggleNewMessageButtons(0);
	},
	
	deleteMessage : function(){
		
		var sMess = "Are you sure you want to delete the message: \n ' " + $('#for' + RPCI.alarm.editor.selected).innerHTML.trim() + " '";
		
		
		if(RPCI.alarm.editor.messageSelected()){		
			if(confirm(sMess)){
				
				//disarm the system
				RPCI.alarm.editor.disableActivationButtons();				
				
				new sb.ajax({
					data : 'c=deleteMessage&mid=' + RPCI.alarm.editor.selected,
					url : '/Applications/Alarm/data/process.php'	,
					handler : function(data){
						s$("#line" + RPCI.alarm.editor.selected).remove();						
						RPCI.alarm.editor.selected = -1;
						RPCI.alarm.display.init();
						RPCI.alarm.editor.toggleDeleteButton(false);
					}
				}).fetch();
			}
		}else{
			alert("Please select a message to delete");
		}
		
	},
	
	disableActivationButtons : function(){					
		RPCI.disarm.disabled = RPCI.arm.disabled = true; 
		RPCI.humanstatus.innerHTML = RPCI.alarm.editor.alarmStatusMessages[2];
		
	},
		
	enableActivationButtons : function(bArmable){		
		RPCI.arm.disabled = !bArmable; 
		RPCI.disarm.disabled = bArmable;
		RPCI.humanstatus.innerHTML = RPCI.alarm.editor.alarmStatusMessages[(bArmable)?1:0]
	},	
	
	init : function(){
		
		if(RPCI.alarmform.elements){			
			this.attachEvents();				
			if(this.messageSelected()){	
				
				
				this.toggleDeleteButton(1);
				this.enableActivationButtons(!RPCI.alarm.isArmed());
								
			}else{
				RPCI.humanstatus.innerHTML = RPCI.alarm.editor.alarmStatusMessages[2];
			}
		}
		
	},	
	
	messageSelected : function(){
		var radio;
		var bRet = false;
		var sMess = '';
		//var eles = sb.toArray(RPCI.alarmform.elements);
		var i, radio;
			
	
			
		for(var i=0;i<RPCI.alarmform.elements.length;i++){
			radio = RPCI.alarmform.elements[i];						
			if(radio.type == 'radio' && radio.id != 'messageX'){						
				if(radio.checked){					
					bRet = true; 
					RPCI.alarm.editor.selected = radio.value; 				
				}
			}
		}
		
		
		return bRet;
	},
	
	startEditor : function(e){		
		var targ = sb.events.target(e);
		
		targ.innerHTML = RPCI.alarm.editor.textarea;
		RPCI.newmessage = s$('#newmessage');
		RPCI.newmessage.focus();
		this.toggleNewMessageButtons(1);
	},	
	
	selected : -1,
	
	setMessage : function(oRadio){
		new sb.ajax({
			url : '/Applications/Alarm/data/process.php',
			data : 'c=setMessage&mid=' + RPCI.alarm.editor.selected,
			handler : function(){ RPCI.alarm.display.init();}
		}).fetch();
	},
	
	testBlock : '<div id="alert_div"></div>',
	
	
	textarea : '<textarea id="newmessage" ></textarea>', 	
	
	toggleNewMessageButtons : function(bOn){
		RPCI.editcontrols.css('visibility', (bOn)?'visible':'hidden');	
	}, 
	
	toggleDeleteButton : function(bOn){
		RPCI.deletemessage.disabled = !bOn;
	},
	
	toggleArm : function(bArm){		
			
			RPCI.alarm.editor.enableActivationButtons(!bArm);			
			new sb.ajax({
				url : '/Applications/Alarm/data/process.php',
				data : 'c=toggleArm&arm=' + bArm,
				handler : function(){
					RPCI.alarm.display.init();
				}
			}).fetch();
		
	}
};

/* Display Object */
RPCI.alarm.display = {	
	
	getCurrentMessage : function(func){			
		new sb.ajax({
			url : '/Applications/Alarm/data/process.php',
			format : 'json',
			data : 'c=getCurrentMessage',
			handler : func
		}).fetch();	
	},
	
	init : function(){	
		
		
		if(RPCI.alert_div){		
			if(!sb.timer){sb.include("utils.timer"); sb.timer = sb.utils.timer;}
			
			this.timer = new sb.timer({
				seconds : 30,				
				handler : RPCI.alarm.display.refresh
			});
			//this.timer.begin();
			this.refresh();
		}
	},
	
	fillMessage : function(data){	
		if(RPCI.alert_div.title != data.mid){
				RPCI.alert_div.innerHTML = data.message;
				RPCI.alert_div.title = data.mid;
		}
	},	
	
	refresh : function(){
				
		if(RPCI.alarm.isArmed()){
			RPCI.alarm.display.getCurrentMessage(RPCI.alarm.display.fillMessage);		
		}else{
			RPCI.alarm.display.fillMessage({
				message : '',
				mid : -1
			})
		}
	},
	
	
	
	timer : {
		end : function(){},
		begin : function(){}
	}
};

//RPCI.alarm.init();

