function IsCharAlphaNumeric(c) 
{
  return ( ((c >= 'a') && (c <= 'z')) ||
           ((c >= 'A') && (c <= 'Z')) ||
           ((c >= '0') && (c <= '9')) ||
           (c == '.') );
}

function IsStringAlphaNumeric(s) 
{
  for (var i = 0; i < s.length; i++) {
    if (!IsCharAlphaNumeric(s.charAt(i)))
      return false;
  }
  return true;
}

function IsStringEmail( s ) 
{
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if(s.match(emailExp)){
		return true;
	}else{
		return false;
	}
}

function getElementsByClass( searchClass, domNode, tagName) 
{
	if (domNode == null) domNode = document;
	if (tagName == null) tagName = '*';
	var el = new Array();
	var tags = domNode.getElementsByTagName(tagName);
	var tcl = " "+searchClass+" ";
	for(i=0,j=0; i<tags.length; i++) {
		var test = " " + tags[i].className + " ";
		if (test.indexOf(tcl) != -1)
			el[j++] = tags[i];
	}
	
	return el;
}

function toggleLayer( whichLayer )
{
  var elem, vis;
  if( document.getElementById ) // this is the way the standards work
    elem = document.getElementById( whichLayer );
  else if( document.all ) // this is the way old msie versions work
      elem = document.all[whichLayer];
  else if( document.layers ) // this is the way nn4 works
    elem = document.layers[whichLayer];
  vis = elem.style;
  // if the style.display value is blank we try to figure it out here
  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
    vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
}

function cancelElement( elementName )
{ 
	toggleLayer( elementName );
	toggleLayer( elementName + "Edit" );
}

function editElement( elem )
{ 
	var elemForm;
	
	toggleLayer( elem.id );
	toggleLayer( elem.id + "Edit" );
	
	elemForm = document.getElementById( elem.id + "form" );  
	elemForm[0].focus();
}

function editElementByName( elementName )
{ 
	toggleLayer( elementName );
	toggleLayer( elementName + "Edit" );
	
	document.forms[ elementName + "form"][0].focus();
}

function highlightElement( elem )
{ 
	elem.oldColor = elem.style.color;
	elem.style.color = '#cc0000';
}

function normalElement( elem )
{ 
	elem.style.color = elem.oldColor;
}

function editElementHandleEsc( evt, elementName )
{
	evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);

	if ( charCode == 27 )
		cancelElement( elementName );
	
	return true;
}

function editElementHandleEscEnter( evt, elementName ) 
{
	evt = (evt) ? evt : event;
	var target = (evt.target) ? evt.target : evt.srcElement;
	var form = target.form;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
	
	if (charCode == 13)
	{
		form.submit();
		return false;
	}
	
	if ( charCode == 27 )
		cancelElement( elementName );
	
	return true;
}

function setLayerPosVisible( LayerName, XPos, YPos )
{
	var Element;
	
	Element = document.getElementById( LayerName );
	Element.style.visibility = "visible";
	Element.style.top = YPos + "px";
	Element.style.left = XPos + "px";	
}

function clearError( searchClass, domNode, tagName )
{
	var elements = getElementsByClass( searchClass, domNode, tagName );
	
	for( i=0; i < elements.length; i++ ) {
		elements[i].innerHTML = '';
	}	
}

function submitEnter( myField, myEvent )
{
	var keycode;
	if ( window.event ) 
		keycode = window.event.keyCode;
	else 
		if (myEvent) 
			keycode = myEvent.which;
		else 
			return true;
	
	if (keycode == 13)
	{
		myField.form.submit();
		return false;
	}
	else
	{
		return true;
	}
}

// Capturing The Mouse Position in IE4-6 & NS4-6
// (C) 2000 www.CodeLifter.com
// Free for all users, but leave in this  header
var xMousePos = 0; // Horizontal position of the mouse on the screen
var yMousePos = 0; // Vertical position of the mouse on the screen

// Detect if the browser is IE or not.
// If it is not IE, we assume that the browser is NS.
var IE = document.all?true:false;

// If NS -- that is, !IE -- then set up for mouse capture
if (!IE) document.captureEvents(Event.MOUSEMOVE);

// Set-up to use getMouseXY function onMouseMove
document.onmousemove = getMouseXY;

// Main function to retrieve mouse x-y pos.s
function getMouseXY(e) {
  if (IE) { // grab the x-y pos.s if browser is IE
    xMousePos = event.clientX + 
    	(document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); 
    
    yMousePos = event.clientY + 
    	(document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
  } else {  // grab the x-y pos.s if browser is NS
    xMousePos = e.pageX;
    yMousePos = e.pageY;
  }  
  // catch possible negative values in NS4
  if (xMousePos < 0){xMousePos = 0};
  if (yMousePos < 0){yMousePos = 0} ; 

  return true;
}

function setLayerPosVisible( LayerName, XPos, YPos )
{
	var Element;

	Element = document.getElementById( LayerName );
	Element.style.visibility = "visible";
	Element.style.top = YPos + "px";
	Element.style.left = XPos + "px";	
}
