﻿var APP_PATH = ''; //no trailing slash
var pleaseWaitTimer; 
var pingTimer;

function addEvent(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, false);
		return true;
	} else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	} else {
		return false;
	}
}

function getScrollOffsetHeight() {
	if (self.pageYOffset) {
		return self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		return document.documentElement.scrollTop;
	} else if (document.body) {
		return document.body.scrollTop;
	} 
}

function getScrollOffsetWidth() {
	if (self.pageYOffset) {
		return self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		return document.documentElement.scrollLeft;
	} else if (document.body) {
		return document.body.scrollLeft;
	}
}

function getViewportHeight() {
	if (window.innerHeight!=window.undefined) return window.innerHeight;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
	if (document.body) return document.body.clientHeight; 
	return window.undefined; 
}

function getViewportWidth() {
	//alert(document.documentElement.clientWidth);
	if (window.innerWidth!=window.undefined) return window.innerWidth; 
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth; 
	if (document.body) return document.body.clientWidth; 
	return window.undefined; 
}

function setPingServer(timeout) {
	if (document.getElementById('__VSID')) {
		var vsid = document.getElementById('__VSID').value;
		pingTimer = setInterval('callServer(APP_PATH + \'/Common/PingServer.aspx?vsid=' + vsid + '\');', timeout);
	} else {
		pingTimer = setInterval('callServer(APP_PATH + \'/Common/PingServer.aspx\');', timeout);
	}
}

function numbersOnly(e, additionalChars) {
	var key;
	var keychar;

	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return false;
	   
	keychar = String.fromCharCode(key);

	// control keys
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) {
	   return true;
	// numbers
	} else if (("0123456789").indexOf(keychar) > -1) {
	   return true;
	} else if ((additionalChars).indexOf(keychar) > -1) {
		return true;
	} else {
	   e.returnValue=false;	
	   return false;
	}
}


function allowOnlyNumeric() { 
    return ((event.keyCode >= 48) && (event.keyCode <= 57)) || (event.keyCode = 13); 
}

function allowOnlyDate(e) {
	try {
		var keycode = e.keyCode ? e.keyCode : e.which;
		var ctrl = e.ctrlKey ? e.ctrlKey : ((e.modifiers == 2) ? (e.modifiers == 2) : false);
		if (! ctrl) {
			switch(keycode) {
				case 36: case 35: case 37: case 39: case 46: case 8: case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 189: case 191: case 9:  case 17:
				case 96: case 97: case 98: case 99: case 100: case 101: case 102: case 103: case 104: case 105: case 111:
					return true;
					break;
				default:
					e.cancelBubble = true;
					e.returnValue = false;
					return false;
					break;
			}
		}
	} catch(e) { }
}

function formatDate(myDate) 
{ 
   var today = new Date(); 
   if (myDate.value.length > 0) 
   { 
      today.setTime(Date.parse(myDate.value)); 
      if (isNaN(today)) 
      { 
         //myDate.value = ""; 
         myDate.value = '';
         alert("Date must be formatted \"mm/dd/yyyy\""); 
         myDate.focus(); 
      } 
   } 
}

function killClocks() {
	clearTimeout(pleaseWaitTimer);
	clearInterval(pingTimer);
}
	
window.onunload=killClocks;

function popUpHelp(pageUrl) {
	window.open(APP_PATH + "/Common/Help/Help.aspx?page=" + pageUrl, "_blank", "height=500,width=700,scrollbars=no,resizable=no,toolbars=no,status=no,menubar=no,location=no")
}

function confirmDelete(message) {
	if (confirm(message)) {
		 return true 
	} else { 
		return false
	}	
}

function flipImage(elemId) {
	var elem = document.getElementById(elemId);
	if (elem.src.indexOf(APP_PATH + '/common/images/minimize.gif') >= 0) { 
		elem.src = APP_PATH + '/common/images/maximize.gif'; 
		elem.alt = 'Expand Section';
		return false;
	} else { 
		elem.src = APP_PATH + '/common/images/minimize.gif';
		elem.alt = 'Collapse Section';
		return true;
	}
}

function focusFirstTextbox(frmElName) { 
	var boxes = document.getElementById(frmElName).getElementsByTagName( 'input' ); 
	var el, i = 0
	while (el = boxes[i++]) {
		if (el.type == 'text') {
			putFocus(el.id);
			break;
		}
	}
} 

//checks all check boxes on a form
function checkUncheckAll(oCheckbox) { 
	var boxes = document.Form1.getElementsByTagName( 'input' ); 
	var el, i = 0, bWhich = oCheckbox.checked; 
	while (el = boxes[i++]) {
		if (el.type == 'checkbox') el.checked = bWhich; 
	}
} 

function checkUncheckAllLike(oCheckbox, NameLike) {  
     var boxes = document.Form1.getElementsByTagName( 'input' );  
     var el, i = 0, bWhich = oCheckbox.checked;  
     while (el = boxes[i++]) { 
          if (el.type == 'checkbox' && el.id.indexOf(NameLike) == 0) el.checked = bWhich;  
     } 
}  

//puts the focus on the specified element
function putFocus(elementId) {
	//IE bug, doesn't work without timeout
	setTimeout('try { document.getElementById(\'' + elementId + '\').focus(); document.getElementById(\'' + elementId + '\').select(); } catch (e) {  }',20); 
}

//on one-textbox forms, actually presses the button instead of just submitting the form when enter is pressed
function pressButtonOnEnter(event, buttonName) {
	try {
		if (event.keyCode == 13) {
			event.cancelBubble = true;
			event.returnValue = false;
			document.getElementById(buttonName).click()
		}
	} catch (e) {
		//do nothing but catch the error
	}
}

function executeOnEnter(event, script) {
	try {
		if (event.keyCode == 13) {
			eval(script);
			event.cancelBubble = true;
			event.returnValue = false;
		}
	} catch (e) {
		//do nothing but catch the error
	}
}

function callServer(remoteScript) {
	try {
		var head = document.getElementsByTagName('head').item(0);
		var old  = document.getElementById('lastLoadedCmds');
		if (old) head.removeChild(old);
		script = document.createElement('script');
		script.src = remoteScript;
		script.type = 'text/javascript';
		script.defer = true;
		script.id = 'lastLoadedCmds';
		void(head.appendChild(script));
		return true;
	} catch (e) {
		//suppress
	}
	return true;
}

function showHide(elementId) {
	try {
		var elem = document.getElementById(elementId);
		if (elem.style.display == 'inline')
			elem.style.display = 'none';
		else
			elem.style.display = 'inline';
	} catch (e) {
		//suppress
	}
}

function setGrayScale(elementId) {
	try {
		var elem = document.getElementById(elementId);
		elem.className = 'grayscale';
	} catch (e) {
		//suppress
	}
}

function hideAll(tagName) {
	var tags = document.getElementsByTagName(tagName);
	for (var i = 0; i < tags.length; i++) {
	   tags[i].style.visibility = 'hidden';
	}
}

function showAll(tagName) {
	var tags = document.getElementsByTagName(tagName);
	for (var i = 0; i < tags.length; i++) {
	   tags[i].style.visibility = 'visible';
	}
}

function centerBB(bb){

   var objLeft = (document.body.clientWidth - this.IFrame.offsetWidth) / 2;
   var objTop = (document.body.clientHeight - this.IFrame.offsetHeight) / 2;
   objLeft = objLeft + document.body.scrollLeft;
   objTop = objTop + document.body.scrollTop;
   
   // Position object
   this.IFrame.style.position = "absolute";
   this.IFrame.style.top = objTop;
   this.IFrame.style.left = objLeft;
}

function Left(str, n) {
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n) {
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function ValidateEmail(Link, TextBox, Image) {
    var obj = document.getElementById(TextBox);
    var lnk = document.getElementById(Link);
    var img = document.getElementById(Image);
    var x = obj.value;
    if (IsEmailValid(x))
    {
		lnk.className = null;
		img.style.display = 'inline';
	}
    else 
    {
		lnk.className = 'disabled';
		img.style.display = 'none';
	}
}

function IsEmailValid(address) {
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (filter.test(address)) return true;
    return false;
}

function findPosX(obj)  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
 }

 function findPosY(obj)  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
 }