// JavaScript Document

/**
 * stripe tables
 */
function stripe(sTable) {
	/* recolor here */
	if (typeof sTable == "string") {
		sTable = document.getElementById(sTable);
	}
	
	// check if the table is defined before continuing
	if(sTable != undefined) {
		var row = null;
		
		// counter for visible rows
		var vr = 0;
		
		// go through each row in the table
		for(var i=0; i<sTable.getElementsByTagName("TBODY")[0].rows.length; i++) {
			row = sTable.getElementsByTagName("TBODY")[0].rows[i];
			if(i == 0) {
				prevRow = row;
				row.className = "oddRow";
			} else {
				prevRow =	sTable.getElementsByTagName("TBODY")[0].rows[i-1];
			}

			spanningRow = false;
			groupedRow = false;
			
			// compare row IDs
			if(row.id.length > 0 && prevRow.id.length > 0) {
				hLocR = row.id.indexOf("-");
				hLocP = prevRow.id.indexOf("-");
				if(row.id == prevRow.id) {
					groupedRow = true;
					if(vr == 0) vr=1;
					//alert(row.id.substring(0,hLocR) + "\n" + prevRow.id.substring(0,hLocP) + "\n#" + groupedRow);
				}
			}
		
			//	alert(row.childNodes[1].attributes.getNamedItem("colspan").value + "//" + row.childNodes[1].innerHTML);

			//	if(row.childNodes[0].hasAttribute && row.childNodes[0].hasAttribute("colspan")) {
			if(row.childNodes[0].nodeName != "#text") {
				if(row.childNodes[0].attributes.getNamedItem("colspan").value > 1 ) { //&& prevRow.childNodes[0].attributes.getNamedItem("colspan").value == 1
					spanningRow = true;
				} else {
					spanningRow = false;
				}
			} else if(row.childNodes[1].hasAttribute("colspan")) { // && !prevRow.childNodes[1].hasAttribute("colspan")
					spanningRow = true;
				} else {
					spanningRow = false;
			}


			// check if the row is visible... don't want to stripe invisible rows
			if(row.style.display != "none" && !spanningRow && !groupedRow) {
				vr++;
				// if the row index is even, set the row class to the even
				if(vr % 2 == 0) {
					row.className = "evenRow";
				}
				else
				{
					row.className = "oddRow";
				}		
			}	else if(spanningRow || groupedRow) {
					row.className = prevRow.className;
			}
			
		} // end for loop
	}
}

/**
 * go to a URL
 */
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}

// Opens Popup Dialog
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_openMDialog(theURL,args,features) { //v2.0
  var returnedValue = window.showModalDialog(theURL,args,features);
  eval (returnedValue);
}

/**
 * --GetObjectValue--
 * 	Get the value for the field identified by objID. The method for obtaining the value depends upon the
 * 	object's type.
 * 
 *  Parameters:
 * 			objID - Element ID of the field for which the value is to be obtained
 * 
 *  Returns:
 * 			Value of the field
*/
function GetObjectValue(objID) {
	var value = "";
	
	var element = document.getElementById(objID);

	// check that the element.id and objID are equal. If IE can't find an ID then it looks at name but we check for name later
	if (element != null && element.id == objID) { 
		switch (element.type) {
			case "checkbox":
			case "radio":
				//alert('checkbox/radio: ' + element.id);
				value = element.checked;
				break;
			case "text":
			case "textarea":
			case "password":
			case "hidden":
			case "file":
				//alert('text/textarea/password/hidden/file: ' + element.id);
				value = element.value;
				break;
			case "select-one":
				//alert('select-one: ' + element.id + " : length = " + element.options.length);
				if (element.options.length > 0) {
				   value = element.options[element.selectedIndex].value;
				}
				if(value == "" && element.selectedIndex != 0) {
				   value = element.options[element.selectedIndex].text;
				}
				break;
			case "select-multiple":
				//alert('select-multiple: ' + element.id + " : length = " + element.options.length);
				value = '|';
				for (j = 0; j < element.options.length; j++) {
				  if (element.options[j].selected) {
					value += element.options[j].text + "|";
				  }
				}
				if (value == '|') {
					value = '';
				}
				break;
		}
	}
	// element doesn't exist or objID = radio/checkbox name
	else {
		var els = document.getElementsByName(objID);
		
		// els exists
		if(els.length > 0) {
			// if radio
			if(els[0].type == "radio") {
				for(var i = 0; i < els.length; i++) {
					if(els[i].checked) return els[i].value;
				}
			}
			// if checkbox
			else if(els[0].type == "checkbox") {
				var vals = "";
				for(var i = 0; i < els.length; i++) {
					if(els[i].checked) {
						vals += els[i].value + ",";
					}
				}
				
				if(vals.substring(vals.length-1,vals.length) == ",") {
					vals = vals.substring(0,vals.length-1);
				}
				
				return vals;
			}
		}
	}
	
	return value;
}


/**
 * --SetObjectValue--
 * 	Set the value for the field identified by objID. The method for setting the value depends upon the
 * 	object's type.
 * 
 * 	Parameters:
 * 			objID - Element ID of the field for which the value is to be set
 * 
 * 	Returns:
 * 			nothing
 */
function SetObjectValue(objID, value) {
	
	var element = document.getElementById(objID);
	if (element != null) {
		switch (element.type) {
			case "checkbox":
			case "radio":
				//alert('checkbox/radio: ' + element.id);
				element.value = value;
				break;
			case "text":
			case "textarea":
			case "password":
			case "hidden":
			case "file":
				//alert('text/textarea/password/hidden/file: ' + element.id);
				element.value = value;
				break;
			case "select-one":
				//alert('select-one: ' + element.id + " : length = " + element.options.length);
				for (var i=0; i<element.options.length; i++) {
						if(element.options[i].value == value || element.options[i].text.toLowerCase() == value.toLowerCase()) {
							element.selectedIndex = i;
						}
				    //value = element.options[element.selectedIndex].value;
				}
				break;
				/*
			case "select-multiple":
				//alert('select-multiple: ' + element.id + " : length = " + element.options.length);
				value = '|';
				for (j = 0; j < element.options.length; j++) {
				  if (element.options[j].selected) {
					value += element.options[j].text + "|";
				  }
				}
				if (value == '|') {
					value = '';
				}
				break;
				*/
		}
	}
	
	return value;
}

function addClassName(el, sClassName) {
	var s = el.className;
	var p = s.split(" ");
	var l = p.length;
	for (var i = 0; i < l; i++) {
		if (p[i] == sClassName)
			return;
	}
	p[p.length] = sClassName;
	el.className = p.join(" ").replace( /(^\s+)|(\s+$)/g, "" );
}

function removeClassName(el, sClassName) {
	var s = el.className;
	var p = s.split(" ");
	var np = [];
	var l = p.length;
	var j = 0;
	for (var i = 0; i < l; i++) {
		if (p[i] != sClassName)
			np[j++] = p[i];
	}
	el.className = np.join(" ").replace( /(^\s+)|(\s+$)/g, "" );
}

function hasClassName(el, sClassName) {
	var hasClass = false;
	var s = el.className;
	var p = s.split(" ");
	var np = [];
	var l = p.length;
	var j = 0;
	for (var i = 0; i < l; i++) {
		if (p[i] == sClassName)
			hasClass = true;
	}
	
	return hasClass;
}

// Error Message Console
function clearMessageArea() {  // Clears message and error consoles on mouse down or key down 
		var existElement=document.getElementById('divMessageConsole');
		if (existElement) {document.getElementById('divMessageConsole').style.display="none";}
		var existElement=document.getElementById('txtMessageConsoleTitle');
		if (existElement) {document.getElementById('txtMessageConsoleTitle').innerHTML="";}
		var existElement=document.getElementById('txtMessageConsole');
		if (existElement) {document.getElementById('txtMessageConsole').innerHTML="";}
		flagStatusMessage = false;
}


/*function clearMessageArea() {  // Clears message and error consoles on mouse click 
		var existElement=document.getElementById('divMessageConsole');
		if (existElement) {document.getElementById('divMessageConsole').style.display="none";}
		var existElement=document.getElementById('txtMessageConsoleTitle');
		if (existElement) {document.getElementById('txtMessageConsoleTitle').innerHTML="";}
		var existElement=document.getElementById('txtMessageConsole');
		if (existElement) {document.getElementById('txtMessageConsole').innerHTML="";}
		flagStatusMessage = false;
		var nextURL=getCookie('cookieNextURL');		// Get cookie from displayMessage function
		if (nextURL != 'self') {									// If we need to display a different page,
			MM_goToURL('parent',nextURL);              // Display the different page.
		}
}*/


// Function for displaying messages to the user. To use this, you must have a server-side include on the page
// usually located immediately below the Content DIV (divContent) that gets the file "incMessageConsole.shtml". 
// Parameters:
//   msgType:  info, warning, error 
//   msgTitle: A short title to be displayed in the "title bar" of error message
//   msgText:  A sentence or two that describes the error and tells the user what action they need to take to correct the error.
function displayMessage(msgType,msgTitle,msgText) {
		var existElement=document.getElementById('divMessageConsole');
		if (existElement) {document.getElementById('txtMessageConsoleTitle').innerHTML=msgTitle;}	
		if (existElement) {document.getElementById('txtMessageConsole').innerHTML=msgText;}	
		existElement=document.getElementById('txtMessageConsoleTitle');
		window.location="#ancTop";
		switch (msgType) {
		case 'info':
			document.getElementById('divMessageConsole').className="msgTypeInfo";
			document.getElementById('imgMsgIcon').src="images/iconMsgInfo.png";
			document.getElementById('divMessageConsole').style.display="block";
		break
		case 'warning':
			document.getElementById('divMessageConsole').className="msgTypeWarning";
			document.getElementById('imgMsgIcon').src="images/iconMsgWarning.png";
			document.getElementById('divMessageConsole').style.display="block";
		break
		case 'error':
			document.getElementById('divMessageConsole').className="msgTypeError";
			//document.getElementById('imgMsgIcon').src="images/iconMsgError.png";
			document.getElementById('divMessageConsole').style.display="block";
			
		break
		case 'help':
			document.getElementById('divMessageConsole').className="msgTypeHelp";
			document.getElementById('imgMsgIcon').src="images/iconMsgHelp.png";
			document.getElementById('divMessageConsole').style.display="block";
		break
		default:
			document.getElementById('divMessageConsole').style.display="none";
		break
	}
  window.location="#ancTop";
}

/*function displayMessage(msgType,msgTitle,msgText,nextURL) {
		var existElement=document.getElementById('divMessageConsole');
		if (existElement) {document.getElementById('txtMessageConsoleTitle').innerHTML=msgTitle;}	
		if (existElement) {document.getElementById('txtMessageConsole').innerHTML=msgText;}	
		window.location="#ancTop";
		switch (msgType) {
		case 'info':
			document.getElementById('divMessageConsole').className="msgTypeInfo";
			document.getElementById('imgMsgIcon').src="images/iconMsgInfo.png";
			document.getElementById('divMessageConsole').style.display="block";
		break
		case 'warning':
			document.getElementById('divMessageConsole').className="msgTypeWarning";
			document.getElementById('imgMsgIcon').src="images/iconMsgWarning.png";
			document.getElementById('divMessageConsole').style.display="block";
		break
		case 'error':
			document.getElementById('divMessageConsole').className="msgTypeError";
			document.getElementById('imgMsgIcon').src="images/iconMsgError.png";
			document.getElementById('divMessageConsole').style.display="block";
		break
		case 'help':
			document.getElementById('divMessageConsole').className="msgTypeHelp";
			document.getElementById('imgMsgIcon').src="images/iconMsgHelp.png";
			document.getElementById('divMessageConsole').style.display="block";
		break
		default:
			document.getElementById('divMessageConsole').style.display="none";
		break
	}
  window.location="#ancTop";  // Scroll to top of page so that the message is visible
	if (nextURL) {								 // If a new URL was specified, then set a cookie for the clearMessageArea function to load									
		setCookie('cookieNextURL',nextURL,1);

	}
	else {												 // If a new URL wasn't specified, set the cookie to 'self'
		setCookie('cookieNextURL','self',1);
	}
}*/


//-------------------------------------------------------------------
// isNull(value)
//   Returns true if value is null
//-------------------------------------------------------------------
function isNull(val){return(val==null);}

//-------------------------------------------------------------------
// isBlank(value)
//   Returns true if value only contains spaces
//-------------------------------------------------------------------
function isBlank(val){
	if(val==null){return true;}
	for(var i=0;i<val.length;i++) {
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
		}
	return true;
	}


/**
 * Field Masking
 */
function setupTextfieldMasking(theEvent) {
	// get the event type
	evtType = theEvent.type;
	// get the source of the event.  this is usually the textbox
	evtObj = (theEvent.srcElement) ? theEvent.srcElement : theEvent.target;
	// get the value of the textbox
	objVal = GetObjectValue(evtObj.id);

	// onFocus.
	if(evtType == "focus") {
		// if the field is empty or equal to the title of the field, 
		// clear the field and set the text color to black when the 
		// users sets focus to the textbox to enter text
		if(objVal == "" || objVal == evtObj.title) {
			evtObj.className = "txtFieldMaskingFilled";
			evtObj.value = "";
		}
	}
	// onBlur
	else if(evtType == "blur") {
		// when the textbox looses focus, set the value to the same value
		// of the title if the user empties the textbox
		if(objVal == "" || objVal == evtObj.title) {
			evtObj.className = "txtFieldMaskingEmpty";
			evtObj.value = evtObj.title;
		} 			
	}
}


