/***************************************************************************
	Simply dispalys a confirmation dialog before calling postback
****************************************************************************/

function ms_DoConfirmPostBack(PostBackArg1,PostBackArg2,Msg){
	if (!Msg){ Msg = "Are you sure?" }
	if (confirm(Msg)) __doPostBack(PostBackArg1,PostBackArg2)
}


/***************************************************************************
	Toggles table row visibility on and off and changes +/- image
****************************************************************************/
function ms_ToggleExpand(ARow, AImg, ADnnPath){
	if (!document.getElementById) return
	var row = document.getElementById(ARow)
	var img = document.getElementById(AImg)
	if (row){
		if (row.style.display) {
			row.style.display = ""
			if (img)  img.src = ADnnPath + "Images/Min.gif"
		}
		else {
			row.style.display = "none"
			if (img) img.src = ADnnPath + "Images/Max.gif"
		}
	}
}

/***************************************************************************
	Gets an element by attribute  and/or attribute value
****************************************************************************/
function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
    var oCurrent;
    var oAttribute;
    for(var i=0; i<arrElements.length; i++){
        oCurrent = arrElements[i];
        oAttribute = oCurrent.getAttribute(strAttributeName);
        if(typeof oAttribute == "string" && oAttribute.length > 0){
            if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
                arrReturnElements.push(oCurrent);
            }
        }
    }
    return arrReturnElements;
}

/***************************************************************************
	Makes text compatible for sql update
****************************************************************************/
function ms_SqlPrep(ctl){
	if ((ctl) && (ctl.value)) ctl.value = ctl.value.replace(/'/g,"''")
}


/***************************************************************************
 Ensure input is a postive integer
****************************************************************************/
function ms_forceInteger(){
	if ((event.keyCode<48) || (event.keyCode>57)) event.keyCode = null;
}

/***************************************************************************
 Ensure input is valid numeric
****************************************************************************/
function ms_ValidateNumeric(ctl){
	var allowedKeys = "45,46,47,48,49,50,51,52,53,54,55,56,57";
	if ( 
			((event.keyCode == 46) && (ctl.value.indexOf(".") > -1)) || // don't allow multiple decimals
			((event.keyCode == 45) && (ctl.value.indexOf("-") > -1)) || // don't allow multiple minus signs
			((event.keyCode == 45) && (ctl.value.length > 0)) || // only allow minus signs at the front
			(allowedKeys.indexOf(event.keyCode) == -1)
		){
		event.keyCode = null;
	}
}

/***************************************************************************
 Ensure input is valid zip character
****************************************************************************/
function ms_ValidateZip(ctl){
	var allowedKeys = "45,48,49,50,51,52,53,54,55,56,57";
	if ( 
			((event.keyCode == 45) && (ctl.value.indexOf("-") > -1)) || // don't allow multiple minus signs
			((event.keyCode == 45) && (ctl.value.length < 5)) || // don't allow minus signs at the front
			(allowedKeys.indexOf(event.keyCode) == -1)
		){
		event.keyCode = null;
	}
}


/***************************************************************************
 Ensure input is valid date character
****************************************************************************/
function ms_DateKeyPress(ctl){
	var allowedKeys = "45,47,48,49,50,51,52,53,54,55,56,57";
	var allowedDelimPos = "1,2,3,4,5";
	if (
			(allowedKeys.indexOf(event.keyCode) == -1) ||
			((event.keyCode < 48) && (allowedDelimPos.indexOf(ctl.value.length) == -1)) || // only allow delimiters in expected locations
			((event.keyCode < 48) && (ctl.value.charAt(ctl.value.length-1) == String.fromCharCode(event.keyCode))) || // ensure delimiters are not next to each other
			(ctl.value.length == 10)  // never allow more then 10 characters
		){
		event.keyCode = null;
	}
}

/***************************************************************************
 Validate Email Address
***************************************************************************/

function ms_ValidateEmail(ACtl)
{
	if (!ACtl) return false;
	var reEmail = new RegExp(/^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i);
	return reEmail.test(ACtl.value);
}
/***************************************************************************
 Popup Calendar
 In order to use this function, DNN's PopupCalendar must be added to the html
 prior to including this file (mscore.js) */

 
// i.e.
//  <SCRIPT>
//	  <xsl:attribute name="src"><xsl:value-of select="//*/DotNetNuke/ApplicationPath"/>/js/PopupCalendar.js</xsl:attribute>
//   </SCRIPT>
//
//  <SCRIPT>
//	  <xsl:attribute name="src"><xsl:value-of select="//*/DotNetNuke/HomeDirectory"/>WAIMRS/js/mscore.js</xsl:attribute>
//  </SCRIPT>
//
// HTML Example
//	<TABLE>
//		<TR>
//		   <TD>Date</TD>
//		   <TD><INPUT type="text" id="idForDate" name="idForDate"/></TD>
//		   <TD>
//			<a href="javascript:ms_popupCal('idForDate');" style="padding-left: 5px">
//			   <IMG style="vertical-align: middle; border: none">
//				<xsl:attribute name="src"><xsl:value-of select="//*/DotNetNuke/PortalPath"/>Waimrs/Images/cal.gif</xsl:attribute>
//			   </IMG>
//			</a>
//		   </TD>
//	       </TR>
//	</TABLE>
/****************************************************************************/
function ms_popupCal(Dest){
	var ctl = document.getElementById(Dest);
	if (!ctl){  
		alert("Destination control not found!");
	}
	else {
		popupCal("Cal",Dest,"MM/dd/yyyy","","","","","","0");
	}
}

/***************************************************************************
	Postback and prep for sql
****************************************************************************/

function ms_DoPostBackWithSqlPrep(PostBackArg1,PostBackArg2,Msg){
	var arrInputElements = document.body.getElementsByTagName("INPUT");
	var arrTextElements = document.body.getElementsByTagName("TEXTAREA");
	for(var i=0;i<arrInputElements.length;i++)	ms_SqlPrep(arrInputElements[i]);
	for(var i=0;i<arrTextElements.length;i++)	ms_SqlPrep(arrTextElements[i]);
	__doPostBack(PostBackArg1,PostBackArg2)
}

/***************************************************************************
// Extract FileName			
****************************************************************************/
function ms_ExtractFileName(AFullPath){
	if (!AFullPath) return ""
	var delim = (AFullPath.indexOf("/") == -1)? "\\" : "/";
	return AFullPath.substring(AFullPath.lastIndexOf(delim)+1,AFullPath.length);
}

/***************************************************************************
// Extract FileName			
****************************************************************************/
function ms_ExtractFilePath(AFullPath){
	if (!AFullPath) return ''
	var delim = (AFullPath.indexOf("/") == -1)? "\\" : "/";
	return AFullPath.substring(1,AFullPath.lastIndexOf(delim));
}


/***************************************************************************
// Routine for popup windows with title, size and background color parameter (5 parameters)
****************************************************************************/
var newwindow;
var wheight = 0, wwidth = 0;

function ms_PopupImage(url, title, iwidth, iheight, color) {
	var pwidth, pheight;
	
	if (!iwidth) iwidth = 350;
	if (!iheight) iheight = 350;
	if (!color) color = "#FFFFFF";

	if ( !newwindow || newwindow.closed ) {
		pwidth=iwidth+30;
		pheight=iheight+75;
		newwindow=window.open('','','width=' + pwidth +',height=' +pheight + ',resizable=0,top=50,left=50,status=0,menubar=0 ');
		wheight=iheight;
		wwidth=iwidth;
	}
	 
	if (wheight!=iheight || wwidth!=iwidth ) {
		pwidth=iwidth+30;
		pheight=iheight+75;
		if (version.substring(0,1)>3) { 	// check browser v4+ supporting JavaScript 1.2	
			newwindow.resizeTo(pwidth, pheight);
		}
		wheight=iheight;
		wwidth=iwidth;
	}

	newwindow.document.clear();
	newwindow.focus();
	newwindow.document.writeln('<html> <head> <title>' + title + ' <\/title> <\/head> <body bgcolor= \"' + color + '\"> <center>');
	newwindow.document.writeln('<img src=' + url + '  title=\"' + title + '\"   alt=\"' + title + '\" style=\"text-align: center;width:' + iwidth + ';height:' + iheight + '\" >');
	newwindow.document.writeln('<div style=\"padding-bottom:20px\" ><input type="button" onclick="javascript:window.close();" value="Close"/><br/></div><\/center> <\/body> <\/html>');
	newwindow.document.close();
	newwindow.focus();
}

function ms_TidyPopupImage() {
	if (newwindow && !newwindow.closed) newwindow.close(); 
}

/***************************************************************************
	HttpObject for AJAX use
****************************************************************************/
function GetXmlHttpObject(handler)
{ 
	var objXmlHttp=null;

	if (navigator.userAgent.indexOf("Opera")>=0)
	{
		alert("This page doesn't work in Opera");
		return;
	}
	if (navigator.userAgent.indexOf("MSIE")>=0)
	{ 
		var strName="Msxml2.XMLHTTP";
		if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
		{
			strName="Microsoft.XMLHTTP";
		} 
		try
		{ 
			objXmlHttp=new ActiveXObject(strName);
			objXmlHttp.onreadystatechange=handler;
			return objXmlHttp;
		} 
			catch(e)
		{ 
			alert("Error. Scripting for ActiveX might be disabled");
			return;
		} 
	} 
	if (navigator.userAgent.indexOf("Mozilla")>=0)
	{
		objXmlHttp=new XMLHttpRequest();
		objXmlHttp.onload=handler;
		objXmlHttp.onerror=handler; 
		return objXmlHttp;
	}
} 

   