﻿
function EventList() {
	this.listEvents = new Array();

	this.add = function(obj, type, fn) {
		if(obj && obj.constructor && obj.constructor == String) {
			obj = document.getElementById(obj);
		}
		
		if(obj) {
			if (obj.addEventListener) {
				obj.addEventListener( type, fn, false );
				this.listEvents.push(new Array(obj,type,fn));
			}
			else if (obj.attachEvent) {
				obj["e"+type+fn] = fn;
				obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
				obj.attachEvent( "on"+type, obj[type+fn] );
				this.listEvents.push(new Array(obj,type,fn));
			}
		}
	}
	        
	this.clear = function() {
		var i, item, eventtype;
		
		while(this.listEvents.length > 0) {
			item = this.listEvents.pop();
			
			if(item[0].removeEventListener){
				item[0].removeEventListener(item[1], item[2], item[3]);
			}
			
			eventtype = item[1];
			 
			if(item[1].substring(0, 2) != "on"){
				item[1] = "on" + item[1];
			}
			
			if(item[0].detachEvent){
				item[0].detachEvent(item[1], item[0][eventtype+item[2]]);
			}
			item[0][item[1]] = null;
		}
	}
}

function GetEventKey(e) {
	if(e) {
		if (e.keyCode) 
			return e.keyCode;
		else if (e.which)
			return e.which;
		else
			return null;
	}
	else {
		return null;
	}
}

function GetEventSource(e) {
	if(e) {
		if(e.srcElement)
			return e.srcElement;
		else if(e.target)
			return e.target;
		else
			return null;
	}
	else {
		return null;
	}
}

function Modal_OnBlur(){
	if (glbModalWin && (!glbModalWin.closed)) {
		glbModalWin.focus();
	}
}

function OpenModal(url, w, h) {
	if(glbModalWin==null || glbModalWin.closed) {
		var winl = (screen.width - w) / 2;
		var wint = (screen.height - h) / 2;

		var winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars=no,resizable=no,menubar=no,toolbar=no,location=no,directories=no,personalbar=no,status =no,dependent=yes'
		glbModalWin = window.open(url, "", winprops);
	}
}

function RowHigh(elem){
	document.getElementById(elem).className="tableHighlight";
}

function RowNorm(elem){
   document.getElementById(elem).className="tableNormalize";
}

function TrimTextAreas(strFormID) {
	var objForm = document.getElementById(strFormID);
	if(objForm) {
		for (i=0; i < objForm.elements.length; ++i){
			objElement = objForm.elements[i];
			if (objElement.type && objElement.type=="textarea" && objElement.value==" "){
				objElement.value = "";
			}
		}
	}
}

function HighlightElem(strElemID) {
	var objElem = document.getElementById(strElemID);
	if(objElem) {
		objElem.focus();
		objElem.select();
	}
}

function ShowHideElements(blnShow, arrElements) {
	for (var i=0; i<arrElements.length; i++){
		var objElement = document.getElementById(arrElements[i]);
		if(objElement) {
			//objElement.style.visibility = blnShow ? "visible" : "hidden";		
			objElement.style.display = blnShow ? "block" : "none";
		}
	}
}

function IsValidDate (s, re, length) {
	//if(DEBUG) return true;
	
	try {
		if(!length) {
			length = 10;
		}
		if(s.length != length) {
			return false;
		}
	
		if(!re) {
			re = /(\d{2})\/(\d{2})\/(\d{4})/;
		}
		var bits = re.exec(s);

		if(!bits) {
			return false;
		}
		else {
			var day = parseInt(bits[1], 10);
			var month = parseInt(bits[2], 10);
			var year = parseInt(bits[3], 10);
			
			if(year < 100) {	// 2 digits entered
				year += 1900;
			}
			
			if(day<=0) return false;
			if(month<=0 || month>12) return false;
			if(year<0 || year>9999) return false;

			if (month==2) {
				if (year%400==0 || (year%100!=0 && year%4==0) ) {
					return day<=29;
				}
				else {
					return day<=28;
				}
			}
			else if (month==4 || month==6 || month==9 || month==11) {
				return (day<=30);
			}
			else {
				return (day<=31);
			}
		}
	}
	catch(e) {
		if(DEBUG) {
			alert("IsValidDate Error:\n" + e.message)
		}
		return false;
	}   
}

//function getInnerText(obj) {
//	if(obj) {
//		if(obj.innerText) return obj.innerText;
//		if(obj.textContent) return obj.textContent;
//		
//		return "";
//	}
//	else
//		return null;
//}

//function setInnerText(obj, text) {
//	if(obj) {
//		if(obj.innerText) {
//			obj.innerText = text;
//		}
//		else if(obj.textContent) {
//			obj.textContent = text;
//		}
//	}
//}