$(document).ready(function() {
	$("#autoH1").html($(".detailContent h1:first").html());
	$(".detailContent h1:first").remove()
});


//see if jquery is running on this page
try{if($){jqry = true}}catch(e){jqry = false}


//modal alert box
function jalert(text){
	if(!jqry){alert(text);return;}
	html = "<p align='center'><nobr>"+text+"<br><br><input type='button' class='smallbutton btn' value='OK' onclick='$.nyroModalRemove()' /></nobr></p>";
	$.nyroModalManual({
		minWidth: 340,
		minHeight: 100,
		content: html
	});
}


//confimration dialog box  --  cbn is a string to evaluate upon 'ok'.  note: this function does not suspend the event cycle
function jconfirm(text, cbn){
    conf = false;
	html =  "<p align='center'>"+text+"<br><br>";
	html += "<input type='button' class='smallbutton' value='OK' onclick='$.nyroModalRemove(); conf=true' />&nbsp;&nbsp;";
	html += "<input type='button' class='smallbutton' value='Cancel' onclick='$.nyroModalRemove()' />";
	html += "</p>";
	$.nyroModalManual({
		modal: true,
		minWidth: 340,
		minHeight: 100,
		content: html,
		endRemove: function(){if(conf){eval(cbn)}}
	});
}


//modal popup window
var popWin = '';
function popWindow(file, hgt, wdt){
	try{	//using jquery
		$.nyroModalManual({
			//modal: true,	<< this will require making all pop-ups have a close button
			width: wdt,
			height: hgt,
			padding: 0,
			forceType: "iframe",
			url: file
		});
	}
	catch(e){	//using dom
		if(popWin.closed != undefined){if(!popWin.closed){popWin.close();};}
		popWin = window.open(file, 'popWin', 'height=' + hgt + ', width=' + wdt + ', resizable, scrollbars=yes, modal=yes, dialog=yes, menubar=yes');
		popWin.moveTo(20,20);
		popWin.focus();
	}
}


//progress bar for uploading and other long bits
function progressBar(show){
	if(show){
		$.nyroModalManual({
			modal: true,
			minWidth: 60,
			minHeight: 60,
			padding: 0,
			url: '../_images/progress.gif'
		});
	}else{$.nyroModalRemove();}
}


function togglediv(dv){
	dv = document.getElementById(dv);
	if(dv.style.display == ''){dv.style.display = 'none'}
	else{dv.style.display = ''}
}



/////////////////begin form validation code/////////////////////

// [Last edit Friday, September  25, 2009 05:27:44 PM by ANT]
function hasClass( elem, array ) {
	for ( var i = 0, length = array.length; i < length; i++ )
		if ( array[ i ] == elem )
			return i;
	return -1;
}

function addClassName(elem, nClass) {
	if(hasClass( nClass, (elem.className || elem).toString().split(/\s+/) ) > -1) {
		return;
	} else {
		elem.className += (elem.className ? " " : "") + nClass;
	}
	//alert(elem.className);
}

function delClassName(elem, nClass) {
	elem.className = elem.className.replace(nClass, "");
	return;
}

//form validation - multiple form inputs
	//uses validateInput() for each input
	//returns true or false
	//displays any failure message
	//form is the name of the form
	//validate format: input name=friendly name=test=required
		//leave the 'test' parameter blank or 'nada' to allow field to be required only - no test
		//example: validateForm('Form1', 'per_email=Email Address=email=true,cas_uid=Case Number=integer=false,fromdate=From Date=date=false,todate=To Date=date=true')
	//
//var throwError = false;
function validateForm(form, validate){
	var oInput, sName, sTest, bReq, msg = "";
	var pairs = validate.split(",");
	var oName, oType, aTest, ant = "";
	for(i in pairs){
		aTest = "";
		oInput = eval("document." + form + ".elements['" + pairs[i].split("=")[0] + "']");
//		oInput = eval("document.getElementById('" + pairs[i].split("=")[0] + "')");
		// alert(oInput.name);
		oType = oInput.type;
		oName = pairs[i].split("=")[0];
		sName = pairs[i].split("=")[1];
		sTest = pairs[i].split("=")[2];
		bReq = eval(pairs[i].split("=")[3]);
		msg += validateInput(oInput, sName, sTest, bReq);

		if(oType=="radio") {
			oInput = eval("document." + form + ".elements['" + pairs[i].split("=")[0] + "']");
			aTest = checkRadio(oInput);
			if(aTest != ""){ msg += sName + ": " + aTest + "\n"}
			oInput = document.getElementById(oName).parentNode;
		}

		if(validateInput(oInput, sName, sTest, bReq) || aTest!="") {
			addClassName(oInput,"error");
			//throwError = true;
		} else {
			if(hasClass( "error", (oInput.className || oInput).toString().split(/\s+/) ) > -1) {
				delClassName(oInput,"error");
			}
		}
		// if(throwError) document.getElementById("error").innerHTML = "Your form is incomplete. Please see highlighted fields below to correct.";
	}

	if(msg != ""){
		if(jqry){
			msg = msg.replace(/\n/g, "<br>")
			msg = "Your form is incomplete. <br/>Please see highlighted fields to correct.<br/>"+msg;
		}
		jalert(msg);
		return false;
	}
	return true;
}

// the radio button must be select one
	// return empty string upon select
	// return message upon failure
function checkRadio(elem) {
	myOption = -1;
	for (i=elem.length-1; i > -1; i--) {
		if (elem[i].checked) {
			myOption = i; i = -1;
		}
	}
	if (myOption == -1) {
		return "You must select a radio button";
	}
	return "";
}

//form validation - single form input
	//returns empty string '' upon success
	//rerturns error message upon failure
	//oInput is form input object, sName is friendly name of input, sTest is the test to perfom, bReq is true if input is required
		//example: validateInput(per_email, 'Email Address', 'email', true)
function validateInput(oInput, sName, sTest, bReq){
    var rTest = "";
    var sVal = oInput.value;
//    try {var sVal = oInput.value;}
//    catch(e) {alert(sName)}
    if(sVal == "" && !bReq){return rTest;}
    if(sVal == "" && bReq){return sName + ": This field is required.\n";}
    if(sTest == "date"){rTest = validateDate(oInput.value);}
    if(sTest == "money"){rTest = validateMoney(oInput.value);}
    if(sTest == "email"){rTest = validateEmail(oInput.value);}
    if(sTest == "zip"){rTest = validateZipCode(oInput.value);}
    if(sTest == "integer"){rTest = validateInteger(oInput.value);}
    if(sTest == "numeric"){rTest = validateNumeric(oInput.value);}
    if(sTest == "ssn"){rTest = validateSSN(oInput.value);}
    if(sTest == "group"){rTest = validateGroup(oInput);}
    if(rTest != ""){rTest = sName + ": " + rTest + "\n"}
    return rTest;
}

// validation functions used by validateInput() above
//
function validateDate(sVal){
    var reDatePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var OmatchArray = sVal.match(reDatePat);
    if (OmatchArray == null) {
        return "all dates require a valid mm/dd/yyyy or mm-dd-yyyy date format.";
    }
    else{
        var strError = "";
        var strMonth = OmatchArray[1]; // parse date into variables
        var strDay = OmatchArray[3];
        var strYear = OmatchArray[5];
        if(strMonth < 1 || strMonth > 12) { // check month range
            strError="Month must be between 1 and 12.";
        }
        if(strDay < 1 || strDay > 31) {
			if(strError != ""){strError += ", ";}
            strError += "Day must be between 1 and 31.";
        }
        if((strMonth==4 || strMonth==6 || strMonth==9 || strMonth==11) && strDay==31) {
			if(strError != ""){strError += ", ";}
            strError += "Month "+strMonth+" doesn't have 31 days.";
        }
        if(strMonth == 2) { // check for february 29th
            var blnIsleap = (strYear % 4 == 0 && (strYear % 100 != 0 || strYear % 400 == 0));
            if (strDay>29 || (strDay==29 && !blnIsleap)) {
				if(strError != ""){strError += ", ";}
                strError += "February " + strYear + " doesn't have " + strDay + " days.";
            }
        }
        if(strYear < 1900 || strYear > 9999) {	//restrict year (mostly for sql)
			if(strError != ""){strError += ", ";}
            strError += "Year must be within a valid range.";
        }
        if(strError != ""){
            return strError;
        }
    }
    return "";
}

function validateMoney(sVal){
    reMoneyPat = /^\$|,/g;
    sVal=sVal.replace(reMoneyPat, "");
    if(isNaN(sVal)){return "A valid US monitary format is required.";}
    return "";
}

function validateEmail(sVal){
    var rePat = /[a-zA-Z0-9_\.\-\+]+@[a-zA-Z0-9_\.\-\+]+\.[a-zA-Z]+$/;
    var bln = rePat.test(sVal);
    if(!bln){return "A valid email address is required.";}
    return "";
}

function validateZipCode(sVal){
    var rePat1 = /(^\d{5}$)|(^\d{5}-\d{4}$)/;
    var OmatchArray1 = sVal.match(rePat1);
    if (OmatchArray1 == null) {
        return "A valid zipcode is required.";
    }
    return "";
}

function validateInteger(sVal){
	if(sVal.search(/[^\d]/) != -1){
		return "This field accepts Integers only.";
	}
	return "";
}

function validateNumeric(sVal){
	if(isNaN(sVal)){return "This field accepts numbers only.";}
	return "";
}

function validateSSN(sVal){
	var rePat1 = /^(\d{3})-(\d{2})-(\d{4})$/;
	var OmatchArray1 = sVal.match(rePat1);
	if (OmatchArray1 == null) {
		return "This field requires a number of the format NNN-NN-NNNN.";
	}
	return "";
}

function validateGroup(oIn){
	for(i=0; i<oIn.length; i++){
		if(oIn[i].checked){return "";}
	}
	return "Please make a selection.";
}


//validate a password as being strong
function strongPass(password){
	var msg = "";
	if(!(password.length >= 7)){msg += "passwords must be at least 7 characters long.\n";}
	if(!(password.match(/\d/))){msg += "passwords must include at least one number.\n";}
	if(!(password.match(/[A-Z]/))){msg += "passwords must include at least one uppercase letter.\n";}
	if(!(password.match(/[a-z]/))){msg += "passwords must include one or more lowercase letters.\n";}
	if(!(password.match(/\W+/))){msg += "passwords must include at least one special character - #,@,%,!\n";}
	if(msg != ""){
		alert(msg);
		return false;
	}
	return true;
}
/////////////////end form validation code/////////////////////


// rounding function: n is number to round; p is precision
function JSround(n, p){return Math.round(n * Math.pow(10, p)) / Math.pow(10, p)}


//fill the contents of a form with test data
function fillFormTest(form){
	var choice = "1234567890abcdefghiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXTZ";
	var rndword; var rnd;
	for(i = 0; i < form.elements.length - 1; i++){
		rndword = '';
		for (var r = 0; r < Math.floor(Math.random() * 13) + 3; r++) {
		  rnd = Math.floor(Math.random() * choice.length);
		  rndword += choice.substring(rnd,rnd+1);
		}
		etype = form.elements[i].type;
		if(etype == 'text' || etype == 'textarea'){form.elements[i].value = rndword}
		if(etype == 'checkbox' || etype == 'radio'){form.elements[i].checked = true;}
	}
}
