/* Filename: base.js
 * Purpose: Supplies javascript common/base functions.
 * Author: Mark Horila
 * Date: Nov 2007
 */ 

var isDOM = (document.getElementById ? true : false);
var isIE4 = ((document.all && !isDOM) ? true : false);
var isNS4 = (document.layers ? true : false);

var vf_errorBgColor = 'salmon';
var vf_warnBgColor = 'lemonchiffon';

function trim(str) {
	return str.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"");
}

function fulltrim(str) {
	return str.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"").replace(/\s+/g," ");
}

function getRef(id) {
	if (isDOM) return document.getElementById(id);
	else if (isIE4) return document.all[id];
	else if (isNS4) return document.layers[id];	
	return document;
}

function getStyle(id) {	return getRef(id).style; }

function getMainForm() {
	if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) return document.frmMain;	
	return document.forms['frmMain'];
}

function setVisible(id,visible){
	var el = getStyle(id);
	if(el == null) return;
	el.display = (visible) ? 'block' : 'none';
}

function toggleVisible(id){
    var el = getStyle(id);
    if (el == null) return;
    el.display = (el.display == 'none') ? 'block' : 'none';
}

function OnLoadPage(){
	//getConfigValues();
}

function showValidationResults(fld, blnValid) {
	var color;
	if (blnValid) {
		color = 'white';
	}
	else {
		color = vf_warnBgColor;
	}
	getStyle(fld).backgroundColor = color;
}

function validateRequired(fld, show) {
	var result = true;

	if (!getRef(fld).value) { 
		result = false; 
	}
	else if (getRef(fld).value == '') { 
		result = false; 
	}

	if (!result) {
		if (show) { alert('Please enter required value'); }
	}
	if (show) { showValidationResults(fld,result); }
	return result;
}

function validateNumber(fld, show) {
	var result = true;

	if (validateRequired(fld,false)) { 

	if (result) {
	   result = !isNaN(getRef(fld).value)
	   if (!result) {
			alert('Please enter a numeric value');
	   }
	}
	}

	if (show) { showValidationResults(fld,result); }
	return result;
}

function validateDate(fld, show) {
	var result = true;

	if (validateRequired(fld,false)) { 

	if (result) {
       var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
       var matchArray = getRef(fld).value.match(datePat); // is the format ok?
       if (matchArray == null) {
          if (show) { alert("Please enter a date in mm/dd/yyyy format"); }
          result = false;
       } 
	}

	if (result) {
       month = matchArray[1]; // p@rse date into variables
       day = matchArray[3];
       year = matchArray[5];
       if (month < 1 || month > 12) { // check month range
          if (show) { alert("Please enter a month between 1 and 12"); }
          result = false;
       } 
	}

	if (result) {
       var maxDay = 31;
       if (month==4 || month==6 || month==9 || month==11) { 
		   maxDay = 30; 
	   }
       if (month == 2) { // check for february 29th
		     if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) { 
			   maxDay = 29; 
		   } else { 
			   maxDay = 28; 
		   }
	   }
	
       if (day < 1 || day > maxDay) {
          if (show) { alert("Please enter a day between 1 and " + maxDay); }
          result = false;
		}
	}
	}

    if (show) { showValidationResults(fld,result); }
	return result;
}

function validateDatesInOrder(fld1,fld2,show) {
	var dt1;
	var dt2;
	var result = true;

	if (validateRequired(fld1, false) && validateRequired(fld2, false)) { 

		if (result) {
		   result = validateDate(fld1,false);
		}

		if (result) {
			result = validateDate(fld2,false);
		}

		if (result) {
			dt1 = new Date(getRef(fld1).value);
			dt2 = new Date(getRef(fld2).value);

			result = dt1 <= dt2;
			if (!result) {
				if (show) { alert('Please enter dates in the proper sequence.  The first date should be earlier than the second date.') }
			}
		}
	}

	if (show) {
	   showValidationResults(fld1,result);
	   showValidationResults(fld2,result);
	}
	return result;
}

function validateNumberInRange(fld,val1,val2,show) {
	var num;
	var result = true;

	if (validateRequired(fld, false)) { 

	if (result) {
		result = validateNumber(fld, true);
	}

	if (result) {
		num = parseFloat(getRef(fld).value);

		if (num < val1) {
			if (show) { alert('Please enter a value above the minimum value of ' + val1); }
			result = false;
		}

		if (num > val2) {
			if (show) { alert('Please enter a value below the maximum value of ' + val2); }
			result = false;
		}
	}
	}

	if (show) {
	   showValidationResults(fld,result);
	}
	return result;
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name){createCookie(name,"",-1);}

function verifyDelete() {
    return confirm('Are you sure you want to delete this record?');
}

function checkMulti(ctl) {
    debugAlert(ctl.id);

    if (ctl.id.indexOf('ctl0$chkMulti') >= 0) {
        var i = 0;
        while (++i) {
            var ctlChk = document.getElementById(ctl.id.replace('ctl0$chkMulti','ctl'+i+'$chkMulti'))
            if (ctlChk != null) {
                ctlChk.checked = ctl.checked;
            }
            else {
                debugAlert('ctlChk is null');
                break;
            }
        } 
    }
}

function BaseBodyID() {
    return 'ctl01_ctl00_bodyPlaceHolder_'

}

function BaseID() {
    return BaseBodyID() + 'mainPlaceHolder_'
    
}

function debugAlert(str) {
    if (window.location.search.indexOf('debug') >= 0) {
        alert(str);
    }
}

function zeroPad(num, count) {
    var numZeropad = num + '';
    while (numZeropad.length < count) {
        numZeropad = "0" + numZeropad;
    }
    return numZeropad;
}

if (window.addEventListener)
    window.addEventListener("load", OnLoadPage, false);
else if (window.attachEvent)
    window.attachEvent("onload", OnLoadPage);
else if (document.getElementById)
    window.onload = OnLoadPage;
    

