var bClicked = false;

function doubleClick(){
if (bClicked == true){
	alert('Please do not double-click this button');
	return false;}
else{
	bClicked = true;
	return true;}}
	
function hasChanged(){
	pagechanged = true;}

function hideElement(elt)
{
  elt.style.display = "none"
}

function revealElement(elt)
{
  elt.style.display = "";
  newitemrevealed = true;
}

function askSave()
{
  if (pagechanged == true)
  { if (confirm("Information might have changed. Are you sure you want to leave this page without updating?"))
        return true;
    else
        return false;
  }
  else
    return true;
}

function isInRange(elm, label, cmin, cmax)
{
var value = unformatCurrency(elm.value);
var min = unformatCurrency(cmin);
var max = unformatCurrency(cmax);
//alert(elm.value + ':' + cmax);
//alert(value + ':' + max);

if (min != ''&&value<min)
	{
	alert('The minimum value for ' + label + ' is $' + formatCurrency(cmin,'$#.##0,00'));
	elm.focus();
	return false;
	}
if (max != ''&&value>max)
	{
	alert('The maximum value for ' + label + ' is $' + formatCurrency(cmax,'$#.##0,00'));
	elm.focus();
	return false;
	}
return true;
}

function isBetween(elm, label, imin, imax)
{
var value = parseInt(elm.value,10);
var min = parseInt(imin,10);
var max = parseInt(imax,10);
//alert(elm.value + ':' + cmax);
//alert(value + ':' + min + ':' + max);
if (value<min)
	{
	alert('The minimum value for ' + label + ' is ' + imin);
	elm.focus();
	return false;
	}
if (value>max)
	{
	alert('The maximum value for ' + label + ' is ' + imax);
	elm.focus();
	return false;
	}
return true;
}


function isCheckedBoolean(elmstr,label)
{
var sLabel
if (label == '')
	sLabel = elmstr[0].name
else
	sLabel = label;
var bchecked = false;
for (i=0;i<elmstr.length;i++){
	if (elmstr[i].checked == true) bchecked = true;
}
if (bchecked==false){
	alert("Please make a selection in the field " + sLabel);
	return false;
}
else
	return true;
}

function isSelected(elm,label,skipfirstoption)
{
var sLabel
if (label == '')
	sLabel = elm.name
else
	sLabel = label;
if ((skipfirstoption==1&&elm.selectedIndex<0)||(skipfirstoption==''&&elm.selectedIndex==0)){
	alert("Please make a selection in the field " + sLabel);
	elm.focus();
	return false;
}
else{
	return true;
	}
}

function isFilled(elm,label)
{
var evalue = elm.value;
var sLabel
if (label == '')
	sLabel = elm.name
else
	sLabel = label;
if (evalue.charAt(0) == ' '){
	do	{
		evalue = evalue.substr(1, evalue.length - 1)
		}
	while (evalue.charAt(0) == ' ');
}
if (evalue == "" || evalue == null){
	alert("Please enter a value in the field " + sLabel);
	elm.value = '';
	elm.focus();
	return false;
}
else
	return true;
}

function isEmail(elm,label)
{
var sLabel
if (label == '')
	sLabel = elm.name
else
	sLabel = label;
if (elm.value != "") {
	if (elm.value.indexOf("@") != -1 && elm.value.indexOf(".") != -1) 
		return true
	else {
		alert("Please enter a valid email address in the field " + sLabel);
		elm.focus();
		return false
	}
  }
else
	return true
}

function isURL(elm,label)
{
var sLabel
if (label == '')
	sLabel = elm.name
else
	sLabel = label;
if (elm.value != "") {
	if (elm.value.indexOf(".") != -1) {
		if (elm.value.indexOf(".",elm.value.indexOf(".")+1) != -1) 
			return true; 
		else {
			alert("Please enter a valid URL in the field " + sLabel);
			elm.focus();
			return false
			}
	}
	else {
		alert("Please enter a valid URL in the field " + sLabel);
		elm.focus();
		return false
	}
  }
else
	return true
}

function isNumeric(elm,label)
{
var elmstr = elm.value + "";
var j
var sLabel
if (label == '')
	sLabel = elm.name
else
	sLabel = label;
if (elmstr.length == 0) return true;
if (elmstr.charAt(0) == '-'){
	if (elmstr.length == 1) {
		alert("Please enter a valid number in the field " + sLabel);
		elm.focus();
		return false;
	}
	j = 1
}
else
	j = 0;
	for (var i=j; i < elmstr.length; i++) 
	{ 
	if ((elmstr.charAt(i) < "0" ||
 	   elmstr.charAt(i) > "9" ) && elmstr.charAt(i) != '.' && elmstr.charAt(i) != ','){
		alert("Please enter a valid number in the field " + sLabel);
		elm.focus();
		return false;
	}
}
return true;
}

function changeDate(elm,sFormat)
{

switch (event.keyCode){
case 33 :
	hasChanged();
	if (event.ctrlKey==true)
		elm.value=monthAdd(elm.value,1,sFormat)
	else 
		elm.value=dayAdd(elm.value,1,sFormat);
	break;
case 34 :
	hasChanged();
	if (event.ctrlKey==true) 
		elm.value=monthAdd(elm.value,-1,sFormat)
	else 
		elm.value=dayAdd(elm.value,-1,sFormat);
	break;
default :
}
}

function dayAdd(sDate,nr,sFormat)
{
var strDate, sSeparator
if (sFormat!='MMDDYYYY')
	strDate = storeDate(sDate,sFormat)
else
	strDate = sDate
sSeparator = dateSeparator(sDate);
oDate = new Date(strDate);
oDate.setDate(oDate.getDate() + nr);
if (sFormat!='MMDDYYYY'){
	strDate = oDate.getDate().toString() + sSeparator + (parseInt(oDate.getMonth(),10) + 1).toString() + sSeparator + oDate.getFullYear().toString()
	return formatDate(strDate,sFormat,sSeparator)
	}
else {
	strDate = (parseInt(oDate.getMonth(),10) + 1).toString() + sSeparator + oDate.getDate().toString() + sSeparator + oDate.getFullYear().toString()
	return formatDate(strDate,sFormat,sSeparator)
	}
}

function monthAdd(sDate,nr,sFormat)
{
var strDate, sSeparator
if (sFormat!='MMDDYYYY')
	strDate = storeDate(sDate,sFormat)
else
	strDate = sDate
sSeparator = dateSeparator(sDate);
oDate = new Date(strDate);
oDate.setMonth(oDate.getMonth() + nr);
if (sFormat!='MMDDYYYY'){
	strDate = oDate.getDate().toString() + sSeparator + (parseInt(oDate.getMonth(),10) + 1).toString() + sSeparator + oDate.getFullYear().toString()
	return formatDate(strDate,sFormat,sSeparator)
	}
else {
	strDate = (parseInt(oDate.getMonth(),10) + 1).toString() + sSeparator + oDate.getDate().toString() + sSeparator + oDate.getFullYear().toString()
	return formatDate(strDate,sFormat,sSeparator)
	}
}

function FixDate(sDate)
{
	datestr = sDate + ""
	if (datestr.length == 1) 
		return "0" + datestr 
	else 
		return datestr
}

function FixYear(datestr)
{
	if (datestr.length == 2)
		{
		if (datestr < "30")
			return "20" + datestr;
		else
			return "19" + datestr;
		}
	else
		return datestr
		
}

function fixCreditCard(pvalue)
{
var value = pvalue + "";
value = value.replace(/ /g,'');
value = value.replace(/-/g,'');
value = value.replace(/\./g,'');
value = value.replace(/\,/g,'');
return value
}

function isCreditCard(pvalue)
{
var elmstr = pvalue
var j
if (elmstr.length == 0) return true;
j = 0;
for (var i=j; i < elmstr.length; i++) 
{ if (elmstr.charAt(i) < "0" || elmstr.charAt(i) > "9"){
	alert("Please enter a valid credit card number with numbers only");
	return false;
	}
}
return true;
}

function storeDate(pDate, sFormat)
{
var sDate = pDate.toUpperCase();
var sSeparator = dateSeparator(sDate);
var pos = 0;
var pos2 = 0;
var sDay, sMonth, sYear, sTime

	if (sDate.length > 10){
		pos = sDate.lastIndexOf(' ');
		if (pos > sDate.length-4){
			pos = sDate.lastIndexOf(' ',pos-1);
		}
		sTime = sDate.substr(pos);
		sDate = sDate.substr(0, pos);
		}
	else
		sTime = '';

	if (sSeparator == ''){
		switch (sFormat.toUpperCase()){
		case 'YYYYMMDD':
			pos = 4;
			break;
		default: 
			pos = 2;
		}}
	else {
		pos = sDate.indexOf(sSeparator);
		}

	if (pos<0) {
		alert('Error parsing date ' + sDate);
		return pDate
		}
	else {
		switch (sFormat.toUpperCase()){
		case 'DDMMYYYY':
			if (sSeparator == '')
				pos2 = 4
			else
				pos2 = sDate.indexOf(sSeparator,pos+1);
			sDay = sDate.substr(0,pos);
			sMonth = sDate.substring(pos+sSeparator.length,pos2);
			sYear = sDate.substr(pos2+1);

			break;
		case 'YYYYMMDD':
			if (sSeparator == '')
				pos2 = 6
			else
				pos2 = sDate.indexOf(sSeparator,pos+1);
			sYear = sDate.substr(0,pos);
			sMonth = sDate.substring(pos+sSeparator.length,pos2);
			sDay = sDate.substr(pos2+1);
			break;
		default: 
			if (sSeparator == '')
				pos2 = 4
			else
				pos2 = sDate.indexOf(sSeparator,pos+1);
			sMonth = sDate.substr(0,pos);
			sDay = sDate.substring(pos+sSeparator.length,pos2);
			sYear = sDate.substr(pos2+1);
		}
	}
	if (sDay !=''){
		sDay = FixDate(sDay)
		sMonth = FixDate(sMonth)
		sYear = FixYear(sYear)
		return sMonth + '/' + sDay + '/' + sYear + sTime;
		}
	else
		return pDate;
}

function formatDate(pDate, sFormat, sOutSeparator)
{

var sDate = pDate.toUpperCase();
var pos = 0;
var pos2 = 0;
var sDay, sMonth, sYear, sTime, sNewDate, sHour, sMinute
var sSeparator = dateSeparator(sDate);
var bError = false;

	if (sDate.length > 10){
		pos = sDate.lastIndexOf(' ');
		if (pos > sDate.length-4){
			pos = sDate.lastIndexOf(' ',pos-1);
		}
		sTime = sDate.substr(pos+1);
		sDate = sDate.substr(0, pos);
		}
	else
		sTime = '';

	if (sTime!=''){
		if (sTime.length < 4 || sTime.length > 5 || sTime.indexOf(':') < 0){
			bError = true
			}
		else {
			pos = sTime.indexOf(':');
			sHour = FixDate(sTime.substr(0,pos));
			sMinute = FixDate(sTime.substr(pos+1));
			if (parseInt(sHour,10) < 0 || parseInt(sHour,10) > 23) bError = true;
			if (parseInt(sMinute,10) < 0 || parseInt(sMinute,10) > 59) bError = true;	
		};
		if (bError==true){
			alert('Please check the time you just entered. Please enter time in military format, e.g. \'15:45\'');
			bError = false;
			sTime = ' ' + sTime;
		}
		else 
			sTime = ' ' + sHour + ':' + sMinute;
	}
	
	if (sSeparator == ''){
		switch (sFormat.toUpperCase()){
		case 'YYYYMMDD':
			pos = 4;
			break;
		default: 
			pos = 2;
		}}
	else {
		pos = sDate.indexOf(sSeparator);
		}

	if (pos<0) {
		alert('Error parsing date ' + sDate);
		return pDate
		}
	else {
		switch (sFormat.toUpperCase()){
		case 'DDMMYYYY':
			if (sSeparator == '')
				pos2 = 4
			else
				pos2 = sDate.indexOf(sSeparator,pos+1);
			sDay = sDate.substr(0,pos);
			sMonth = sDate.substring(pos+sSeparator.length,pos2);
			sYear = sDate.substr(pos2+sSeparator.length);

			break;
		case 'YYYYMMDD':
			if (sSeparator == '')
				pos2 = 6
			else
				pos2 = sDate.indexOf(sSeparator,pos+1);
			sYear = sDate.substr(0,pos);
			sMonth = sDate.substring(pos+sSeparator.length,pos2);
			sDay = sDate.substr(pos2+sSeparator.length);
			break;
		default: 
			if (sSeparator == '')
				pos2 = 4
			else
				pos2 = sDate.indexOf(sSeparator,pos+1);
			sMonth = sDate.substr(0,pos);
			sDay = sDate.substring(pos+sSeparator.length,pos2);
			sYear = sDate.substr(pos2+sSeparator.length);
		}
	}
	if (sDay !=''){
		sDay = FixDate(sDay)
		sMonth = FixDate(sMonth)
		sYear = FixYear(sYear)

		if (parseInt(sYear,10) < 1753) bError = true
		if (parseInt(sMonth,10) < 1 || parseInt(sMonth,10) > 12) bError = true;
		if (parseInt(sDay,10) < 1 || parseInt(sDay,10) > 31) bError = true;
		if (parseInt(sMonth,10) == 2 && parseInt(sDay,10) > 29) bError = true;
		if ((parseInt(sMonth,10) == 4 || parseInt(sMonth,10) == 6 || parseInt(sMonth,10) == 9 || parseInt(sMonth,10) == 11) && (parseInt(sDay,10) > 30)) bError = true;
		
		if (bError==true){
			alert('Please check the date you just entered');
			}
		switch (sFormat.toUpperCase()){
		case 'DDMMYYYY':
			sNewDate = sDay + sOutSeparator + sMonth + sOutSeparator + sYear + sTime
			break;
		case 'YYYYMMDD':
			sNewDate = sYear + sOutSeparator + sMonth + sOutSeparator + sDay + sTime
			break;
		default: 
			sNewDate = sMonth + sOutSeparator + sDay + sOutSeparator + sYear + sTime
		};
		return sNewDate
		}
	else
		return pDate;

}

function isDate(elm, sFormat, label)
{
var sSeparator = dateSeparator(elm.value);
var sDate = formatDate(elm.value + "", sFormat, sSeparator);
var bError = false;
var pos = 0;
var pos2 = 0;
var sDay, sMonth, sYear, sTime

if (sDate==''){
	return true
	}
else {
	if (sDate.length > 10){
		pos = sDate.lastIndexOf(' ');
		if (pos > sDate.length-4){
			pos = sDate.lastIndexOf(' ',pos-1);
		}
		sTime = sDate.substr(pos);
		sDate = sDate.substr(0, pos);
		}
	else
		sTime = '';

	if (sSeparator == ''){
		switch (sFormat.toUpperCase()){
		case 'YYYYMMDD':
			pos = 4;
			break;
		default: 
			pos = 2;
		}}
	else {
		pos = sDate.indexOf(sSeparator);
		}
	if (pos<0) {
		bError = true;
		}
	else {
		switch (sFormat.toUpperCase()){
		case 'DDMMYYYY':
			if (sSeparator == '')
				pos2 = 4
			else
				pos2 = sDate.indexOf(sSeparator,pos+1);
			sDay = sDate.substr(0,pos);
			sMonth = sDate.substring(pos+sSeparator.length,pos2);
			sYear = sDate.substr(pos2+sSeparator.length);
			break;
		case 'YYYYMMDD':
			if (sSeparator == '')
				pos2 = 6
			else
				pos2 = sDate.indexOf(sSeparator,pos+1);
			sYear = sDate.substr(0,pos);
			sMonth = sDate.substring(pos+sSeparator.length,pos2);
			sDay = sDate.substr(pos2+sSeparator.length);
			break;
		default: 
			if (sSeparator == '')
				pos2 = 4
			else
				pos2 = sDate.indexOf(sSeparator,pos+1);
			sMonth = sDate.substr(0,pos);
			sDay = sDate.substring(pos+sSeparator.length,pos2);
			sYear = sDate.substr(pos2+sSeparator.length);
		};

		if (isNaN(parseInt(sYear,10))) bError = true;
		if (isNaN(parseInt(sMonth,10))) bError = true;
		if (isNaN(parseInt(sDay,10))) bError = true;
		if (parseInt(sYear,10) < 1753) bError = true
		if (parseInt(sMonth,10) < 1 || parseInt(sMonth,10) > 12) bError = true;
		if (parseInt(sDay,10) < 1 || parseInt(sDay,10) > 31) bError = true;
		if (parseInt(sMonth,10) == 2 && parseInt(sDay,10) > 29) bError = true;
		if ((parseInt(sMonth,10) == 4 || parseInt(sMonth,10) == 6 || parseInt(sMonth,10) == 9 || parseInt(sMonth,10) == 11) && (parseInt(sDay,10) > 30)) bError = true;
	}
	if (bError == true){ 
		switch (sFormat.toUpperCase()){
		case 'DDMMYYYY':
			if (label == '')
				alert('Please enter a valid date (DD' + sSeparator + 'MM' + sSeparator + 'YYYY) in the field ' + elm.name);
			else
				alert('Please enter a valid date (DD' + sSeparator + 'MM' + sSeparator + 'YYYY) in the field ' + label);
			break;
		case 'YYYYMMDD':
			if (label == '')
				alert('Please enter a valid date (YYYY' + sSeparator + 'MM' + sSeparator + 'DD) in the field ' + elm.name);
			else
				alert('Please enter a valid date (YYYY' + sSeparator + 'MM' + sSeparator + 'DD) in the field ' + label);
			break;
		default: 
			if (label == '')
				alert('Please enter a valid date (MM' + sSeparator + 'DD' + sSeparator + 'YYYY) in the field ' + elm.name);
			else
				alert('Please enter a valid date (MM' + sSeparator + 'DD' + sSeparator + 'YYYY) in the field ' + label);
			break;
		};
		}
	else
		return true;
	}
}

function isMoney(pvalue)
{
var elmstr = pvalue
var j
if (elmstr.length == 0) return true;
if (elmstr.charAt(0) == '-'){
	if (elmstr.length == 1) {
		alert("Please enter a valid amount without currency symbols");
		return false;
	}
	j = 1
}
else
	j = 0;
	for (var i=j; i < elmstr.length; i++) 
	{ 
	if ((elmstr.charAt(i) < "0" || elmstr.charAt(i) > "9") && (elmstr.charAt(i) != "." && elmstr.charAt(i) != ",")){
		alert("Please enter a valid amount without currency symbols");
		return false;
	}
}
return true;
}

function unformatCurrency(strAmount)
{
var tAmount = strAmount + "";
var tStr = "";
for(var i=0; i<tAmount.length; i++){
	if(tAmount.charAt(i) < "0" || tAmount.charAt(i) > "9")
		tStr = tStr
	else
		tStr = tStr + tAmount.charAt(i)
}
return parseInt(tStr,10)
}

function formatCurrency(strAmount, format)
{
  var tAmount = strAmount + "";
  var tStr = "";
  var tCount;
  var bNegative = false;
    if (isMoney(tAmount) != true) {return ''};
	if (tAmount.substring(0,1) == "-") 
		{
			bNegative = true;
			tAmount = tAmount.substring(1, tAmount.length)
		}
	else
		bNegative = false;
	if (tAmount.indexOf(",") >= 0 || tAmount.indexOf(".") >= 0)
	{
		if (tAmount.indexOf(",") == 0 || 
		    tAmount.indexOf(".") == 0 )
		{ tAmount = "0" + tAmount;
		}
		if (tAmount.indexOf(",") == tAmount.length - 2 || 
		    tAmount.indexOf(".") == tAmount.length - 2)
		{ tAmount = tAmount + "0";
		}
		
		if (tAmount.indexOf(",") != tAmount.length - 3 && 
		    tAmount.indexOf(".") != tAmount.length - 3 )
		{ tAmount = tAmount + "00";
		}
		
	}
	else
	{ tAmount = tAmount + "00";
	}
	
	for (var i = 0; i < tAmount.length; i++)
	{
		if (tAmount.charAt(i) == "." ||
			tAmount.charAt(i) == "," )
		{ tAmount = tAmount.substring(0,i) + tAmount.substring(i + 1, tAmount.length);
		}
	}

	if (tAmount.length == 3) {	
		if (format=='$#.##0,00')
			tStr = tAmount.substring(0, 1) + "," + tAmount.substring(1, 3);
		else
			tStr = tAmount.substring(0, 1) + "." + tAmount.substring(1, 3);	
	}
	else {	
		if (tAmount.length == 4){	
			if (format=='$#.##0,00')
				tStr = tAmount.substring(0, 2) + "," + tAmount.substring(2, 4);
			else
				tStr = tAmount.substring(0, 2) + "." + tAmount.substring(2, 4);
		}
		else {	
			tCount = (tAmount.length - 2) % 3;
			if (tCount == 0) tCount = 3;
			for (var tPos = 0; tPos <= tAmount.length - 3;)
			{	if (tPos == tAmount.length - 3)
				{	
				if (format=='$#.##0,00')
					tStr = tStr + tAmount.substring(tPos, tPos + 1) + "," + tAmount.substring(tAmount.length - 2, tAmount.length);
				else
					tStr = tStr + tAmount.substring(tPos, tPos + 1) + "." + tAmount.substring(tAmount.length - 2, tAmount.length);
				}
				else 
				{	if (tCount == 0)
					{
					if (format=='$#.##0,00')
						tStr = tStr + ".";
					else
						tStr = tStr + ",";
					tCount = 3;
					tPos = tPos - 1;
					}
					else
					{ 
						tStr = tStr + tAmount.substring(tPos, tPos + 1);
						tCount = tCount - 1;
					}
				}
				tPos = tPos + 1;
			}
		}
	}
	if (bNegative == true)
		return "-" + tStr
	else
		return tStr;
}

function checkSelfDates(sFormat)
{
if (document.mainform.dates.value=='self')
{
	if (document.mainform.start.value=='')
	{
		alert('Please enter a date in the \'From\' date box');
		document.mainform.start.focus();
		return false;
	}
	else
	{
		if (document.mainform.end.value=='')
		{
			alert('Please enter a date in the \'Until\' date box');
			document.mainform.end.focus();
			return false;
		}
		else
		{
			var sDate = new Date(storeDate(document.mainform.start.value,sFormat));
			var eDate = new Date(storeDate(document.mainform.end.value,sFormat));
			if (eDate < sDate)
			{
				alert('Please make sure that the \'From\' date is before the \'Until\' date');
				document.mainform.end.focus();
				return false;
			}
			else
				return true
		}
	}
}
else
	return true;
}

function fillDropDown(elm, aVar)
{
var sval, stext, opt;
var j = 0;
for (i=0;i<aVar.length;i++){
	sval = aVar[i][0];
	stext = aVar[i][1];
	elm.options[i+1].value = sval;
	elm.options[i+1].text = stext;
	elm.length = elm.length + 1;
	}
elm.length = elm.length - 1;
}
