﻿function validEmail(email) {
	// determines if email address is valid
	var reTest = new RegExp('^[A-Za-z0-9._-]+@(?:[A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}$', 'gi');
	return reTest.test(email);
}

function validDate(dateValue) {
	var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
    
	return dateValue.match(RegExPattern);
}

function setEventHandler(target, eventType, eventHandler) {	
	if (window.addEventListener) {
		target.addEventListener(eventType, eventHandler, false);
	}
	else {
		target.attachEvent('on' + eventType, eventHandler);
	}
}

function simulateEvent(target, eventType) {
	if (!document.createEvent) {
		var e = document.createEventObject();         
		target.fireEvent('on' + eventType, e);
	}
	else {
		switch (eventType) {             
			case 'abort':
			case 'blur':
			case 'change':
			case 'error':
			case 'focus':
			case 'load':
			case 'reset':
			case 'resize':
			case 'scroll':
			case 'select':
			case 'submit':
			case 'unload':
				e = document.createEvent('HTMLEvents');
				e.initEvent(eventType, true, true);
				break;
			case 'click':
			case 'mousedown':
			case 'mousemove':
			case 'mouseout':
			case 'mouseover':
			case 'mouseup':
				e = document.createEvent('MouseEvents');
				e.initMouseEvent(eventType, true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
				break;
			}
			
			target.dispatchEvent(e);
	}
}

function getFileName(fileName) {
	var url = (fileName ? fileName : document.URL);	
	return url.substring(url.lastIndexOf('\/') + 1, (url.indexOf('.aspx', url.lastIndexOf('\/') + 1) + 5));
}

function loadJSFile(filename) {
	var scriptTag = document.createElement('script');
	
	scriptTag.setAttribute('type', 'text/javascript');
	scriptTag.setAttribute('src', filename);
 
	document.getElementsByTagName('head')[0].appendChild(scriptTag);
}

function validDecimalKeypress(keyASCII, value) {
	return (validSpecialCharsKeypress(keyASCII) || (keyASCII >= 48 && keyASCII <= 57) || (keyASCII == 46 && value.indexOf('.') == -1));
}

function validNumericKeypress(keyASCII, value) {
	return (validSpecialCharsKeypress(keyASCII) || (keyASCII >= 48 && keyASCII <= 57));
}

function validSpecialCharsKeypress(keyASCII) {
// validates for delete or backspace key being pressed
	return ((keyASCII == 0 || keyASCII == 8 || keyASCII == 37 || keyASCII == 39));
}

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}