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(blockId) {
	var ele = document.getElementById("itemDetails_"+blockId);
	var link = document.getElementById("itemLink_"+blockId);
	if (!ele) { return; }

	if(ele.style.display == "block") {
    		ele.style.display = "none";
		link.style.display = "block";
  	}
	else {
		ele.style.display = "block";
		link.style.display = "none";
	}
}

// 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, sellText){
	previewPopupLayer(url, title, sellText, '');
}

function previewPopupLayer(url, title, sellText, popupWidth) {
	var shim = document.getElementById('divPopupLayer_shim');
	var layer = document.getElementById('divPopupLayer_container');
	var loader = document.getElementById('popupLoader');
	layer.getElementsByTagName('SPAN')[0].innerHTML = '';
	var htmlString = '';
	if(popupWidth != '' && popupWidth != 0){
		if (is.ie) {

			layer.style.width = parseInt(popupWidth) + 4;
		}
		else {
			layer.style.width = popupWidth;
		}
	}
	else {
		if (is.ie) {
			layer.style.width = "604";
		}
		else {
			layer.style.width = "600";		
		}
	}
	//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/4 + document.body.scrollTop-20;
		//layer.style.left = window.screen.width/3 + document.body.scrollLeft;
		layer.style.left = window.screen.width/3.7;
//		loader.attachEvent('onload', populate);
	}
	else {
		layer.style.top = window.innerHeight/4 + window.pageYOffset-20;
		//layer.style.left = window.innerWidth/4 + window.pageXOffset;
		layer.style.left = window.innerWidth/3.7;
//		loader.addEventListener('load', populate, false);
	}
	loader.src = url;
	layer.getElementsByTagName('DIV')['headerText'].innerHTML = title;
	
	htmlString = "<img src='"+url+"' alt='"+title+"' />";
	if(sellText != ''){
		htmlString += "<br/>"+ sellText;
	}

	if (is.mz) {
		layer.getElementsByTagName('SPAN')[0].innerHTML = htmlString;
	}
	else if (is.ie) {
		layer.getElementsByTagName('SPAN')[0].innerHTML = htmlString;
	}
	shim.style.width = layer.offsetWidth;
	shim.style.height = layer.offsetHeight;
	if (is.ie) shim.style.display = 'block';

	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;
	}
}

function validate_required(field,alerttxt)
{
with (field)
  {
  if (value==null||value=="")
    {
    alert(alerttxt);return false;
    }
  else
    {
    return true;
    }
  }
}

function validate_numeric(field,alerttxt)
{
with (field)
  {
  if (value != null && value != "" && value != parseInt(value))
    {
    alert(alerttxt);return false;
    }
  else
    {
    return true;
    }
  }
}

function cleardiv(id) {
	//safe function to clear html from an element with a specified id

	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).innerHTML = '';
	}
}

function showdiv(id) {
	//safe function to show an element with a specified id

	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'block';
	}
}

function hidediv(id) {
	//safe function to hide an element with a specified id

	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'none';
	}
}

function echeck(str) {

		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1){
		   alert("Invalid E-mail ID");
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail ID");
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail ID");
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail ID");
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail ID");
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail ID");
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail ID");
		    return false;
		 }

 		 return true;		
	}

function ValidateEmailForm(){
	var emailID=document.getElementById('email');
	if ((emailID.value==null)||(emailID.value=="")){
		alert("Please Enter your Email ID");
		emailID.focus();
		return false;
	}
	if (echeck(emailID.value)==false){
		emailID.value="";
		emailID.focus();
		return false;
	}
	return true;
 }
function textChange(elementID, defaultText)
{
   var element = document.getElementById(elementID);

   if(element.value == defaultText)
   {
      element.value = "";
   }
   else if(element.value == "")
   {
      element.value = defaultText;
   }
}

function setFileValue(selectBox, fileValue) {
	var dropDown = document.getElementById(selectBox);

	for(i=0; i < dropDown.length;i++)
	{
		if(dropDown.options[i].value==fileValue)
		{
			dropDown.selectedIndex=i
		}
	}
}
function checkDateFormat(formName, fieldName){
	var dateStr = new Date();
	try {
		var dateOutput = dateFormat(document.form[formName].timestamp.value, "myDate");
		document.form[formName].timestamp.value = dateOutput;
		return true;
	}
	catch (e) {
		alert("Please enter a valid date.");
		document.form[formName].timestamp.focus();
		return false;
	}
}
function popUp(page, windowName, width, height, pageNumber) {
	eval("window.open('"+page+"','"+windowName+"',"+pageNumber+",'toolbar=0,scrollbars=1,location=0,status=0,menubars=0,resizable=0,width="+width+",height="+height+"')")
}
