function MM_swapImgRestore() { //v3.0
    var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
    var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
    var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
    var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
    if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
//  window.focus(winName);
    newWindow = window.open(theURL,winName,features);
    newWindow.focus();
}

function TrackCount(fieldObj,maxChars,fieldID)
{
	var diff = maxChars - fieldObj.value.length;
	// Need to check & enforce limit here also in case user pastes data
	if (diff < 0)
	{
		fieldObj.value = fieldObj.value.substring(0,maxChars);
		diff = maxChars - fieldObj.value.length;
	}
	if( fieldID != null )
	{
		var element = document.getElementById(fieldID)
		if( element != null )
		{
			element.innerHTML=diff;
		}
	}
}
function CleanChars(s){s=s.replace(/\u201a/g,"'");s=s.replace(/\u0192/g,"f");s=s.replace(/\u201e/g,"\"");s=s.replace(/\u2026/g,"...");s=s.replace(/\u2020/g,"*");s=s.replace(/\u2021/g,"**");s=s.replace(/\u02c6/g,"^");s=s.replace(/\u2030/g,"0/00");s=s.replace(/\u0160/g,"S");s=s.replace(/\u2039/g,"<");s=s.replace(/\u0152/g,"Oe");s=s.replace(/\u017d/g,"Z");s=s.replace(/\u2018/g,"'");s=s.replace(/\u2019/g,"'");s=s.replace(/\u201c/g,"\"");s=s.replace(/\u201d/g,"\"");s=s.replace(/\u2022/g,"*");s=s.replace(/\u2013/g,"-");s=s.replace(/\u2014/g,"-");s=s.replace(/\u02dc/g,"~");s=s.replace(/\u2122/g,"(TM)");s=s.replace(/\u0161/g,"s");s=s.replace(/\u203a/g,">");s=s.replace(/\u0153/g,"oe");s=s.replace(/\u017e/g,"z");s=s.replace(/\u0178/g,"Y");s=s.replace(/\u00B7/g,"*");return s;}

//Matches any non-word character and converts it to an underscore;
//Matches any non-alpha first character (position 0) and removes it (ensures the querystring name starts with an alphabetical letter)
//Matches any non-alpha last character and removes it (ensures the querystring name ends with an alpha-numeric character [not underscore])
function CleanQSLabel(s) { s = s.replace(/[^A-Za-z0-9]/g, "_"); s = s.replace(/^[^A-Za-z]+/, ""); s = s.replace(/([^A-Za-z0-9]+)$/g, ""); return s; }