var oXml = null;

function timerRequest(uri) {
	oXmlInit();
	//uri += uri.indexOf('edit') != -1 ? '&f_t=' + new Date().getTime() : new Date().getTime() + "/";
	if( oXml != null ) {
		oXml.open("GET", uri, true); //asynchronously or not
		/*
		readyState Status Codes:
		0 = uninitialized
		1 = loading
		2 = loaded
		3 = interactive
		4 = complete
		*/
		oXml.onreadystatechange = function() {
			if (oXml.readyState == 4) {
				if (oXml.status == 200) {
					//var timerID = uri.split('/')[4] || uri.split('&')[3].replace('f_localID=','');
					var timerID = '-9999';
					var oTimer = ekTicker[timerID];
					var newTime = (new Function("return " + oXml.responseText.toString() )());
					if( uri.indexOf('start') != -1 ) {
						oTimer.toggleStart('none');
						oTimer.toggleStop('inline');
						oTimer.toggleIcon(1);
						//oTimer.init(newTime); // two data values come across during start, the new DB ID and the time
						oTimer.tick(1);
						oTimer.tID = newTime;
						oTimer.setUris();
						//d("started:"+oTimer.timeTotal['minutes']+':'+oTimer.timeTotal['seconds']);
					}else if( uri.indexOf('stop') != -1 ) {
						oTimer.time = 0;
						oTimer.counter = 0;
						oTimer.init(newTime);
						oTimer.toggleStart('inline');
						oTimer.toggleStop('none');
						oTimer.toggleIcon(0);
					    if (oTimer.timer.checkRegister(oTimer.timerID) == oTimer.ID) {
						    oTimer.timer.clearTimeout(oTimer.timerID);
					    }
						//d("stopped:"+oTimer.timeTotal['minutes']+':'+oTimer.timeTotal['seconds']);

					}else if( uri.indexOf('edit') != -1 ) {
						oTimer.toggleText(false, false, true);
						oTimer.toggleAnimation(false);
						ekCurrent = null;
					}else if( uri.indexOf('clear') != -1 ) {
						if ( oTimer.refID < 0 ) {
							oTimer.toggleText(false, true);
							oTimer.toggleAnimation(false);
						}
						oTimer.time = 0;
						oTimer.counter = 0;
						oTimer.init(newTime);
					    if (oTimer.timer.checkRegister(oTimer.timerID) == oTimer.ID) {
						    oTimer.timer.clearTimeout(oTimer.timerID);
					    }
						oTimer.destroy();
						// now completely destroy it
						if (oTimer.refID > 0 || ekGeneralTickerCounter > 1) {
						    ekTicker[timerID] = undefined;
						}

						// IE will destroy all page timers. make sure timers don't stop.
						if (document.all) { // only apply to IE 6 or lower
						    for (var tmp_timer in ekTicker) { // loop through the timers
						        if (tmp_timer.match(/^[0-9\-]+$/)) { // make sure the timer is an actual timer and not an array property
						            if (ekTicker[tmp_timer] != undefined) { // make sure the timer exists and is not undefined
						                if (tmp_timer != 0 && ekTicker[tmp_timer].counter) { // make sure it is running and is not the general timer
						                    // clear the interval and restart the clock
						                    ekTicker[tmp_timer].timer.clearTimeout(ekTicker[tmp_timer].timerID);
						                    ekTicker[tmp_timer].tick(1);
						                }
						            }
						        }
						    }
						} // END stupid IE block.
					}
				}
			}
		}
		oXml.send(null);
	}
}

function oXmlInit() {
	try {
		oXml = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			oXml=new ActiveXObject("Microsoft.XMLHTTP");
		} catch (oc) {
			oXml=null;
		}
	}
	if(!oXml && typeof XMLHttpRequest != "undefined") {
		oXml = new XMLHttpRequest();
	}
}

