// +++++++++++++++++++++++++++++++++++
// (C) Copyright 2003 - 2008 Niro Solutions Pty Limited ABN 89 106 967 140
// +++++++++++++++++++++++++++++++++++
// Version: 3.0.0
// +++++++++++++++++++++++++++++++++++
// Original author: Miles Glisovic
// Last update completed by: Miles Glisovic
// Modification date: 21/02/08
// +++++++++++++++++++++++++++++++++++

function getCmbText(cmb1,u_l_p)
{
//u=>upper
//l=>lower
//p=>plain (as-is)
var s = cmb1.options[cmb1.selectedIndex].text
if(u_l_p.toUpperCase()=="U")
	return s.toUpperCase();
else if(u_l_p.toUpperCase()=="L")
	return s.toLowerCase();
else
	return s;
}

function removeDecimalPart(ns)
{
var li = ns.lastIndexOf(".")
if(li<0)
	return ns;
else
	return (ns.substring(0,li))
}

function isValidValue(field,value,vMin,vMax,sMin,sMax,sAll)
{
	var ret = false;
	if(isInt(field.value))
	{
		if(value < vMin)
		{
			switchToDIV(field)
			alert(sMin)
			mySelect(field)
		}
		else if(value > vMax)
		{
			switchToDIV(field)
			alert(sMax)
			mySelect(field)
		}
		else
			ret=true
	}
	else
	{
		switchToDIV(field)
		alert(sAll)
		mySelect(field)
	}
	return ret;
}

function isInt(v)
{
var ret=false;
var int1 = /^\d{1,8}$/;
var reg=new RegExp(int1);
var ret = reg.test(v);
if(ret)
	ret=true;
return ret
}

function getCmbIndex(cmb1,firstLetter)
{
	for(i=0;i<cmb1.options.length;i++)
	{
		if(((cmb1.options[i].text).charAt(0)).toUpperCase()==firstLetter.toUpperCase())
			return i;
	}
	return --i;//just in case
}

function getSafeFieldValue(field)
{
	var x=0
	if(jsLRTrim(field.value)=="" || isNaN(jsLRTrim(field.value)))
		x=0
	else
		x = parseInt(field.value,10)
	return x;
}

function jsLRTrim(s)
{
	return s.replace(/(^\s+)|(\s+$)/g, "");
}

function isDecimal_MinMax(field,min1,max1,prompt0,prompt1)
{
var v=field.value
var int1 = /^\d{1,}(\.\d{1,})?$/;
var reg=new RegExp(int1);
var ret = reg.test(v);
if(ret && parseFloat(v) >= min1 && parseFloat(v) <= max1)
	return true;
else
{
	switchToDIV(field)
	if(prompt1)
		alert(prompt0)
	return false;
}
}

function getSafeDecimalFieldValue(field)
{
	var x=0
	if(jsLRTrim(field.value)=="" || isNaN(jsLRTrim(field.value)))
		x=0
	else
		x = parseFloat(field.value)
	return x;
}

function adjustDecimalPoint(field)
{
	if((field.value).indexOf(".")==0)
		field.value="0"+(field.value)
}

function myRound(number,dp)
{
return Math.round(number*Math.pow(10,dp))/Math.pow(10,dp);
}

function myMathFloor(number,dp)
{
return myRound((Math.floor(number*Math.pow(10,dp)))/Math.pow(10,dp),dp)
}

function myMathCeil(number,dp)
{
return myRound((Math.ceil(number*Math.pow(10,dp)))/Math.pow(10,dp),dp)
}

function formatted_toFixed1(_value, np, _sign)
{
// _value has to be a number;
// use getSafeDecimalFieldValue(field) or getSafeFieldValue(field) to pass in _value parameter
return formatCurrency(_value.toFixed(np), _sign)
}
function formatCurrency(num, _sign)
{
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + _sign + num + '.' + cents);
}

function isInt_MinMax(field,min1,max1,prompt1)
{
var v=field.value
var int1 = /^\d{1,7}$/;
var reg=new RegExp(int1);
var ret = reg.test(v);

if(ret && v >= min1 && v <= max1)
	return true;
else
{
	switchToDIV(field)
	mySelect(field)
	if(prompt1)
		alert("Please enter a whole number between " + min1 + " and " + max1 +".")
	return false;
}
}

function isInt_MinMax1(field,min1,max1)
{
var res=false;
var v=field.value
var int1 = /^\d{1,7}$/;
var reg=new RegExp(int1);
var ret = reg.test(v);

if(ret && v >= min1 && v <= max1)
	res = true;
return res;
}

function validField(field, fMin, fMax)
{
	if(isInt(field.value) && (parseInt(field.value,10) >= fMin) && (parseInt(field.value,10) <= fMax))
		return true
	else
		return false
}

function resetTo0(field)
{
	if(jsLRTrim(field.value)=="")
		field.value=0
}

function openInMain(page1)
{
try
{
	(window.opener).location=page1
	window.opener.focus()
}
catch(e)
{
	msgWindow1=null;
	msgWindow1=window.open(page1,'mainWindow');
	self.close()
}
}

function alertFromJava(s,ind)
{
	if(ind==2)
		goToStep2(this,2)
	else
		showTab(1)

	alert(s)
}
function validDecimalField2(f,fld, prompt, minV,maxV)
{
	var ret=false
	var field=fld;
	sAll = prompt
// find if '.' entered
var li = (field.value).indexOf(".")
	// if last character is '.'
	if(li >= 0 && (field.value).charAt((field.value).length - 1) == '.')
	{
		if(!isNaN((field.value).substring(0,li)))
		{
			var n=parseInt((field.value).substring(0,li),10)
			if(!(n >= minV && n <= maxV))
			{
				field.value=""
			}
			else
				ret=true
		}
		else
			field.value=""

		if(!ret && sAll!="")
			alert(sAll)
	}
	else
	{
		if(!isDecimal_MinMax(field,minV,maxV,sAll,(sAll==""?false:true)))
			field.value=""
		else
			ret=true
	}

	if(!ret) mySelect(field)
	return ret
}

function setCaretAtEnd(input)
{ 
input.focus(); 
if (input.createTextRange)
{ 
	var range = input.createTextRange(); 
	range.collapse(false); 
	range.select(); 
} 
} 
function setCaretAtStart(input)
{ 
input.focus(); 
if (input.createTextRange)
{ 
	var range = input.createTextRange(); 
	range.collapse(true); 
	range.select(); 
} 
} 

function mySelect(field)
{
if((navigator.appName).toUpperCase()!="NETSCAPE")
{
	try
	{
		field.focus()
		field.select()
	}
	catch(e)
	{
		;
	}
}
}

function getMyDIV(x)
{
	// start with an element and go up through the tree trying to find
	// a <DIV> HTML element;
	// return a reference to an object of type <DIV>
	// or, if not found, return null
	if(x!=null && x.tagName!="DIV")
		return (getMyDIV(x.parentNode));
	else
		return x;
}

function getMyTable(x)
{
	if(x!=null && x.tagName!="TABLE")
		return (getMyTable(x.parentNode));
	else
		return x;
}

function selectCmb(field)
{
	switchToDIV(field)
	field.focus()
}
function setLarge()
{
	txtsize1.className='largeTextSize';
	txtsize2.className='fullRow';
	txtsize3.className='fullRow';
}
function setSmall()
{
	txtsize1.className='bodytext';
	txtsize2.className='middleRow';
	txtsize3.className='middleRow';
}
function openPrintWnd()
{
window.print()
}
function setEmptyFieldTo0(field)
{
	var x=0
	if(jsLRTrim(field.value)=="")
		x=0
	else
		x = field.value
	return x;
}

function validFieldNew(field, min1, max1)
{
	if(isNaN(jsLRTrim(field.value)))
		return false

	var x = getSafeDecimalFieldValue(field)
	if(x >= min1 && x <= max1)
		return true
	else
		return false
}
function numberValid(_val, _prompt)
{
	if(isNaN(_val))
		alert(_prompt)
	return !isNaN(_val)
}
function limit4Dec2(field)
{
// find if '.' entered
var li = (field.value).indexOf(".")
if(li<0)
{
	if((field.value).length > 6)
		field.value=(field.value).substring(0,6)
}
else
{
	var s1 = (field.value).substring(0, li)
	var s2 = ((field.value).substring(li+1,(field.value).length))
	if(s2.length > 4)
		field.value=s1+"."+s2.substring(0,4)
}
}
function limitNoDecimalPlaces(field, n)
{
// this new version will allow non-decimal number of any length
// find if '.' entered
var li = (field.value).indexOf(".")
if(li >= 0)
{
	var s1 = (field.value).substring(0, li)
	var s2 = ((field.value).substring(li+1,(field.value).length))
	if(s2.length > n)
		field.value=s1+"."+s2.substring(0,n)
}
}
function cursorH(e)
{
	e.style.cursor = "pointer";
}
function cursorA(e)
{
	e.style.cursor = "default";
}					
function setNavigatorsName()
{
navigator_appName=""
navigator_appName=navigator.appName
}
