
/*********************************************
	* Javascript Timepicker Script
	* Author JJ May
	* This script is free for your use.
	** Modified by WARLOCK Design Team
	** http://warlock-design.net
*********************************** */

var TIMPICKER_GLOBAL_DEFAULT_INCR = 30; //number of minutes incremented for the time picker hour
var TIMEPICKER_GLOBAL_DEFAULT_START_TIME = 0; //in case we only want to offer times between 9am and 5pm or something
var TIMEPICKER_GLOBAL_DEFAULT_END_TIME = 24; //ditto here. We can limit the start end times. 24 hours is default right now.
var TIMEPICKER_MILITARY_TIME = true;  // If true: 24h format

var initTimePickers = function(){
	var clocks = getElementsByClassName(document,'img','timePickerTrigger');
	for(var i=0;i<clocks.length;i++){
		var targ = clocks[i].className.split(' ')[1];
		clocks[i].setAttribute('targ',targ);
		clocks[i].onclick = function(){TimePicker(this.getAttribute('targ'));};
	}
}
if(window.attachEvent){window.attachEvent('onload',initTimePickers);}/*Dynamic onload IE*/
if(window.addEventListener){window.addEventListener('load',initTimePickers,false);}/*Dynamic onload MOZILLA*/

function setTimeFromPicker(val,objId){
	document.getElementById(objId).value = val;
	document.getElementById(objId).focus();
	document.body.removeChild(document.getElementById('MyOnlyTimePicker'));
}
var TimePicker = function(tObjID){
	//optional argments [,incr,sTm,eTm]
	var tObj = document.getElementById(tObjID);
	this.militaryTime = TIMEPICKER_MILITARY_TIME;
	this.incr = (arguments[1]) ? arguments[1] : TIMPICKER_GLOBAL_DEFAULT_INCR;
	this.sTm = (arguments[2]) ? arguments[2] : TIMEPICKER_GLOBAL_DEFAULT_START_TIME;
	this.eTm = (arguments[3]) ? arguments[3] : TIMEPICKER_GLOBAL_DEFAULT_END_TIME;
	this.cellsPer = 60 / this.incr;
	var pos = findPos(tObj);
	this.xPos = pos[0];
	this.yPos = pos[1]+tObj.offsetHeight;
	this.getTimeLink = function(hr,mn){
		var myTm = this.sTm+hr;
		var myMn = this.incr*mn;
		var hrDsp = myTm;
		if(myTm<10) hrDsp = '0'+myTm;
		if(myTm>12 && this.militaryTime==false)hrDsp = myTm - 12;
		if(myTm==0 && this.militaryTime==false)hrDsp = 12;
		if(myMn==0)myMn = '00';
		var tmDsp = hrDsp+':'+myMn;
		if(this.militaryTime==false){
			tmDsp += (myTm>11)?' pm':' am';
		}
		var myA = document.createElement('a');
		myA.innerHTML = tmDsp;
		myA.href = "javascript:setTimeFromPicker('"+tmDsp+"','"+tObj.id+"');";
		return myA;
	};
	
	if(document.createElement){
		if(document.getElementById('MyOnlyTimePicker')){
			document.body.removeChild(document.getElementById('MyOnlyTimePicker'));
		}
		var tp = document.createElement('div');
		tp.className = 'timePicker';
		tp.id = 'MyOnlyTimePicker';
		tp.style.top = this.yPos+'px';
		tp.style.left = this.xPos+'px';
		this.tbl = document.createElement('table');
		this.tbl.width = '100%';
		this.tbl.cellSpacing='1';
		this.tbl.cellPadding='0';
		for(var i=0;i<this.eTm-this.sTm;i++){ 
			var nr = document.createElement('tr'); 
			for(var j=0;j<this.cellsPer;j++){ 
				var nc = document.createElement('td'); 
				nc.appendChild(this.getTimeLink(i,j)); 
				nr.appendChild(nc); 
			} 
			this.tbl.appendChild(nr); 
		}
		tp.appendChild(this.tbl);
		tp.innerHTML= tp.innerHTML+'<div style="clear:both;"></div>';
		document.body.appendChild(tp);
	}
};

//From RobertNyman.com
function getElementsByClassName(oElm, strTagName, strClassName){ //Borrowed from Robert's talk. Best function ever! Ever. 
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];      
		if(oRegExp.test(oElement.className)){arrReturnElements.push(oElement);}   
	}
	return (arrReturnElements);
}

//From quirksmode.org
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}



