// *** VALIDATION CONTROLS *** //


//upper cases text inputs.  use: onkeypress="return upperOnly()"
function upperOnly() {
	var charCode = event.keyCode;
	if ( charCode > 96 && charCode < 123 )
		event.keyCode = charCode - 32;
}


function ValidateListBoxItemSelected(oSrc, args){
    $('lblError').innerHTML = oSrc.id;
    args.IsValid = false;
    return;
}


/*
function isNotEmpty(elem) {
	var str = elem.value;
	var re = /.+/;
	return ( !str.match(re) );	
}
*/

//alert(navigator.userAgent + " " + navigator.appVersion + " " + navigator.platform);
/*
if ( navigator.userAgent.indexOf("MSIE 5.2") != -1 ) {
	window.onload = function() {
		alert('test');
	}
	alert('test1');
}
*/

function checkForInt(evt) {
	var charCode = ( evt.which ) ? evt.which : event.keyCode;
	return  ( charCode >= 48 && charCode <= 57 );
}

function alphaOnly(evt) {
	var charCode = ( evt.which ) ? evt.which : event.keyCode;
	var key = String.fromCharCode(charCode);
	return (new RegExp(/[a-zA-Z]/)).test(key);
}

function adjustDays(monthListId, dayListId, yearListId, evt) {
	//ensure DOM compliance
	if ( !document.getElementById )
		return;
		

	var ddlMonth = document.getElementById(monthListId);
	var ddlDay = document.getElementById(dayListId);
	var ddlYear = document.getElementById(yearListId);
	//ensure controls exist
	if ( !ddlMonth || !ddlDay || !ddlYear )
		return;
	
	evt = ( evt ) ? evt : ((window.event) ? event : null);
	if ( evt ) {
		var elem = ( evt.target ) ? evt.target : (( evt.srcElement ) ? evt.srcElement : null );
		if ( elem ) {
			if ( elem.selectedIndex == 0 ) {
				ddlMonth.selectedIndex = 0;
				ddlDay.selectedIndex = 0;
				ddlYear.selectedIndex = 0;
				return;
			} else if ( elem.id == dayListId ) {
				return;
			}
		}			
	}

	var daySelected = ddlDay.selectedIndex;
	var numDays = 31;
	
	//set the month to jan if a year has been selected and a month has not yet
	if ( ddlYear.selectedIndex != 0 && ddlMonth.selectedIndex == 0 )
		ddlMonth.selectedIndex = 1;
	else if ( ddlYear.selectedIndex == 0 && ddlMonth.selectedIndex != 0 )
		ddlYear.selectedIndex = 1;

	//set the # of days in the month, if necessary
	if ( ddlMonth.value == "02" )
		numDays = ( parseInt(ddlYear.value) % 4 == 0 ) ? 29 : 28;
	else if ( ddlMonth.value == "04" || ddlMonth.value == "06" || ddlMonth.value == "09" || ddlMonth.value == "11" )
		numDays = 30;
		
	//if no change, exit function
	if ( ddlDay.options.length == numDays + 1 && ddlDay.selectedIndex != 0 )
		return;

	//clear out options and recreate
	ddlDay.options.length = 0;
	ddlDay.options[0] = new Option("Day", "0", false, false);
	for ( i = 1; i != numDays + 1; i++ )
		ddlDay.options[i] = new Option(i.toString(), i.toString(), false, false);

	//select what was selected before, unless it was too big
	ddlDay.selectedIndex = ( daySelected > numDays ) ? numDays : daySelected;

	if ( ddlMonth.selectedIndex != 0 && ddlDay.selectedIndex == 0 ) 
		ddlDay.selectedIndex = 1;

}

function compareDates(dateStartId, dateEndId) {
	//ensure DOM compliance
	if ( !document.getElementById )
		return true;

	if ( !document.getElementById(dateStartId) || !document.getElementById(dateStartId) )
		return true;
	
	var dateStart = getDateFromDC(dateStartId);	
	var dateEnd = getDateFromDC(dateEndId);

	if ( dateStart == null || dateEnd == null )
		return true;

	if ( dateStart > dateEnd ) {
		alert("Start date must precede end date.");
		return false;
	}
	
	return true;
}

function getDateFromDC(dateId) {	
	var month = document.getElementById(dateId + "_ddlMonth");
	var day = document.getElementById(dateId + "_ddlDay");
	var year = document.getElementById(dateId + "_ddlYear");	

	if ( month.selectedIndex == 0 || day.selectedIndex == 0 || year.selectedIndex == 0 )
		return;

	return new Date(parseInt(year.value, 10), parseInt(month.value, 10) - 1, parseInt(day.value, 10));		
}

var CHAR_LESSTHAN = 60;
var CHAR_GREATERTHAN = 62;
var CHAR_PIPE = 124;
var CHAR_DOUBLEQUOTE = 34;

function checkForValidFolder(evt) {
	var charCode = ( evt.which ) ? evt.which : event.keyCode;
	return ( charCode != CHAR_LESSTHAN && charCode != CHAR_GREATERTHAN && charCode != CHAR_PIPE );
}

// *** POP UP MENU FUNCTIONS *** //
var popup;

//functions used for popup windows
function popWin(url) {
	var width = 650;
	var height = 600;
	popWinWithD(url, width, height);
}

// w/ Dimensions
function popWinWithD(url, width, height) {
	var left = parseInt((screen.availWidth/2) - (width/2));
	var top = parseInt((screen.availHeight/2) - (height/2));
	popWinWithDL(url, width, height, left, top);
}

// w/ Dimensions and Location
function popWinWithDL(url, width, height, left, top) {
	if ( popup && !popup.closed )
		popup.close();
	var windowFeatures = "width=" + width + ",height=" + height + ",status,resizable,left=" + left + ",top=" + top + ",screenX=" + left + ",screenY=" + top + ",scrollbars";
	popup = window.open(url, "poppedWin", windowFeatures);
//	popup.document.write("<b>" + windowFeatures + "</b>");
	popup.focus();
}

// w/ Dimensions and Location
function popWinReport(url, width, height) {
	var left = parseInt((screen.availWidth/2) - (width/2));
	var top = parseInt((screen.availHeight/2) - (height/2));
	var windowFeatures = "width=" + width + ",height=" + height + ",status,resizable,left=" + left + ",top=" + top + ",screenX=" + left + ",screenY=" + top + ",scrollbars,menubar,toolbar";
	window.open(url, "", windowFeatures);	
}

function showMessage() {
	popWinWithD("../admin/popups/infopop.aspx", 550, 300);
}

function confirmSend(destination) {
	popWinWithD('../browse/downloadpop.aspx?type=cart', 700, 200);
}

function changeLocation(url) {
	location.href(url);
}
// *** ROLL OVER FUNCTIONS *** //
//give values in page, i.e. normal["img1"] = new Image(); normal["img1"].src = "../images/div0/buttons/whatever.gif";
var normal = new Object();
var hilite = new Object();

//swaps the image
function setImage(imgId, type) {
	if ( document.images ) {
		if ( type == "hilite" ) {
			if ( hilite[imgId] ) // sometimes the images aren't loaded by the time this is called
				if ( hilite[imgId].src ) 
					document.getElementById(imgId).src = hilite[imgId].src;
			return true;
		} else if ( type == "normal" ) {
			if ( normal[imgId] )
				if ( normal[imgId].src )
					document.getElementById(imgId).src = normal[imgId].src;
			return true;
		}		
	}
	return false;
}

// *** FORM CONTROL HIDE/SHOW FUNCTIONS *** //
var editPrefix = "edit";
var readPrefix = "read";
var startIndex = 0;

//toggles box display
function toggleBox(id) {
	var div = document.getElementById(id);
	div.style.display = ( div.style.display ) == "block" ? "none" : "block";
}

//hides form controls, displays labels, sets control values to label text
function hideControls() {
	var i = startIndex;
	var ctl = document.getElementById(editPrefix + i);
	var lbl = document.getElementById(readPrefix + i);
	while ( ctl || lbl ) {
		i++;
		if ( ctl ) ctl.style.display = "none";
		if ( lbl ) lbl.style.display = "inline";
		if ( ctl && lbl ) resetControl(ctl, lbl);
		
		var ctl = document.getElementById(editPrefix + i);
		var lbl = document.getElementById(readPrefix + i);
	}	
}

//displays form controls, hides labels
function showControls() {
	var i = startIndex;
	var ctl = document.getElementById(editPrefix + i);
	var lbl = document.getElementById(readPrefix + i);
	while ( ctl || lbl ) {
		i++;
		if ( lbl ) lbl.style.display = "none";
		if ( ctl ) ctl.style.display = "inline";
		ctl = document.getElementById(editPrefix + i);
		lbl = document.getElementById(readPrefix + i);
	}	
}

// resets a form control to the value of it's corresponding read only span
function resetControl(ctl, lbl) { 
	var readValue = lbl.innerHTML;
	if ( ctl.type ) {
		switch ( ctl.type ) {
			case "text":
				ctl.value = readValue;
				break;
			case "textarea":
				ctl.value = readValue;
				break;
			case "checkbox":
				ctl.checked = ( readValue == "Yes" || readValue == "X" );
				break;
			case "select-one":
				for ( var j = ctl.options.length - 1; ( ctl.options[j].value != readValue ) && ( ctl.options[j].text != readValue ) && ( j > 0 ); j--) { }
				ctl.options.selectedIndex = j;
				break;
			default:
				break;				
		} //end switch
	} // end if
} // resetControls

// *** ROW SELECTION FUNCTIONS *** //
var actionButtonId = "btnGo";
var rowsSelected = 0;

//selects a row
function selectRow(row) { 
	row.className = "hiliterow";
	rowsSelected++;
	document.getElementById(actionButtonId).disabled = false;
}

//deselects a row
function deselectRow(row) {
	row.className = "itemrow";
	rowsSelected--;
	document.getElementById("chkAllBottom").checked = false;
	document.getElementById("chkAllTop").checked = false;
	document.getElementById(actionButtonId).disabled = ( rowsSelected == 0 );
}

//toggle row highlight
function toggleRow(evt) { 

	evt = ( evt ) ? evt : ((window.event) ? event : null);
	if ( evt ) {
		var elem = ( evt.target ) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		if ( elem ) {
			var re = /\d{1,}/;		// all digits
			var rowId = re.exec(elem.id)[0];
			if ( elem.checked )
				selectRow(document.getElementById("row"+rowId));
			else
				deselectRow(document.getElementById("row"+rowId));
		} // end if
	} // end if
}

//toggles select all
function selectAll(evt) {

	evt = ( evt ) ? evt : ((window.event) ? event : null);

	if ( evt ) {
		var elem = ( evt.target ) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		if ( elem ) {				
			var i = 0;
			var chk = document.getElementById("rptMain__ctl" + i + "_chkItem");
			if ( elem.checked ) {
				while ( chk ) {
					if ( !chk.checked ) {
						selectRow(document.getElementById("row"+i));
						chk.checked = true;
					}
					chk = document.getElementById("rptMain__ctl" + ++i + "_chkItem");
				}
				var chkAll = document.getElementById("chkAllBottom");
				if ( chkAll ) chkAll.checked = true;
				chkAll = document.getElementById("chkAllTop");
				if ( chkAll ) chkAll.checked = true;
			} else {
				while ( chk ) {
					if ( chk.checked ) {
						deselectRow(document.getElementById("row"+i));
						chk.checked = false;
					}
					chk = document.getElementById("rptMain__ctl" + ++i + "_chkItem");
				}
				var chkAll = document.getElementById("chkAllBottom");
				if ( chkAll ) chkAll.checked = false;
				chkAll = document.getElementById("chkAllTop");
				if ( chkAll ) chkAll.checked = false;
			} // end if
		} // end if
	} // end if
}


function macIE_Init() {
		window.resizeBy(-1, -1);
		window.resizeBy(1, 1);
}
function changeFormAction(url) {
	//alert(url);
	
	document.forms[0].action = url;
}

function fnTrapKD(btn, event){
		if (document.all){
			if (event.keyCode == 13){
			event.returnValue=false;
			event.cancel = true;
			btn.click(); }
		}
		else if (document.getElementById){
			  if (event.which == 13){
			   event.returnValue=false;
			   event.cancel = true;
			   btn.click();
			  }
		}
		 else if(document.layers){
			  if(event.which == 13){
			  event.returnValue=false;
			  event.cancel = true;
			  btn.click();
			  }
		 }
}

function setPagePosition() {
	if ( smartnav == true ) {
		smartnav = false;
		document.getElementById('__MaintainPosition').value = document.documentElement.scrollTop;
	}
}