using("ibsys.ajaxfeed");

ibsys.ajaxfeed.Construct = function(url, divTagName, execInnerHtml) {
	this.url = url;
	this.divTagName = divTagName;
	this.timer = null;
	this.interval = 30000;
	this.execInnerHtml = execInnerHtml;
}

ibsys.ajaxfeed.Construct.prototype = {

	getExternalFeed: function() {
	  //alert ("timer:" + this.timer);
	  var self = this;
	  var request;
	  try {
	    request = new XMLHttpRequest();
	  } catch (trymicrosoft) {
	    try {
	      request = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch (othermicrosoft) {
	      try {
	        request = new ActiveXObject("Microsoft.XMLHTTP");
	      } catch (failed) {
	        request = false;
	      }
	    }
	  }
	
	  if (!request)
	    alert("Error initializing XMLHttpRequest!");
	
	//  createRequest(); 
	  request.open("GET", self.url, true);
	  request.onreadystatechange = function(){
	  	self.updatePage(request);
	  };
	  request.send(null);
	},
	
	updatePage: function (request) {
	  var self = this;	
	  if (request.readyState == 4)
	  {
	    var response = request.responseText;
	    //alert(this.divTagName);
	    //alert(response);
	    var content = document.getElementById(this.divTagName);
	    content.innerHTML = response;
	    if (this.execInnerHtml == 'true'){
	    	self.execJS (content);
	  	}
	  }	
	},
	
	startRefreshTimer: function (){
		var self = this;
		if (this.timer == null){
			//alert ('timer started');
			this.timer = window.setInterval(function() {
					self.getExternalFeed();
					}, self.interval);
		}
		else{
			//alert ('there is a time:' + this.timer);
		}		 
	},
	
	stopRefreshTimer: function(){
		if (this.timer > 0){
			//alert ('timer stopped:' + this.timer);
			window.clearInterval(this.timer);
			this.timer = null;
		}	
	},
	
	execJS: function(node)
	{
	  var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
	  var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
	  var bMoz = (navigator.appName == 'Netscape');
	
	  if (!node) return;
	
	  /* IE wants it uppercase */
	  var st = node.getElementsByTagName('SCRIPT');
	  var strExec;
	
	  for(var i=0;i<st.length; i++)
	  {
	    if (bSaf) {
	      strExec = st[i].innerHTML;
	      st[i].innerHTML = "";
	    } else if (bOpera) {
	      strExec = st[i].text;
	      st[i].text = "";
	    } else if (bMoz) {
	      strExec = st[i].textContent;
	      st[i].textContent = "";
	    } else {
	      strExec = st[i].text;
	      st[i].text = "";
	    }
	
	    try {
	      var x = document.createElement("script");
	      x.type = "text/javascript";
	
	      /* In IE we must use .text! */
	      if ((bSaf) || (bOpera) || (bMoz))
	        x.innerHTML = strExec;
	      else x.text = strExec;
	
	      document.getElementsByTagName("head")[0].appendChild(x);
	    } catch(e) {
	      alert(e);
	    }
	  }
	}
}

using("ibsys.ajaxtabbox");
ibsys.ajaxtabbox.build = function(sw, divTagName, activeTab)
{
	var tbars = document.getElementsByClassName('tbox tabs',sw)[0];
	var boxes = document.getElementsByClassName('tbox contents',sw)[0];
	var ctrls = tbars.getElementsByTagName('a');
	var contents = boxes.childNodes;
	var existingDefaultTab = false;
	for (var ii = 0; ii < ctrls.length; ii++) {
		ctrls[ii].onclick = ibsys.ajaxtabbox.display(ctrls,contents,ii,divTagName);
		if (Element.hasClassName(ctrls[ii].parentNode,"tbox_tab_active"))
		  existingDefaultTab = true;
	}
	for (var ii = 0; ii < contents.length && contents[ii].nodeType != 1; ii++) {
		boxes.removeChild(contents[ii]);
	}
	
	if (! existingDefaultTab) {
		var ctrls = document.getElementById(activeTab);
		Element.addClassName(ctrls.parentNode,'tbox_tab_active');
		Element.addClassName(contents[0],'tbox_tab_active');
	}
}
ibsys.ajaxtabbox.display = function(ctrls,contents,ii,tagName)
{
	return function()
	{
		var url = document.getElementById(ctrls[ii].id + '_Url').value;
		//alert (url);
				
		//determin if the day links should be display
		if (document.getElementById('scorecentraldaylinks')){
			var dayLinkDiv = document.getElementById('scorecentraldaylinks');
			if (document.getElementById(ctrls[ii].id + '_scorecentraldaylinks')){
				var thisDayLink = document.getElementById(ctrls[ii].id + '_scorecentraldaylinks');
				dayLinkDiv.innerHTML = thisDayLink.innerHTML;
				dayLinkDiv.style.display = "block";
			}
			else{
				dayLinkDiv.style.display = "none";
			}
		}
		
		//stop the previous timer and start a new one
		if (typeof ibsys.ajaxtabbox.fragmentRefresher == "object"){
			ibsys.ajaxtabbox.fragmentRefresher.stopRefreshTimer();
		}	
		ibsys.ajaxtabbox.fragmentRefresher = new ibsys.ajaxfeed.Construct(url, tagName, 'true');
		//get the external feed
		ibsys.ajaxtabbox.fragmentRefresher.getExternalFeed();
		
		for (var n=0; n<ctrls.length; n++)
		{
			Element.removeClassName(ctrls[n].parentNode,'tbox_tab_active');
	//		Element.removeClassName(contents[n],'tbox_tab_active');
		}
		
		Element.addClassName(ctrls[ii].parentNode,'tbox_tab_active');
		//Element.addClassName(contents[ii],'tbox_tab_active');
		//this.blur();
		
		return false;
	}
}

