var isLoading = true;
var intervalID;
var eventQueue = new Array();
function doReplace(e) {
  document.location.replace(e.arg + ".jspx");
}

function doDialog(e) {
	var w = '40ex';
	var h = '40ex';
	if(e.arg2)w = e.arg2;
	if(e.arg3)h = e.arg3;
   window.showModalDialog(e.arg + ".jspx", "","dialogWidth:" + w +
                                    ";dialogHeight:" + h + ";help:no;status:no")
   setTimeout("CollectGarbage()",1);
   fireServerEvent("","modalClose",e.arg);
}

function doFramelessDialog(e) {
	var w = '40ex';
	var h = '40ex';
	if(e.arg2)w = e.arg2;
	if(e.arg3)h = e.arg3;
   window.showModalDialog(e.arg + ".jspx", "","dialogWidth:" + w +
                                    ";dialogHeight:" + h + ";unadorned:yes;help:no;status:no")
   fireServerEvent("","modalClose",e.arg);
}

function doTimeout(e) {
  fireServerEvent("","timeout","");
}

function doPrompt(e) {
	var response = prompt(e,"");
	if(response == null)fireServerEvent("","pResponse","!");
	else fireServerEvent("","pResponse",response);
}

function handleResponse(type, data, evt) {
//     alert(" Object: <"+e[i].obj + ">  Type: <" + e[i].type + "> Arg: <" +  e[i].arg + ">   target: <" + dojo.widget.byId(e[i].obj) + ">");
  if(data == "") return;
  var e = eval(data);
  var i;
  for(i=0;i<e.length;i++) {
//     alert(" Object: <"+e[i].obj + ">  Type: <" + e[i].type + "> Arg: <" +  e[i].arg + ">   target: <" + dojo.widget.byId(e[i].obj) + ">");
     if(e[i].obj != "") {
       var target = dojo.widget.byId(e[i].obj);
       if(!target)target = null;
//       if (e[i].type = "data") setValue(e[i].obj,e[i]);
//       else
//       alert(" target: <"+target + ">");
       if(target != null)target.serverEvent(e[i]);
       else if(e[i].type == "*v") {
         setValue(e[i].obj,e[i].arg);
       } 
       else if(e[i].type == "*rv") {
         setReadOnlyValue(e[i].obj,e[i].arg);
       } 
       else alert("Event for object: " + e[i].obj + " not found");
     }
     else {
       if(e[i].type == "replace")doReplace(e[i]);
       else if(e[i].type == "dialog")	{
//       	alert("Show dialog"+intervalID);
//       	clearInterval(intervalID);
       	doDialog(e[i]);
       }	
       else if(e[i].type == "framelessDialog")doFramelessDialog(e[i]);
       else if(e[i].type == "alert")alert(e[i].arg);
       else if(e[i].type == "prompt")doPrompt(e[i].arg);
       else if(e[i].type == "id")frameId = e[i].arg;
       else if(e[i].type == "setSize") {
       	 
       	 if(e[i].arg == "full")e[i].arg = screen.availWidth;
       	 if(e[i].arg2 == "full")e[i].arg2 = screen.availHeight;
       	 window.resizeTo(e[i].arg,e[i].arg2);
       	 var x = (screen.availWidth - e[i].arg)/2;
       	 var y = (screen.availHeight - e[i].arg2)/2;
       	 if(x < 0)x = 0;
       	 if(y < 0)y = 0;
       	 window.moveTo(x,y);
      	 //if(e[i].arg == screen.availWidth)window.moveTo(0,0);
       }

       else if(e[i].type == "close") {
       	window.close();
//       	alert("Close dialog"+intervalID);
       }	
       else if(e[i].type == "timeout")window.setTimeout(doTimeout,e[i].arg);
       else if(e[i].type == "interval"){
       	intervalID = window.setInterval(doTimeout,e[i].arg);
//       	alert("Set Interval="+intervalID);
       }	
       else if(e[i].type == "clearInterval")	{
       	window.clearInterval(intervalID);
//       	alert("clearInterval"+intervalID);
       }	
      }
  }
  if(isLoading) {
    document.getElementById("loading").style.display = 'none';
    isLoading = false;
  }
  if(eventQueue.length > 0) {
  	var e = eventQueue.shift();
  	fireServerEvent(e.obj,e.type,e.arg);
  }
}

function setValue(id,value) {
  var tag = document.getElementById(id);
  if(tag.nodeName == "INPUT")tag.value = value; 
  else if(tag.nodeName == "TEXTAREA")tag.value = value; 
  else if(tag.nodeName == "SELECT")tag.selectedIndex = value; 
  else if(tag.nodeName == "DIV" || tag.nodeName == "SPAN"  )tag.innerHTML = value; 
   
}

function setReadOnlyValue(id,value) {
  var tag = document.getElementById(id);
 	tag.disabled = true
 	this.setValue(id,value);
}




function doLoad() {
	//dojo.event.connect(document.body, 'ondblclick', 'doHtmlDump')
//alert(" do load: <"+document.location + ">");
//alert(" do body load: <"+document.body.toString() + ">");
	if(document.location.search.indexOf("hta=yes") > 0) {
	alert("HTA-.....doLoad")
		var height = 768;
		var width = 1024;
		if(height  > screen.availHeight)height = screen.availHeight;
		if(width  > screen.availWidth)width = screen.availWidth;
		var left = (screen.availWidth - width)/2;
		var top = (screen.availHeight - height)/2;
		window.moveTo(left,top);
		window.resizeTo(width,height);
	}
  fireServerEvent("","start","");
//  document.onselectstart=doSelect;
//  setTimeout("setSize();",250)
}

  
  
function setSize() {   
   if(window.dialogWidth) {
   	 if(document.body.currentStyle.width != 'auto') {
   	 	 this.setSizeFixed();
   	 	 return;
   	 }
   	 if(document.body.firstChild.layout)document.body.firstChild.layout();
     var wMargin = parseInt(window.dialogWidth) -  parseInt(document.body.offsetWidth) ;
     
     var w = parseInt(document.body.firstChild.offsetWidth) + parseInt(wMargin);
     window.dialogWidth = w + "px";
     var hMargin = parseInt(window.dialogHeight) -  parseInt(document.body.offsetHeight) ;
     var h = parseInt(document.body.firstChild.offsetHeight) + parseInt(hMargin);
     window.dialogHeight = h + "px";
   }
}

function setSizeFixed() { 
//	alert("setSizefixed")  
  window.dialogWidth = document.body.currentStyle.width;
  window.dialogHeight = document.body.currentStyle.height;
}

function doHtmlDump() {
	alert(document.body.innerHTML)
}


function doSelect() {
	var type = window.event.srcElement.nodeName; 

	if(type == "INPUT" || type == "TEXTAREA"){
		return true;
	}
	
	return false;

}

function pushServerEvent(obj,type,arg) {
	var e = new Object();
	e.obj = obj;
	e.type = type;
	e.arg = arg;
	eventQueue.push(e);
}

var count = 0;
function fireServerEvent(obj,type,arg) {
   var bindArgs = {
    url: encodeURI("./comms?fId="+frameId+"&o=" + obj + "&t="+ type + "&a1=" +arg+ "&r=" + Math.random()),
    error: function(type, data, evt){
//     alert("An error occurred.  type=" +type+ " frame" +frameId+ " obj=" + obj+ "  arg=" + arg + "  data="+data+ "   evt="+evt);
    },
    load: handleResponse,
    mimetype: "text/plain"
   };
   dojo.io.bind(bindArgs);
}





function fireServerEvent2(obj,type,arg,arg2) {
   var bindArgs = {
    url: encodeURI("./comms?fId="+frameId+"&o=" + obj + "&t="+type+"&a1=" +arg+ "&a2=" +arg2+ "&r=" + Math.random()),
    error: function(type, data, evt){
     alert("An error occurred.");
    },
    load: handleResponse,
    mimetype: "text/plain"
   };

   dojo.io.bind(bindArgs);
}

function fireServerEvent3(obj,type,arg,arg2,arg3) {
   var bindArgs = {
    url: encodeURI("./comms?fId="+frameId+"&o=" + obj + "&t="+type+"&a1=" +arg+ "&a2=" +arg2+ "&a3=" +arg3+ "&r=" + Math.random()),
    error: function(type, data, evt){
     alert("An error occurred.");
    },
    load: handleResponse,
    mimetype: "text/plain"
   };

   dojo.io.bind(bindArgs);
}

function showLoadingMessage() {
	var doc = frames['loading'].document; 
   doc.write('</html>');
   doc.write('<body style="font-weight:bold;font-size:120%;background-color:silver;overflow:hidden">');
   doc.write('<div style="text-align: center;"><IMG SRC="/ennistennis/images/EnnisTennis1.jpg" ALT="logo"></div>');
   doc.write('<p/><br/>');
   doc.write('<div style="text-align: center;"><IMG SRC="/ennistennis/images/ajax-loader.gif" ALT="image"></div>');
   doc.write('</body>');
   frames['loading'].document.write('</html>');
   
   frames['loading'].document.close();
   if ( (navigator.userAgent.indexOf("MSIE")==-1) && (document.body.currentStyle.width.indexOf("100")!=-1) )
      alert("Internet Explorer is required to access Ennis Tennis & Badminton Club Online Booking System ");
}
/*
function setTable(id,e) {
  var tag = document.getElementById(id);
//       var target = dojo.widget.byId(e[i].obj);
//       if (e[i].type = "data") target = "[object Object]";
       alert(" SetTable target: <"+tag + ">");
//       if(!target)target = null;
       if(tag != null)tag.serverEvent(e);
   
}
*/
