var is = {};
is.ie = (document.all) ? true : false;
is.mz = (!document.all && document.getElementById && window.navigator.vendorSub != null) ? true : false;
is.sf = (!document.all && document.getElementById && window.navigator.vendorSub == null) ? true : false;
var contextPath;
var viewButtonTimers = new Array();
var hideButtonTimers = new Array();
var buttonCheat = false;
var toolLayer = new Object(); // USED IN ROLL OVER TIP IN SORT LOGIC
var popupMovable = false;
var popupOffsetX = 5;
var popupOffsetY = 5;

function contains(anArray, element) {
  for (var i = 0; i < anArray.length; i++) {
    if (anArray[i] == element) {
      return true;
    }
  }
  return false;
}

function arrayIndexOf(anArray, element) {
  for (var i = 0; i < anArray.length; i++) {
    if (anArray[i] == element) {
      return i;
    }
  }
  return -1;
}

function stopHere(event) {
  if (is.mz) {
    event.preventDefault();
    event.stopPropagation();
  }
  else if (is.ie) {
    event.cancelBubble = true;
  }
}

function getTarget(event, expectedTag) {
  if (is.mz || is.sf) {
    return event.currentTarget;
  }
  else if (is.ie) {
    return findRecursive(event.srcElement, expectedTag);
  }
}

function findRecursive(element, expectedTag) {
  var parent = is.ie ? element.parentElement : is.mz ? element.parentNode : element.offsetParent;
  if (element.tagName == expectedTag) {
    return element;
  }
  else if (parent == null) return element;
  else return findRecursive(parent, expectedTag);
}

function argsToURL(url, args) {
	for (i in args) url = url + (url.indexOf('?') == -1 ? '?' : '&') + i + '=' + args[i];
	return url;
}

function toggle(a){
	var e=document.getElementById(a);
	if (!e) return true;
	if (e.style.display=="none") {
		e.style.display="block"
	}
	else{
		e.style.display="none"
	}
	return true;
}

// move this to its own file, since it's not a real "util" function
function showViewButton(theId) {
	viewButtonTimers[theId] = window.setTimeout("document.getElementById('preview_button_" + theId + "').style.display = 'block'", 500);
}

function hideViewButton(theId) {
	hideButtonTimers[theId] = window.setTimeout("if (!buttonCheat) { window.clearTimeout(viewButtonTimers['" + theId + "']); document.getElementById('preview_button_" + theId + "').style.display = 'none'; }", 50);
}

function previewPopupLayer(url, title) {
	var shim = document.getElementById('divPopupLayer_shim');
	var layer = document.getElementById('divPopupLayer_container');
	var loader = document.getElementById('popupLoader');
	layer.getElementsByTagName('SPAN')[0].innerHTML = '';
	layer.getElementsByTagName('P')[0].style.display = 'block';
	function populate(event) {
		layer.getElementsByTagName('P')[0].style.display = 'none';
		if (is.mz) layer.getElementsByTagName('SPAN')[0].innerHTML = loader.contentDocument.body.innerHTML;
		else if (is.ie) layer.getElementsByTagName('SPAN')[0].innerHTML = frames['popupLoader'].document.body.innerHTML;
		shim.style.width = layer.offsetWidth;
		shim.style.height = layer.offsetHeight;
		if (is.ie) shim.style.display = 'block';
	} 
	if (is.ie) {
		layer.style.top = window.screen.height/3 + document.body.scrollTop;
		layer.style.left = window.screen.width/3 + document.body.scrollLeft;
		loader.attachEvent('onload', populate);
	}
	else {
		layer.style.top = window.innerHeight/3 + window.pageYOffset;
		layer.style.left = window.innerWidth/3 + window.pageXOffset;
		loader.addEventListener('load', populate, false);
	}
	loader.src = contextPath + url;
	layer.getElementsByTagName('DIV')['headerText'].innerHTML = title;
	shim.style.top = layer.style.top;
	shim.style.left = layer.style.left;
	layer.style.display = 'block';
}

function closePopupLayer() {
	document.getElementById('divPopupLayer_container').style.display = 'none';
	document.getElementById('divPopupLayer_shim').style.display = 'none';
}

function movePopup(event) {
	var shim = document.getElementById('divPopupLayer_shim');
	var layer = document.getElementById('divPopupLayer_container');
	var X;
	var Y;
	if (is.ie) {
		X = (event.clientX + document.body.scrollLeft) - 4;
		Y = (event.clientY + document.body.scrollTop) - 4;
	}
	else {
		X = event.pageX;
		Y = event.pageY;
	}
	shim.style.top = Y - popupOffsetY;
	shim.style.left = X - popupOffsetX;
	layer.style.top = Y - popupOffsetY;
	layer.style.left = X - popupOffsetX;
	stopHere(event);
}

// ROLL-OVER TIP ON SORT LOGIC
function showtip(current,textTip){
	var boxLength = textTip.length * 6;
	if (boxLength < 20) boxLength += 8;
	boxLength = boxLength +"px";
	toolLayer = document.getElementById("toolTip");
	toolLayer.position = returnPosition(toolLayer);
	var linkOver = document.getElementById(current);
	linkOver.position = returnPosition(current);
	setObjPosition(toolLayer,linkOver.position.x+10,linkOver.position.y+30);
	toolLayer.innerHTML = "<div style='width:"+boxLength+";height:15px;border:1px solid #000;background-color:#fff;font-size:9px;color:#000;'>"+textTip+"</div>";
	toolLayer.style.visibility="visible";
}

function hidetip(){
	var toolLayer = document.getElementById("toolTip");
	toolLayer.style.visibility="hidden";
}

function returnPosition(target){
	var x = 0;
	var y = 0;
	var tempObj = new Object();
	var obj = (typeof target == "object" ? target : document.getElementById(target));
	while (obj.offsetParent != null) {
		x += obj.offsetLeft;
		y += obj.offsetTop;
		obj = obj.offsetParent;
	}
	x += obj.offsetLeft;
	y += obj.offsetTop;
	tempObj.x = x;
	tempObj.y = y;
	return tempObj;
}

function setObjPosition(objLayer,intX,intY) {
	strX = String(intX);
	strY = String(intY);
	objLayer.style.top = intY + (strY.indexOf("px") == -1 ? "px" : "");
	objLayer.style.left = intX + (strX.indexOf("px") == -1 ? "px" : "");
}

function validateEmail(){
	if(!emailCheck(document.signUp.emailSignUp.value)){
		document.signUp.emailSignUp.style.color = "red";
		document.signUp.emailSignUp.value = "Invalid Email";
		return false;
	}
	else{
		return true;
	}
}
