// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download. 
// If you wish to share this code with others, please just point them
// to the URL instead.
// Please DO NOT link directly to my .js files from your site. Copy
// the files to your server and use them there. Thank you.
// ===================================================================

function LTrim(str){if(str==null){return null;}for(var i=0;str.charAt(i)==" ";i++);return str.substring(i,str.length);}
function RTrim(str){if(str==null){return null;}for(var i=str.length-1;str.charAt(i)==" ";i--);return str.substring(0,i+1);}
function Trim(str){return LTrim(RTrim(str));}
function LTrimAll(str){if(str==null){return str;}for(var i=0;str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t";i++);return str.substring(i,str.length);}
function RTrimAll(str){if(str==null){return str;}for(var i=str.length-1;str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t";i--);return str.substring(0,i+1);}
function TrimAll(str){return LTrimAll(RTrimAll(str));}
function isNull(val){return(val==null);}
function isBlank(val){if(val==null){return true;}for(var i=0;i<val.length;i++){if((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}}return true;}
function isInteger(val){if(isBlank(val)){return false;}for(var i=0;i<val.length;i++){if(!isDigit(val.charAt(i))){return false;}}return true;}
function isNumeric(val){return(parseFloat(val,10)==(val*1));}
function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}
function isDigit(num){if(num.length>1){return false;}var string="1234567890";if(string.indexOf(num)!=-1){return true;}return false;}
function setNullIfBlank(obj){if(isBlank(obj.value)){obj.value="";}}
function setFieldsToUpperCase(){for(var i=0;i<arguments.length;i++){arguments[i].value = arguments[i].value.toUpperCase();}}
function disallowBlank(obj){var msg=(arguments.length>1)?arguments[1]:"";var dofocus=(arguments.length>2)?arguments[2]:false;if(isBlank(getInputValue(obj))){if(!isBlank(msg)){alert(msg);}if(dofocus){if(isArray(obj) &&(typeof(obj.type)=="undefined")){obj=obj[0];}if(obj.type=="text"||obj.type=="textarea"||obj.type=="password"){obj.select();}obj.focus();}return true;}return false;}
function disallowModify(obj){var msg=(arguments.length>1)?arguments[1]:"";var dofocus=(arguments.length>2)?arguments[2]:false;if(getInputValue(obj)!=getInputDefaultValue(obj)){if(!isBlank(msg)){alert(msg);}if(dofocus){if(isArray(obj) &&(typeof(obj.type)=="undefined")){obj=obj[0];}if(obj.type=="text"||obj.type=="textarea"||obj.type=="password"){obj.select();}obj.focus();}setInputValue(obj,getInputDefaultValue(obj));return true;}return false;}
function commifyArray(obj,delimiter){if(typeof(delimiter)=="undefined" || delimiter==null){delimiter = ",";}var s="";if(obj==null||obj.length<=0){return s;}for(var i=0;i<obj.length;i++){s=s+((s=="")?"":delimiter)+obj[i].toString();}return s;}
function getSingleInputValue(obj,use_default,delimiter){switch(obj.type){case 'radio': case 'checkbox': return(((use_default)?obj.defaultChecked:obj.checked)?obj.value:null);case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;case 'password': return((use_default)?null:obj.value);case 'select-one':
if(obj.options==null){return null;}if(use_default){var o=obj.options;for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].value;}}return o[0].value;}if(obj.selectedIndex<0){return null;}return(obj.options.length>0)?obj.options[obj.selectedIndex].value:null;case 'select-multiple':
if(obj.options==null){return null;}var values=new Array();for(var i=0;i<obj.options.length;i++){if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)){values[values.length]=obj.options[i].value;}}return(values.length==0)?null:commifyArray(values,delimiter);}alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");return null;}
function getSingleInputText(obj,use_default,delimiter){switch(obj.type){case 'radio': case 'checkbox': 	return "";case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;case 'password': return((use_default)?null:obj.value);case 'select-one':
if(obj.options==null){return null;}if(use_default){var o=obj.options;for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].text;}}return o[0].text;}if(obj.selectedIndex<0){return null;}return(obj.options.length>0)?obj.options[obj.selectedIndex].text:null;case 'select-multiple':
if(obj.options==null){return null;}var values=new Array();for(var i=0;i<obj.options.length;i++){if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)){values[values.length]=obj.options[i].text;}}return(values.length==0)?null:commifyArray(values,delimiter);}alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");return null;}
function setSingleInputValue(obj,value){switch(obj.type){case 'radio': case 'checkbox': if(obj.value==value){obj.checked=true;return true;}else{obj.checked=false;return false;}case 'text': case 'hidden': case 'textarea': case 'password': obj.value=value;return true;case 'select-one': case 'select-multiple':
var o=obj.options;for(var i=0;i<o.length;i++){if(o[i].value==value){o[i].selected=true;}else{o[i].selected=false;}}return true;}alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");return false;}
function getInputValue(obj,delimiter){var use_default=(arguments.length>2)?arguments[2]:false;if(isArray(obj) &&(typeof(obj.type)=="undefined")){var values=new Array();for(var i=0;i<obj.length;i++){var v=getSingleInputValue(obj[i],use_default,delimiter);if(v!=null){values[values.length]=v;}}return commifyArray(values,delimiter);}return getSingleInputValue(obj,use_default,delimiter);}
function getInputText(obj,delimiter){var use_default=(arguments.length>2)?arguments[2]:false;if(isArray(obj) &&(typeof(obj.type)=="undefined")){var values=new Array();for(var i=0;i<obj.length;i++){var v=getSingleInputText(obj[i],use_default,delimiter);if(v!=null){values[values.length]=v;}}return commifyArray(values,delimiter);}return getSingleInputText(obj,use_default,delimiter);}
function getInputDefaultValue(obj,delimiter){return getInputValue(obj,delimiter,true);}
function isChanged(obj){return(getInputValue(obj)!=getInputDefaultValue(obj));}
function setInputValue(obj,value){var use_default=(arguments.length>1)?arguments[1]:false;if(isArray(obj)&&(typeof(obj.type)=="undefined")){for(var i=0;i<obj.length;i++){setSingleInputValue(obj[i],value);}}else{setSingleInputValue(obj,value);}}
function isFormModified(theform,hidden_fields,ignore_fields){if(hidden_fields==null){hidden_fields="";}if(ignore_fields==null){ignore_fields="";}var hiddenFields=new Object();var ignoreFields=new Object();var i,field;var hidden_fields_array=hidden_fields.split(',');for(i=0;i<hidden_fields_array.length;i++){hiddenFields[Trim(hidden_fields_array[i])]=true;}var ignore_fields_array=ignore_fields.split(',');for(i=0;i<ignore_fields_array.length;i++){ignoreFields[Trim(ignore_fields_array[i])]=true;}for(i=0;i<theform.elements.length;i++){var changed=false;var name=theform.elements[i].name;if(!isBlank(name)){var type=theform[name].type;if(!ignoreFields[name]){if(type=="hidden"&&hiddenFields[name]){changed=isChanged(theform[name]);}else if(type=="hidden"){changed=false;}else{changed=isChanged(theform[name]);}}}if(changed){return true;}}return false;}


var space = "   "; 
var checkSubmit = false;
function checkIfClicked(){
	if(!checkSubmit){
		checkSubmit = true
		return checkSubmit
	}else{
		return !checkSubmit
	}
}

function validateQuickStartQuiz(form,msg) {
	if (isFormModified(form,null,null)) {
		return checkIfClicked();
	} else {
		alert(msg);
		return false;
	}
}

function WorkbookFromAction(link1,id1,link2,id2)
{

if(document.layers) 
    {
       
        document.layers['PriorActivityList'].document.forms[0].action = link1+id1+link2+id2;
        link+id;
    }
    else 
    {
           document.forms[0].action =link1+id1+link2+id2;
    }
}

function WorkbookFromsubmit(formname)
{
	if(document.layers) 
    {
        document.layers['PriorActivityList'].document.forms[formname].submit();  
        link+id;
    }
    else 
    {
        document.forms[formname].submit();
    }
}

function SleepDiaryFormSubmit(docname,formname)
{
	if(document.layers) 
    {
        document.layers[docname].document.forms[formname].submit();  
        
    }
    else 
    {
        document.forms[formname].submit();
    }
}

function validateJournal() {
	returnValue = true;
	alertMessage = 'The following Errors have occurred: ';
	if(!checkSubmit){
		if(document.getElementById('SelectJOURNALTYPECD').value == '-1'){
			returnValue = false;
			alertMessage = alertMessage + '\n' + space + 'Journal Type was not specified';
		}
		if(document.forms[0].JOURNALENTRY && (Trim(document.forms[0].JOURNALENTRY.value))==''){
			returnValue = false;
			alertMessage = alertMessage + '\n' + space + 'Journal Entry was empty';
		}
		if(document.forms[0].JOURNALENTRY && document.forms[0].JOURNALENTRY.value.length>4000){
			returnValue = false;
			alertMessage = alertMessage + '\n' + space + 'Journal Entry was too long, please keep entries under 4000 characters';
		}	
	}else{
		return false;
	}
	if(!returnValue){
		alert(alertMessage);
	}else{
		checkIfClicked();
	}
	return returnValue;
}

function validateWorkbook() {
	returnValue = true;
	alertMessage = 'The following Errors have occurred: ';
	if(!checkSubmit){
		if(document.forms[0].ArisingTimeGoalHours && document.forms[0].ArisingTimeGoalHours.selectedIndex ==0){
			alertMessage = alertMessage + '\n' + space + 'Please select the Hours';
			returnValue = false;
		}
		if(document.forms[0].ArisingTimeGoalMinutes && document.forms[0].ArisingTimeGoalMinutes.selectedIndex ==0){
			alertMessage = alertMessage + '\n' + space + 'Please select the Minutes';
			returnValue = false;
		}
		if(document.forms[0].SleepingPillGoal){
			if(document.forms[0].SleepingPillGoal.value.length ==0){
				alertMessage = alertMessage + '\n' + space + 'Please enter a Sleeping Pill Goal';
				returnValue = false;
			}else if(!isNumeric(document.forms[0].SleepingPillGoal.value)){
				alertMessage = alertMessage + '\n' + space + 'Please enter an Integer Value for the Sleeping Pill Goal';
				returnValue = false;
			}
		}
	}else{
		return false;
	}
	if(!returnValue){
		alert(alertMessage);
	}else{
		checkIfClicked();
	}
	return returnValue;
}
//goes through the set of checkboxes to validate if atleat one or atmost 3 are checked 
function validateWorkbookCheckbox(formname) {
	returnValue = true;
	alertMessage = '';
	if(!checkSubmit){
		ival=0;
		if(document.forms[formname]){
			for (icount = 0; icount <= document.forms[formname].length-1; icount++)
			{
				if (document.forms[formname].elements[icount].type == "checkbox")
					{
						if (document.forms[formname].elements[icount].checked)
						{
							ival= ival + 1
						}
					}
	
			}
			if ((ival < 2) || (ival > 3) )
			{
				alert("Please select at least one or at most 3 items");
				return false;
			}
		}
		
	}else{
		return false;
	}
	if(!returnValue){
		alert(alertMessage);
	}else{
		checkIfClicked();
	}
	return returnValue;
}

function DeleteExerciseDetail(frm,workbookid){
	ok=confirm("Are you sure you want to delete this Entry?");
	if (ok){
		if(frm.deleteAction){
			frm.deleteAction.value = "1";
		}
		if(frm.DeleteWorkbookid){
			frm.DeleteWorkbookid.value = workbookid;	
		}
		if(frm.stageTest){
			frm.stageTest.value = "1";	
		}	
		frm.submit();
		
	}
	else
		return;
}

function validateBingeTool() {
	returnValue = true;
	alertMessage = 'The following Errors have occurred: ';
	if(!checkSubmit){
		if(document.forms[0].FoodDiaryDay && document.forms[0].FoodDiaryDay.selectedIndex ==0){
			alertMessage = alertMessage + '\n' + space + 'Please select the Day';
			returnValue = false;
		}
		if(document.forms[0].FoodDiaryMonth && document.forms[0].FoodDiaryMonth.selectedIndex ==0){
			alertMessage = alertMessage + '\n' + space + 'Please select the Month';
			returnValue = false;
		}
		if(document.forms[0].FoodDiaryYear && document.forms[0].FoodDiaryYear.selectedIndex ==0){
			alertMessage = alertMessage + '\n' + space + 'Please select the Year';
			returnValue = false;
		}
		if(document.forms[0].FoodDiaryTimeEat && document.forms[0].FoodDiaryTimeEat.selectedIndex ==0){
			alertMessage = alertMessage + '\n' + space + 'Please select the time you ate';
			returnValue = false;
		}
		if(document.forms[0].BingeLogDay && document.forms[0].BingeLogDay.selectedIndex ==0){
			alertMessage = alertMessage + '\n' + space + 'Please select the Day';
			returnValue = false;
		}
		if(document.forms[0].BingeLogMonth && document.forms[0].BingeLogMonth.selectedIndex ==0){
			alertMessage = alertMessage + '\n' + space + 'Please select the Month';
			returnValue = false;
		}
		if(document.forms[0].BingeLogYear && document.forms[0].BingeLogYear.selectedIndex ==0){
			alertMessage = alertMessage + '\n' + space + 'Please select the Year';
			returnValue = false;
		}
		if(document.forms[0].BingeLogBinges && document.forms[0].BingeLogBinges.value ==""){
			alertMessage = alertMessage + '\n' + space + 'Please enter how many binges you had.';
			returnValue = false;
		}
		if(document.forms[0].BingeLogBinges && document.forms[0].BingeLogBinges.value !="" && !isNumeric(document.forms[0].BingeLogBinges.value)){
			alertMessage = alertMessage + '\n' + space + 'Please enter a numeric value for the number of binges.';
			returnValue = false;
		}
		if(document.forms[0].BingeLogMeals && document.forms[0].BingeLogMeals.value ==""){
			alertMessage = alertMessage + '\n' + space + 'Please enter how many appropriate meals you had.';
			returnValue = false;
		}
		if(document.forms[0].BingeLogMeals && document.forms[0].BingeLogMeals.value !="" && !isNumeric(document.forms[0].BingeLogMeals.value)){
			alertMessage = alertMessage + '\n' + space + 'Please enter a numeric value for the number of appropriate meals or snacks.';
			returnValue = false;
		}
		
	}else{
		return false;
	}
	if(!returnValue){
		alert(alertMessage);
	}else{
		if(document.forms[0].BingeLogDate){
			document.forms[0].BingeLogDate.value = document.forms[0].BingeLogMonth.value + "/" + document.forms[0].BingeLogDay.value + "/" + document.forms[0].BingeLogYear.value;
		}else if(document.forms[0].FoodDiaryDate){
			document.forms[0].FoodDiaryDate.value = document.forms[0].FoodDiaryMonth.value + "/" + document.forms[0].FoodDiaryDay.value + "/" + document.forms[0].FoodDiaryYear.value;
		}
		checkIfClicked();
	}
	return returnValue;
}
			
function limitText(limitField, limitCount, limitNum) {

  for (var x = 0; x < limitField.value.length; x++){

  var s=limitField.value.substring(x,x+1);
  	if(s==">" || s=="<"){
	limitNum=limitNum-3;
	}
	if(s=="\"" || s=="'"){
	limitNum=limitNum-5;
	}
	}

	if (limitField.value.length >= limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
		alert("Data entered is too long for the field");
		
	
	} else {
	   
		limitCount.value = limitNum - limitField.value.length;
	}
}
function limitTextMaxlengthMsg(limitField, limitCount, limitNum) {
  for (var x = 0; x < limitField.value.length; x++){
  var s=limitField.value.substring(x,x+1);
  	if(s==">" || s=="<"){
	limitNum=limitNum-3;
	}
	if(s=="\"" || s=="'"){
	limitNum=limitNum-5;
	}
	}

	if (limitField.value.length >= limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
		alert("Data entered is too long, please enter only "+limitNum+" characters.");	
	
	} else {
	   
		limitCount.value = limitNum - limitField.value.length;
	}
}


function checkOption(elementid) {
	if(document.getElementById(elementid) && document.getElementById(elementid).checked){
		document.getElementById(elementid).checked=false;
	}else{
		document.getElementById(elementid).checked=true;
	}
	
}