/* General and GUI utility functions */
var isIE;
var isIE6;
var isIE7;
var isIeDeprecated = false;
var displayTableRow;
var displayTbody;


function addOption(sId,sValue,sTxt, isSelected) {
	var theOption = document.createElement('option');
	theOption.value = sValue;
	theOption.text = sTxt;
	if (isSelected) {
		theOption.selected = true;
	}
	try {
		document.getElementById(sId).add(theOption,null);
	}
	/* IE only */
	catch(e) {
		document.getElementById(sId).add(theOption);
	};
}

function checkNumerals(oInput) {
	var numRgx = /^\d*(\.\d\d)?$/;
	var sValue = oInput.value;
	if (!numRgx.test(sValue)) {
		return false;
	}
	return true;
}

function toggleDirection(oForm) {
	var dirTo = document.getElementById('dir').value;
	var alignTo;
	if (dirTo == 'ltr') {
		alignTo = 'left';
	}
	else {
		alignTo = 'right';
	}
	var inputs = document.forms[oForm].elements;
	for (i = 0;i < inputs.length;i++) {
		if (inputs[i].type == 'text' || inputs[i].type == 'textarea') {
			inputs[i].style.direction = dirTo;
			inputs[i].style.textAlign = alignTo;
		}
	}
	if (tinyMCE.activeEditor) {
		tinyMCE.activeEditor.settings.directionality = dirTo;
	}
	if (document.getElementById('preview')) {
		document.getElementById('preview').style.direction = dirTo;
		var kids = document.getElementById('preview').childNodes
		for (var i = 0;i < kids.length;i++) {
			if (kids[i].style) {
				kids[i].style.textAlign = alignTo;
			}
		}
	};
}

function displayModalDialogBox(message) {
	if (navigator.appVersion.indexOf('MSIE 6.0') > -1 && navigator.appVersion.indexOf('MSIE 7.0') < 0) {
		alert(message);
		return false;
	}
	message = '<p>' + message + '</p>';
	message = message.replace(/\n/gi,'</p><p>');
	if (!myAlert) {
		myAlert = new ModalBox();
		myAlert.append();
	}
	messageTitle = myAlert.box.innerHTML;
	myAlert.show(message);
};

function hideModalDialogBox() {
	myAlert.hide();
};

function formatOutput (num) {
	var floored_num = Math.round(num);
	var dec = num - floored_num;
	dec = Math.round(dec*100)/100;
	if (dec == 0) {
		dec = '.00';
	}
	num = floored_num + dec;
	nStr = num + '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
};

function changeImg (sId, src) {
	document.getElementById(sId).src = src;
};

function show(sId, display) {
	if (typeof(display) == 'undefined') {
		display = 'block'
	}
	document.getElementById(sId).style.display = display;
};

function hide(sId) {
	document.getElementById(sId).style.display = 'none';
};

function toggleDisplay(sId) {
	if ($(sId).style.display != 'block') {
		$(sId).style.display = 'block';
	}
	else {
		$(sId).style.display = 'none';
	}
};

function show_vis(sId) {
	document.getElementById(sId).style.visibility = 'visible';
};

function hide_vis(sId) {
	document.getElementById(sId).style.visibility = 'hidden';
};

function slideOpen (sId, finalHeight) {
	var slidingElement = document.getElementById(sId);
	slidingElement.style.height = '1px';
	var actualHeight = 2;
	show (sId);
	var slideInt = setInterval(function () {
		while (actualHeight < finalHeight ) {
			slidingElement.style.height = actualHeight + 'px';
			actualHeight++;
		}
		clearInterval(slideInt);
	}, 500);
};

function slideClose (sId) {
	var slidingElement = document.getElementById(sId);
	var actualHeight = slidingElement.offsetHeight;
	var slideCloseInt = setInterval(function () {
		while (actualHeight >= 1 ) {
			slidingElement.style.height = actualHeight + 'px';
			actualHeight--;
		}
		hide (sId);
		clearInterval(slideCloseInt);
	}, 500);
};

function getInternetExplorerVersion() {
/* Returns the version of Windows Internet Explorer or a -1
(indicating the use of another browser).*/
   var rv = -1; /* Return value assumes failure. (ml> A healthy assumption when dealing with MS) */
   if (navigator.appName == 'Microsoft Internet Explorer')
   {
      var ua = navigator.userAgent;
      var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
      if (re.exec(ua) != null)
         rv = parseFloat( RegExp.$1 );
   }
   return rv;
}

function checkVersion() {
   var msg = "You're not using Windows Internet Explorer.";
   var ver = getInternetExplorerVersion();
   if ( ver> -1 )
   {
      if ( ver>= 8.0 )
         msg = "You're using a recent copy of Windows Internet Explorer."
      else
         msg = "You should upgrade your copy of Windows Internet Explorer.";
    }
   alert( msg );
}
function detectIe () {
	var agentVersion = getInternetExplorerVersion();
	if (agentVersion > -1) {
		isIE = true;
	}
	if (8.0 == agentVersion) {
		isIE8 = true;
	}
	if (6.0 == agentVersion) {
		isIE6 = true;
		isIeDeprecated = true;
	}
	if (7.0 == agentVersion) {
		isIE7 = true;
		isIeDeprecated = true;
	}
	if (isIeDeprecated) {
		if(document.getElementById('ie6Detector')) {
			$('ie6Detector').innerHTML = '<p><img src="Images/close.gif" id="closeIe6Detector" width="16px height="16px" alt="close" title="close" /><a href="http://www.microsoft.com/windows/internet-explorer/default.aspx" target="_blank">Internet Explorer is missing updates required to view this site. Click here to update... </a></p>';
			try {
				slideOpen('ie6Detector', 15);
			}
			catch (e) {
				alert(e);
			}
			$('ie6Detector').onmouseover = function () {
				$('closeIe6Detector').src = 'Images/close-over.gif';
				$('closeIe6Detector').style.backgroundColor = '#3399ff';
				$('ie6Detector').style.backgroundColor = '#3399ff';
				$('ie6Detector').style.color = '#ffffff';
			}
			$('ie6Detector').onmouseout = function () {
				$('closeIe6Detector').src = 'Images/close.gif';
				$('closeIe6Detector').style.backgroundColor = '#FFFFE1';
				$('ie6Detector').style.backgroundColor = '#FFFFE1';
				$('ie6Detector').style.color = '#000000';
			}
			$('closeIe6Detector').onclick = function() {
				slideClose('ie6Detector');
			}
		}
	}
	if (isIE6) {
		var images = document.getElementsByTagName('img');
		for (var i=0;i < images.length;i++) {
			images[i].src = images[i].src.replace(/png/i,'gif');
		}
	}
};

function goFwd(movingBox, fwd, bkwd, srollAmount) {
	if( typeof(srollAmount) == 'undefined') {
		srollAmount = 5
	}
	var movingBox = document.getElementById(movingBox);
	var fwdButton = document.getElementById(fwd);
	var bkButton = document.getElementById(bkwd);
	var tailHeight = movingBox.offsetHeight - movingBox.parentNode.offsetHeight;
	if (bkButton.style.display != 'block') {
		bkButton.style.display = 'block';
	}
	stopAt = -tailHeight;
	var intCounter = 0;
	var slide = setInterval(function() {
		if (intCounter <= step) {
			initPosition -= srollAmount;
			intCounter += 5;
			movingBox.style.top = initPosition + 'px';
		}
		else {
			clearInterval(slide);
			if (initPosition <= stopAt) {
				fwdButton.style.display = 'none';
			}
		}
	},50);
};


function goBack(movingBox, fwd, bkwd, srollAmount) {
	if( typeof(srollAmount) == 'undefined') {
		srollAmount = 5
	}
	var movingBox = document.getElementById(movingBox);
	var fwdButton = document.getElementById(fwd);
	var bkButton = document.getElementById(bkwd);
	if (fwdButton.style.display != 'block') {
		fwdButton.style.display = 'block';
	}
	var intCounter = 0;
	var slide = setInterval(function() {
		if (intCounter <= step) {
			initPosition += srollAmount;
			intCounter += 5;
			movingBox.style.top = initPosition + 'px';
		}
		else {
			clearInterval(slide);
			if (initPosition >= 0) {
				movingBox.style.top = 0
				bkButton.style.display = 'none';
			}
		}
	},50);
};

function clearForm() {
	var formElemenets = document.forms['contact'].elements;
	for (var i = 0;i < formElemenets.length;i++) {
		if (formElemenets[i].type != 'submit' && formElemenets[i].type != 'button') {
			formElemenets[i].value = '';
		}
	}
};

function makeTime (myString) {
	var dateArray = myString.split('-');
	var myDate = new Date();
	myDate.setDate(dateArray[0]);
	myDate.setMonth(dateArray[1] - 1);
	myDate.setFullYear(dateArray[2]);
	return myDate;
}

