


/*--------------------------------------------------*/
/*if no firebug, stop console calls from breaking JS
this will only work if this JS is loaded before console.xxx is used*/
if (!window.console || !console.firebug){
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
    window.console = {};
    for (var i = 0; i < names.length; ++i)
        window.console[names[i]] = function() {}
}
/*--------------------------------------------------*/



//----------------------------------------------------------------------

function CheckConfirm(sUrl, sAction) {
var sPrompt = "Are you sure";
if (sAction != "") sPrompt += " you want to " + sAction + " this item";
sPrompt += "?"

	if (confirm(sPrompt)==true) {
return true;
} else {
return false;
	}
}

//----------------------------------------------------------------------
function STLValidator(frmThis){


try {var sReqFldsRaw = frmThis.required.value}
catch(err) {var sReqFldsRaw = ""};

try {var sPrompt = frmThis.requiredPrompt.value}
catch(err) {var sPrompt = "is a required field"};

try {var sPromptEmail = frmThis.requiredPromptEmail.value}
catch(err) {var sPromptEmail = "is not a valid email address"};


//console.log("sReqFldsRaw:",sReqFldsRaw)

var bOkToSubmit = true;

if (sReqFldsRaw != "")
	{
	var sReqFlds = sReqFldsRaw.split(",");
	//alert (sReqFlds[0]);
	//alert(sReqFlds.length );



	for(var f = 0; f < sReqFlds.length ; f++)
		{
		//var sEval = "document.forms[\"" + frmThis.name + "\"].[" + sReqFlds[f] + "]";		
		//var ctrlThis = eval(sEval);
		//alert (sReqFlds[f] + "/n" + sEval);
		
		//try {
		
		var ctrlThis = document.getElementById(sReqFlds[f])
		//if not found, try lower case...
		if (ctrlThis == null) ctrlThis = document.getElementById(sReqFlds[f].toLowerCase())
		
		if (ctrlThis != null){
		
			if (typeof ctrlThis == 'object')
				{
				
				//alert("|" + sReqFlds[f] + "|" + ctrlThis.type + "|" + ctrlThis.value + "|")

				var bFailedVal = false;				
				
				try {var sType = ctrlThis.type.toLowerCase()}
                catch(err) {var sType = "text"};
				
				
				if (sType == "checkbox" && ctrlThis.checked == false) bFailedVal = true;
				if (sType != "select-one" && trim(ctrlThis.value) == "") bFailedVal = true;
				if (sType == "select-one" && ctrlThis.selectedIndex == 0) bFailedVal = true;
				
				if (sType == "radio") {
					bFailedVal = true;
					var f_in = frmThis.getElementsByTagName('input');
					for (var i=0;i<f_in.length;i++){
						if(f_in[i].name.toLowerCase() == ctrlThis.name.toLowerCase() && f_in[i].checked){
							bFailedVal = false;
							break;
						}
					}
				}
				

				
				
				if (bFailedVal) {
					//ctrlThis.style.border = "solid 2px red";
					ctrlThis.style.background = "#fdd";
					
					var sPrettyName = "";
					
					//select can't have alt but other inputs can, so allow either
					if (ctrlThis.alt) sPrettyName = ctrlThis.alt;
					if (ctrlThis.title) sPrettyName = ctrlThis.title;
					
					if (sPrettyName == "") sPrettyName = sReqFlds[f];
					alert (sPrettyName + " " + sPrompt);
					
					//set focus, but avoid error e.g. in IE if input is hidden
					try{ctrlThis.focus()}catch(err){};
					
					bOkToSubmit = false;		
					break;
					//ctrlThis.insertAdjacentHTML("AfterEnd", "!! Required field") 
					}
					
					
				if ((sReqFlds[f] == "Email") || (sReqFlds[f] == "EmailAddress") || (sReqFlds[f] == "Email Address")) {
					
					var sValue = ctrlThis.value;//.trim();
					if (!sValue.match(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/)) {
					alert (sValue + " " + sPromptEmail);
					ctrlThis.focus();
					bOkToSubmit = false;
					break;
					}
				}
				
				
				}
				
			
			}
			//catch(err) {};
		}
		
	}

return bOkToSubmit ;


}

//----------------------------------------------------------------------

function CheckPasswords(p1, p2, minLen) {

if (p1.value.length > 0 || p2.value.length > 0) {


	if (p1.value != p2.value) {
	p1.focus();
	alert ("Passwords don't match!");
	return false;
	}

	if (p1.value.length < minLen) {
	p1.focus();
	alert ("Passwords must be " + minLen + " characters or more");
	return false;
	}

}

}


//----------------------------------------------------------------------

function InStr(strSearch, charSearchFor)
                           
{
	for (i=0; i < Len(strSearch); i++)
	{
	    if (charSearchFor == Mid(strSearch, i, 1))
	    {
			return i;
	    }
	}
	return -1;
}

//----------------------------------------------------------------------

function Mid(str, start, len)

{
	if (start < 0 || len < 0) return "";

	var iEnd, iLen = String(str).length;
        if (start + len > iLen)
		iEnd = iLen;
	else
		iEnd = start + len;

        return String(str).substring(start,iEnd);
}

//----------------------------------------------------------------------

function Len(str)

{  return String(str).length;  }

//----------------------------------------------------------------------

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
//----------------------------------------------------------------------
function addEvent(obj, evType, fn, useCapture){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    //alert("Handler could not be attached");
  }
} 

//---------------------------------------------------------------------
//mark form fields as required...
function markRequiredFields(frmThis, sRequiredFieldsList){
    
    //stop this from firing if the panel parameter wasn't supplied...
    if (sRequiredFieldsList != "@RequiredFields@"){

        //get the hidden field that contains the list of ID's of required inputs
        var elRequired = frmThis.elements["required"]
        if (elRequired) elRequired.value = sRequiredFieldsList;
        
        
        //remove default class "required" from existing inputs
        //for each (elInput in frmThis.elements){
        for (var iInput =0; iInput < frmThis.elements.length; iInput++){
             var elInput = frmThis.elements[iInput]
            if (elInput.className){
                elInput.className = elInput.className.replace("required", "")
            }
        }
        //turn into an array
        var aRequired = sRequiredFieldsList.split(",")
        //loop through each to find each input
        //for each (sInput in aRequired){
        for (var iInput =0; iInput < aRequired.length; iInput++){
            sInput = aRequired[iInput]
            var elInput = frmThis.elements[sInput]
            //append the classname
            if (elInput) elInput.className += " required"
        }

    }

}

//---------------------------------------------------------------------