function debugEval(fld)
{
try
{
try
{
var dbgwin = window.s_windowDebug;
debugAlert(eval(fld.value), true);
}
catch (e)
{
debugAlert("Error: " + e.message, true, true);
}
dbgwin.cmds[dbgwin.cmds.length] = dbgwin.field.value;
}
catch (e2)
{
}
}
function debugKeyDown()
{
var dbgwin = window.s_windowDebug;
var kc = dbgwin.event.keyCode;
switch(kc)
{
case 13:
debugEval(dbgwin.field);
dbgwin.s_cmdIdx = dbgwin.cmds.length - 1;
break;
case 38:
dbgwin.s_cmdIdx--;
if(dbgwin.s_cmdIdx<=0)dbgwin.s_cmdIdx =0;
dbgwin.field.value = dbgwin.cmds[dbgwin.s_cmdIdx];
break;
case 40:
dbgwin.s_cmdIdx++;
if(dbgwin.s_cmdIdx==dbgwin.cmds.length)dbgwin.s_cmdIdx = dbgwin.cmds.length - 1;
dbgwin.field.value = dbgwin.cmds[dbgwin.s_cmdIdx];
break;
}
}
function debugWindowInit()
{
while(!window.s_windowDebug)
{
var winDebug = window.s_windowDebug = window.open('/empty.html', 'xdebuglog', 'menubar=no, scrollbars=yes, width=400, height=200');
var mybody = winDebug.document.getElementsByTagName("body").item(0);
if(mybody)
{
mybody.innerHTML = "";
mybody.onbeforeunload = new Function("window.s_windowDebug = null;");
mybody.style.overflowY = "scroll";
mybody.style.margin = "40 0 0 0";
mybody.style.fontFamily = 'Verdana,Arial,Helvetica,sans-serif';
mybody.style.fontSize = 12;
var fld = winDebug.document.createElement("input");
fld.style.position = "absolute";
fld.style.top = "0px";
fld.style.left = "0px";
fld.style.width = "100%";
fld.style.border = "0px solid black";
fld.style.borderBottom = "1px dashed red";
fld.type = "text";
fld.onkeydown = debugKeyDown;
mybody.appendChild(fld);
s_windowDebug.cons = mybody;
s_windowDebug.cmds = new Array();
s_windowDebug.field = fld;
winDebug.document.title = "-=*( Debug Window )*=-";
}
else
{
window.s_windowDebug = null;
}
}
}
function debugStartTimer()
{
s_startTime = new Date();
}
function debugGetTime()
{
return ((new Date()).getTime() - s_startTime.getTime() ) / 1000;
}
function debugGetNowTimeString()
{
var now = new Date();
var h = now.getHours(); h = ((h<10) ? "0" : "") + h;
var m = now.getMinutes(); m = ((m<10) ? "0" : "") + m;
var s = now.getSeconds(); s = ((s<10) ? "0" : "") + s;
return h + ":" + m + ":" + s;
}
function debugAlert(sMsg, bHighlight, bRed)
{
if(!window.s_windowDebug)
{
debugWindowInit();
}
var mybody = s_windowDebug.cons;
if( mybody )
{
var line = s_windowDebug.document.createTextNode( debugGetNowTimeString() + " " + sMsg);
var br = s_windowDebug.document.createElement("DIV");
if(bHighlight)
{
br.style.background = "#FFFF00";
}
if(bRed)
{
br.style.color = "#FF0000";
}
br.appendChild(line);
if(mybody.firstChild)
{
mybody.insertBefore(br, mybody.firstChild);
}
else
{
br.appendChild(line);
}
}
}
function _funcname(f)
{
var s = f.toString().match(/function (\w*)/)[1];
if ((s == null) || (s.length == 0)) return "anonymous";
return s;
}
function stacktrace()
{
var s = ""
for (var a=arguments.caller; a!=null; a=a.caller)
{
s += _funcname(a.callee) + "\n";
if (a.caller == a) break;
}
return s;
}
function encode(text)
{
return escape(text);
}
function alphafirst(str)
{
var re = new RegExp("([A-Za-z].*)");
return (re.exec(str)!=null && RegExp.$1==str);
}
function scrollDiv()
{
var labelDiv = document.getElementById('div__label');
labelDiv.style.overflow = "visible";
labelDiv.style.position = "relative";
labelDiv.style.left = -document.getElementById('div__body').scrollLeft;
}
function getDocumentHeight()
{
if (window.innerHeight)
return window.innerHeight;
else
return document.body.clientHeight;
}
function getDocumentWidth()
{
if (window.innerWidth)
return window.innerWidth ;
else
return document.body.clientWidth;
}
var ieDiffWidth=0;
var ieDiffHeight=0;
function initOuter() {
var w, h, offW, offH, diffW, diffH;
var fixedW = 800;
var fixedH = 600;
if (document.all) {
offW = document.body.offsetWidth;
offH = document.body.offsetHeight;
window.resizeTo(fixedW, fixedH);
diffW = document.body.offsetWidth - offW;
diffH = document.body.offsetHeight - offH;
w = fixedW - diffW;
h = fixedH - diffH;
ieDiffWidth = w - offW;
ieDiffHeight = h - offH;
window.resizeTo(w, h);
}
}
function outerWd() {
if (document.all)
{
if (ieDiffHeight==0) initOuter();
return document.body.offsetWidth + ieDiffWidth;
}
else
return window.outerWidth;
}
function outerHt() {
if (document.all)
{
if (ieDiffHeight==0) initOuter();
return document.body.offsetHeight + ieDiffHeight;
}
else
return window.outerHeight;
}
function onBeforePrint()
{
var t= document.getElementById('div__label');
if (t != null)
{
t.style.width = null ;
t.style.height = null;
};
t = document.getElementById('div__body');
if (t != null)
{
t.style.width = null;
t.style.height = null;
}
document.body.scroll = 'auto';
}
function onAfterPrint()
{
resetDivSizes();
}
window.onbeforeprint = onBeforePrint;
window.onafterprint = onAfterPrint;
function resetDivSizes()
{
var header = document.getElementById('div__header');
var title = document.getElementById('div__title');
var label = document.getElementById('div__label');
var list = document.getElementById('div__body');
var nav = document.getElementById( 'div__nav');
var footer = document.getElementById('div__footer');
if (list == null)
return;
// we never want vertical scroll bars, but horizontal scroll bars are ok if necessary
// There should never be Y-overflow since we are sizing all of the elements to fit and scrolling individually
document.body.style.overflowY = "hidden";
var nHeight = getDocumentHeight() - 10;
nHeight -= getHeight(header) + getHeight(footer) + getHeight(title) + getHeight(label) + 25;
list.style.height = ( nHeight > 0 ? nHeight : 0);
list.clientWidth;
var docwidth = getDocumentWidth() - 10;
if ( nav != null )
{
nHeight += getHeight( label ) + getHeight( title ) - getHeight( document.getElementById( 'div__nav_img') );
document.getElementById('div__nav_on').style.height = ( nHeight > 0 ? nHeight : 0);
docwidth -= isIE ? nav.clientWidth : nav.scrollWidth;
}
list.style.width = Math.max( docwidth, 0 );
nHeight = getDocumentHeight() - 10;
nHeight -= getHeight(header) + getHeight(footer) + getHeight(title) + getHeight(label) + 25;
list.style.height = ( nHeight > 0 ? nHeight : 0);
if ( nav != null )
{
nHeight += getHeight( label ) + getHeight( title ) - getHeight( document.getElementById( 'div__nav_img') );
document.getElementById('div__nav_on').style.height = ( nHeight > 0 ? nHeight : 0);
}
if (label != null )
{
label.style.width = isIE ? list.clientWidth : list.scrollWidth;
}
for (var i=1; document.getElementById('div__labcol'+ i ) != null; i++)
{
var col = document.getElementById('div__labcol'+i);
var lab = document.getElementById('div__lab'+i);
if (lab != null )
{
if ( isIE || lab.tagName == 'TD' )
{
lab.style.width = col.offsetWidth;
}
else
{
lab.offsetParent.style.width = col.offsetWidth;
}
}
}
makeVisible(label);
makeVisible(list);
makeVisible(footer);
hideInvisibleRows();
}
function hideInvisibleRows()
{
var div = document.getElementById("squeezeBox");
if (div == null)
return;
var trs = div.getElementsByTagName("tr");
var hiddenHeight = 0;
for (var i=0; i < trs.length; i++)
{
if (trs[i].className == "labelRow" && isValEmpty(trs[i].getAttribute("squeezeBox")) )
{
hiddenHeight += trs[i].offsetHeight + 1;
trs[i].setAttribute("squeezeBox","T");
}
}
if (hiddenHeight > 0)
{
div.style.overflow = "hidden";
div.style.height = div.offsetHeight - hiddenHeight + (isIE ? 0 : 28);
}
}
function resizePopupWindow()
{
var list = document.getElementById('div__body');
if (list == null)
return;
var docwidth = getDocumentWidth()-10;
var maxspanwidth = getMaxContentWidth(list.getElementsByTagName("span"));
var maxdivwidth = getMaxContentWidth(list.getElementsByTagName("div"));
var maxwidth = Math.max(list.scrollWidth,Math.max(maxspanwidth,maxdivwidth));
if ( maxwidth > docwidth )
window.resizeBy(maxwidth -docwidth,0);
}
function getMaxContentWidth(elems)
{
var size = 0;
for ( i = 0; i < elems.length; i++ )
{
if ( elems[i].scrollWidth > size )
size = elems[i].scrollWidth;;
}
return size;
}
function getHeight(elem)
{
if (elem == null)
return 0;
else
return elem.offsetHeight ? elem.offsetHeight : 0;
}
function makeVisible(elem)
{
if (elem != null)
elem.style.visibility = 'visible';
}
function display(elem, on )
{
if (elem != null)
elem.style.display = on ? '' : 'none';
}
function visible(elem, on )
{
if (elem != null)
elem.style.visibility = on ? 'inherit' : 'hidden';
}
function trim(str)
{
return str.replace(/^\s+/,"").replace(/\s+$/,"");
}
function onlydigitsandchars(str)
{
var re = new RegExp("([A-Za-z0-9]+)");
return (re.exec(str)!=null && RegExp.$1==str);
}
function onlydigits(str)
{
var re = new RegExp("([0-9]+)");
return (re.exec(str)!=null && RegExp.$1==str);
}
function checkzipcode(f, bIsCanada)
{
var v = f.value;
var n = bIsCanada ? 6 : 5;
if(!onlydigits(f) || v.length != n)
{
alert('Please enter a valid '+n+' digit '+(bIsCanada?'Postal':'Zip')+' Code.');
return false;
}
return true;
}
function splitIntoRows( value )
{
return value != null ? (value.length > 0 ? value.split(String.fromCharCode(2)) : new Array()) : null;
}
function splitIntoCells( value )
{
return value != null ? value.split(String.fromCharCode(1)) : null;
}
function checkemailvalue(s_email,alrt)
{
if ((s_email.length < 6) ||
(s_email.indexOf('@',0) < 1) ||
(s_email.lastIndexOf('@') != s_email.indexOf('@',0)) ||
(s_email.lastIndexOf('@') > (s_email.length - 5)) ||
(s_email.lastIndexOf('.') > (s_email.length - 3)) ||
(s_email.lastIndexOf('.') < (s_email.length - 5)) ||
(s_email.indexOf('..',0) > -1) ||
(s_email.indexOf('@.',0) > -1))
{
if (alrt)
{
alert('Please enter a valid e-mail address.');
}
return false;
}
if ((s_email.indexOf(' ',0) > -1) ||
(s_email.indexOf(',',0) > -1) ||
(s_email.indexOf('"',0) > -1) ||
(s_email.indexOf('\'',0) > -1) ||
(s_email.indexOf(':',0) > -1) ||
(s_email.indexOf('>',0) > -1) ||
(s_email.indexOf('<',0) > -1))
{
if (alrt)
{
alert('Please enter a valid e-mail address. NetSuite does not accept e-mail addresses with apostrophes, quotation marks, commas, colons, spaces, or greater than or less than signs.');
}
return false;
}
if ((s_email.indexOf('.@',0) > -1))
{
if (alrt)
{
alert('Please proofread this email address. It may contain an error.');
}
}
return true;
}
function checkemailprefix(s_email)
{
if (s_email.indexOf('@',0) >= 2 &&
s_email.lastIndexOf('@') == s_email.indexOf('@',0) &&
s_email.indexOf('..',0) < 0 &&
s_email.indexOf(' ',0) < 0 &&
s_email.indexOf(',',0) < 0 &&
s_email.indexOf('"',0) < 0 &&
s_email.indexOf('>',0) < 0 &&
s_email.indexOf('<',0) < 0)
{
return true;
}
return false;
}
function checkemail(fld1,emptyok,alrt)
{
fld1.value = trim(fld1.value);
return checkemail2(fld1,fld1,emptyok,alrt);
}
function checkemail2(fld1,fld2,emptyok,alrt)
{
var s_email = fld1.value;
if (s_email != fld2.value)
{
alert('E-mail addresses must match');
return false;
}
if (emptyok && s_email.length==0)
{
return true;
}
return checkemailvalue(s_email,alrt);
}
function checkccnumber(fld1,fld2)
{
var cardnum = fld1.value;
if(cardnum.length > 0) cardnum = cardnum.replace(/ /gi,'');
if(cardnum.length > 0) cardnum = cardnum.replace(/-/gi,'');
if (cardnum.length<13 || cardnum.length>16)
{
alert("Credit card numbers must contain between 13 and 16 digits.");
return false;
}
if (!onlydigits(cardnum))
{
alert("Credit card numbers must contain only digits.");
return false;
}
var no_digit = cardnum.length;
var oddoeven = no_digit & 1;
var sum = 0;
for (var count = 0; count < no_digit; count++)
{
var digit = parseInt(cardnum.charAt(count),10);
if (!((count & 1) ^ oddoeven))
{
digit *= 2;
if (digit > 9)
digit -= 9;
}
sum += digit;
}
if (sum % 10 != 0)
{
alert("Credit card number is not valid. Please check that all digits were entered correctly.");
return false;
}
if (fld2 != null)
fld2.value = cardnum;
else
fld1.value = cardnum;
return true;
}
function isValEmpty(val,nam)
{
if (val == null)
return true;
if (val.length == 0)
return true;
re = / /gi;
val = val.replace(re,'');
return (val.length == 0)
}
function isempty(fld1,nam)
{
var val = fld1.value;
return isValEmpty(val,nam);
}
function nvl(val,val2)
{
return val == null ? val2 : val;
}
function emptyIfNull(val)
{
return val == null ? '' : val;
}
function checknotempty(fld1,nam)
{
if (isempty(fld1))
{
alert( chooseAorAn(nam, true) +" "+ nam +" must be entered");
try {
fld1.focus();
fld1.select();
} catch (e) { }
return false;
}
return true;
}
function amount_string(amount)
{
var cents = Math.floor((amount-Math.floor(amount))*100+0.5);
var centstring = (cents < 10) ? '0'+cents.toString() : cents.toString();
var dollarstring = dollars_string(Math.floor(amount));
return dollarstring.charAt(0).toUpperCase() + dollarstring.substr(1) + 'and ' + centstring + '/100';
}
function format_rate(a,p)
{
var returnMe;
if (isNaN(parseFloat(a)))
{
returnMe= '';
}
else
{
var s=(a<0);
if (s) a=-a;
var d=Math.floor(a);
var c=Math.floor((a-d)*(p?10:100)+0.5);
if (a == d+c/(p?10:100))
{
if (c==(p?10:100)) {d++;c=0;}
var cs=p?c.toString():((c < 10)?'0'+c.toString():c.toString());
returnMe = (s?'-':'')+d.toString()+'.'+cs+(p?'%':'');
}
else
returnMe = (s?'-':'')+a+(p?'%':'');
}
return returnMe;
}
function round_currency(a)
{
var b = Math.abs(a);
b = Math.floor((b * 100000.0)+0.5) / 100000.0 + 0.000001;
b = Math.floor((b * 100.0)+0.5) / 100.0;
b = b * (a >= 0.0 ? 1.0 : -1.0);
if( b == 0.0 )
return 0.0;
return b;
}
function round_float(a)
{
var b = Math.abs(a);
b = Math.floor((b * 100000.0)+0.5) / 100000.0;
b = b * (a >= 0.0 ? 1.0 : -1.0);
if( b == 0.0 )
return 0.0;
return b;
}
function pad_to_atleast_two_decimal_places(a)
{
var s;
if(a == null)
{
s = '';
}
else
{
s = a.toString();
var n = s.indexOf('.');
if(n == -1)
{
s = s + '.00';
}
else if(n == s.length-1)
{
s = s + '00';
}
else if(n == s.length-2)
{
s = s + '0';
}
if (n == 0)
{
s = '0' + s;
}
}
return s;
}
function format_currency(a, bDoNotRound)
{
var returnMe;
if(isNaN(a))
{
return '';
}
else if( !(bDoNotRound == true))
{
returnMe = round_currency(a);
}
else
returnMe = a;
returnMe = pad_to_atleast_two_decimal_places(returnMe);
return returnMe;
}
function validate_textarea(field, maxlen, doalert)
{
if (field.value == null || field.value.length == 0)
{
window.isvalid = true;
return true;
}
var validflag = true;
var err = '';
if (field.value.length > maxlen)
{
err = "Text too long (truncated at "+maxlen+" characters)";
newval = field.value.substr(0,maxlen);
field.truncatedValue = true;
}
else
field.truncatedValue = false;
if (err != '')
{
if (doalert) alert(err);
field.value = newval;
validflag = false;
}
window.isvalid = validflag;
return validflag;
}
function validate_field(field, type, doalert, autoplace, minval, maxval, mandatory)
{
type = type.toLowerCase();
if (field.value == null || field.value.length == 0)
{
if (mandatory == true)
{
if (doalert) alert("Field must contain a value.");
field.focus();
field.select();
window.isvalid = false;
return false;
}
else
{
window.isvalid = true;
return true;
}
}
var validflag = true;
if (type =="url")
{
var val = trim(field.value.toLowerCase());
if (!(val.indexOf('/') == 0 || val.indexOf('http://') == 0 || val.indexOf('https://') == 0 || val.indexOf('ftp://') == 0 || val.indexOf('file://') == 0))
{
if (val.indexOf('://') != -1)
{
if (doalert)
alert("Invalid url. Url must start with http://, https://, ftp://, or file://");
validflag = false;
}
else
field.value = 'http://' + trim(field.value);
}
}
else if (type == "currency" || type == "currency2" || type == "poscurrency")
{
var val = field.value.replace(/\$/g,"");
val = val.replace(/\ /g,"");
val = val.replace(/,/g,"");
val = val.toLowerCase();
if(val.charAt(0) == '=') val = val.substr(1);
if (val.substr(1).search(/[\+\-\*\/]/g) != -1)
{
var c = val.charAt(0);
if(val.charAt(0) >='a' && val.charAt(0) <='z')
{
value = "error";
}
else
{
try {
val = eval(val);
} catch (e) { val = "error"; }
autoplace = false;
}
}
numval = parseFloat(val);
if (isNaN(numval) || Math.abs(numval)>=1.0e+10)
{
if (doalert) alert("Invalid currency value. Values must be numbers up to 9,999,999,999.99");
validflag = false;
}
if (type == "poscurrency" && numval < 0)
{
if (doalert) alert("Invalid currency value. Value can not be negative.");
validflag = false;
}
if (validflag)
{
if(autoplace && val.indexOf(".") == -1) numval/=100;
if(type == "currency" || type == "poscurrency")
field.value = format_currency(numval);
else
field.value = format_currency(numval, true);
}
}
else if (type == "date")
{
var dt = NLDate_parseString(field.value, doalert);
if(dt == null)
{
validflag = false;
}
else
{
validflag = true;
field.value = getdatestring(dt);
}
}
else if (type == "mmyydate")
{
var month;
var day = 0;
var year;
var fmterr = "MMYY, MMYYYY, MM/DD/YY, MM/DD/YYYY";
if(window.dateformat == "DD-Mon-YYYY" && field.value.indexOf("/") == -1 && !onlydigits(field.value))
{
var ms = "JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC";
var val = field.value;
if (val.indexOf("-") != -1)
{
var c = val.split("-");
month = (ms.indexOf(c[0].toUpperCase())+3)/3;
year=parseInt(c[1],10);
}
else
{
var l = val.length, str;
str = val.substr(0,3); if (ms.indexOf(str.toUpperCase()) >= 0) month = (ms.indexOf(str.toUpperCase())+3)/3;
str = val.substr(3);
year=parseInt(str,10);
}
fmterr = "Mon-YY, Mon-YYYY, MonYY or MonYYYY";
}
else
{
if (field.value.indexOf("/") == -1)
{
var l = field.value.length;
month = parseInt(field.value.substr(0,2-l%2),10);
year = parseInt(field.value.substr(2-l%2),10);
}
else
{
var comps = field.value.split("/");
month = parseInt(comps[0],10);
if (comps[2] != null)
{
day = parseInt(comps[1],10);
year = parseInt(comps[2],10);
}
else
year = parseInt(comps[1],10);
}
}
if (month >= 1 && month <= 12 && ((year >= 0 && year < 100) || (year > 1900 && year <2100)))
{
if (year < 50)
year += 2000;
else if (year < 100)
year += 1900;
if (day == 0 || day > 31)
{
if (month == 2)
{
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
day = 29;
else
day = 28;
}
else if (month == 4 || month == 6 || month == 9 || month == 11)
day = 30;
else
day = 31;
}
field.value = getmmyydatestring(new Date(year, month-1, day));
validflag = true;
}
else
{
if (doalert) alert("Invalid date value (must be "+fmterr+")");
validflag = false;
}
}
else if (type == "ccexpdate")
{
validflag = true;
var m=0, y=0;
if(field.value.indexOf('/') != -1)
{
var dToday = new Date();
var Y = dToday.getFullYear();
var M = dToday.getMonth() + 1;
if(Y <= 999) Y += 1900;
var c = field.value.split('/');
if(onlydigits(c[0])) m = parseInt(c[0],10);
if(onlydigits(c[1])) y = parseInt(c[1],10);
if(m<1) m=1; else if(m>12) m=12;
if(y<100) y+=((y>=70)?1900:2000);
if(y= maxclip)
{
if (doalert) alert("Number exceeds maximum value");
validflag = false;
}
else if (numval <= minclip)
{
if (doalert) alert("Number is less than minimum value");
validflag = false;
}
else
{
if(autoplace && pctidx == -1 && val.indexOf(".") == -1) numval/=100;
field.value = format_rate(numval,pctidx!=-1);
validflag = true;
}
}
else if (type == "integer" || type == "posinteger" || type == "float" || type == "posfloat" || type == "percent")
{
var numval;
var custrange=false;
if ((minval != null || maxval != null) || type == "percent")
custrange=true;
var minclip= minval == null ? (type == "percent" ? 0 : -Math.pow(2,32)) : minval;
var maxclip = maxval == null ?(type == "percent" ? 100 : Math.pow(2,64)) : maxval;
var val = field.value;
val = val.replace(/,/g,"");
val = val.replace(/%/g,"");
if (type == "integer")
numval = parseInt(val,10);
else if (type == "posinteger")
{
numval = parseInt(val,10);
minclip=0;
}
else if (type == "posfloat")
{
numval = parseFloat(val);
minclip=0;
}
else
numval = parseFloat(val);
if (isNaN(numval) || (custrange && (numval > maxclip || numval < minclip)) || (!custrange && (numval >= maxclip || numval <= minclip)))
{
if (doalert)
{
if (type == "percent")
{
alert("Invalid percentage (must be between 0 and 100)");
}
else if (custrange == true)
{
if (minval == null)
alert("Invalid number (must be at most "+maxclip+")");
else if (maxval == null)
alert("Invalid number (must be at least "+minclip+")");
else
alert("Invalid number (must be between "+minclip+" and "+maxclip+")");
}
else if (type=="posinteger" || type=="posfloat")
alert("Invalid number (must be positive)");
else if (type=="integer" || type=="float")
{
if (isNaN(numval))
alert('You may only enter numbers into this field');
else
alert("Illegal number: " + numval);
}
else
alert("Invalid number (must be greater than -4.29B");
}
validflag = false;
}
else
{
if (type == "percent")
{
if (numval == Math.floor(numval))
field.value = numval + ".0%";
else
field.value = numval + "%";
}
else
field.value = numval;
validflag = true;
}
}
else if (type == "address")
{
var err = '';
if (field.value.length>999)
{
err = "Address too long (truncated at 1000 characters)";
newval = field.value.substr(0,999);
}
if (err != '')
{
if (doalert) alert(err);
field.value = newval;
}
}
else if (type == "time" || type == "timetrack")
{
var hours;
var minutes;
var re = /([0-9][0-9]?)?(:[0-5][0-9])?/
var result = re.exec(field.value)
if (result==null || result.index > 0 || result[0].length != field.value.length)
{
timeval = parseFloat(field.value);
if (isNaN(timeval))
hours = -1;
else
{
hours = Math.floor(timeval);
minutes = Math.floor((timeval-hours)*60+0.5);
}
}
else
{
if (RegExp.$1.length > 0)
hours = parseInt(RegExp.$1,10);
else
hours = 0;
if (typeof(RegExp.$2) != "undefined" && RegExp.$2.length > 0)
minutes = parseInt(RegExp.$2.substr(1),10);
else
minutes = 0;
}
if (hours >= 0 && minutes >= 0 && minutes < 60)
{
field.value = hours + ":" + (minutes < 10 ? "0" : "") + minutes;
validflag = true;
}
else
{
if (doalert) alert("Invalid time value (must be HH:MI)");
validflag = false;
}
}
else if (type == "timeofday")
{
var hours;
var minutes;
var amorpm;
var re;
var result;
var fldvalue = field.value;
re = /^[0-9]{1,4}([a|p])?$/;
if ( re.test(fldvalue) )
{
if ( fldvalue.length < 3 || ( fldvalue.length == 3 && RegExp.$1 ) )
{
var hh = RegExp.$1 ? fldvalue.substring(0,fldvalue.length-1) : fldvalue;
hh = parseInt( hh ) == 0 ? 12 : ( parseInt( hh ) > 12 ? parseInt( hh ) % 12 : hh );
var mm = "00";
var ampm = RegExp.$1 ? (RegExp.$1.toLowerCase() == 'p' ? "pm" : "am") : ( parseInt( fldvalue ) > 11 ? "pm" : "am" );
fldvalue = hh + ":" + mm + " "+ampm;
}
else if (fldvalue.length == 3 || (fldvalue.length == 4 && RegExp.$1) )
{
var hh = fldvalue.substring(0,1) == "0" ? "12" : fldvalue.substring(0,1);
var mm = RegExp.$1 ? fldvalue.substring(1,3) : fldvalue.substring(1);
var ampm = RegExp.$1 ? (RegExp.$1.toLowerCase() == 'p' ? "pm" : "am") : "am";
fldvalue = hh + ":" + mm + " "+ampm;
}
else
{
var hh = fldvalue.substring(0,2);
hh = parseInt( hh ) == 0 ? 12 : ( parseInt( hh ) > 12 ? parseInt( hh ) % 12 : hh );
var mm = RegExp.$1 ? fldvalue.substring(2,4) : fldvalue.substring(2);
var ampm = parseInt( fldvalue.substring(0,2) ) > 11 ? "pm" : "am";
ampm = RegExp.$1 ? (RegExp.$1.toLowerCase() == 'p' ? "pm" : "am") : ampm;
fldvalue = hh + ":" + mm + " "+ampm;
}
}
re = /([0-9][0-9]?)(:[0-5][0-9])\s?([AaPp])?[Mm]?/
result = re.exec(fldvalue)
if (result==null || result.index > 0 || result[0].length != fldvalue.length)
hours = -1;
else
{
if (RegExp.$1.length > 0)
hours = parseInt(RegExp.$1,10);
else
hours = -1;
if (typeof(RegExp.$2) != "undefined" && RegExp.$2.length > 0)
minutes = parseInt(RegExp.$2.substr(1),10);
else
minutes = -1;
amorpm = (RegExp.$3.length == 0 || RegExp.$3 == 'a' || RegExp.$3 == 'A') ? "" : "pm";
}
if (hours > 0 && hours <=12 && minutes >= 0 && minutes < 60)
{
if (amorpm == "") amorpm = "am";
field.value = hours + ":" + (minutes < 10 ? "0" : "") + minutes + " " + amorpm;
validflag = true;
}
else if (hours > 12 && hours <= 25 && minutes >= 0 && minutes < 60 && amorpm == "")
{
amorpm = "pm";
hours -= 12;
field.value = hours + ":" + (minutes < 10 ? "0" : "") + minutes + " " + amorpm;
}
else
{
if (doalert) alert("Enter the time of day as HH:MI or HH:MI AM/PM. You can enter hours from 1 to 12 and minutes from 0 to 59.");
validflag = false;
}
}
else if (type == "visiblepassword")
{
if (checkpassword(field, field, doalert))
validflag = true;
else
validflag = false;
}
else if (type == "email")
{
if (checkemail(field, true, doalert))
validflag = true;
else
validflag = false;
}
else if (type == "emails")
{
var bademails = new Array();
var validcount = 0;
var emails1 = field.value.split(',');
for (var i=0; i 0)
{
validflag = false;
if (doalert) alert('Invalid email(s) found: '+bademails.join('; '));
}
else if (validcount < 1)
{
validflag = false;
if (doalert) alert('No valid emails found in "'+field.value+'"');
}
else
validflag = true;
}
else if (type == "printerOffset")
{
var maxclip = 2.0;
var minclip = -2.0;
var val = field.value;
val = val.replace(/,/g,"");
numval = parseFloat(val);
if (isNaN(numval) || numval >= maxclip || numval <= minclip)
{
if (doalert)
{
if (numval >= maxclip)
alert("Invalid number (must be lower than " + maxclip + ").");
else if (numval <= minclip)
alert("Invalid number (must be greater than " + minclip + ").");
else
alert("Illegal number: " + numval);
}
validflag = false;
}
else
{
validflag = true;
}
}
else if (type == "metricPrinterOffset")
{
var maxclip = 50.0;
var minclip = -50.0;
var val = field.value;
val = val.replace(/,/g,"");
numval = parseFloat(val);
if (isNaN(numval) || numval >= maxclip || numval <= minclip)
{
if (doalert)
{
if (numval >= maxclip)
alert("Invalid number (must be lower than " + maxclip + ").");
else if (numval <= minclip)
alert("Invalid number (must be greater than " + minclip + ").");
else
alert("Illegal number: " + numval);
}
validflag = false;
}
else
{
validflag = true;
}
}
else if (type == "phone" || type == "fullphone")
{
var val = field.value;
if(val.length!=0 && val.length<7)
{
if (doalert) alert("Phone number should have seven digits or more.");
validflag = false;
}
if (validflag && type == "fullphone")
{
if(val.length!=0 && val.length<10)
{
if (doalert) alert("Please include the area code for phone number: " + val);
validflag = false;
}
}
if (autoplace && validflag)
{
var re = /^[0-9]+$/;
if (re.test(val))
{
if (val.length == 7)
field.value=val.substring(0,3)+"-"+val.substring(3);
else if (val.length == 10)
field.value = "("+val.substring(0,3)+") "+val.substring(3,6)+"-"+val.substring(6);
}
}
}
else if (type == "color")
{
var val = field.value;
if (val.substring(0,1) == "#")
val = val.substring(1);
var re = /^[0-9ABCDEFabcdef]{6,}$/;
if (val.length > 6 || !re.test(val))
{
if (doalert) alert("Color value must be 6 hexadecimal digits of the form: #RRGGBB. Example: #FF0000 for red.");
validflag = false;
}
else
field.value = "#"+val;
}
else if (type == "identifier")
{
var val = field.value;
var re = /^[0-9A-Za-z_]+$/;
if (!re.test(val))
{
if (doalert) alert("Identifiers can contain only digits, alphabetic characters, or \"_\" with no spaces");
validflag = false;
}
else
field.value = val.toLowerCase();
}
if (mandatory == true)
{
if (field.value.length == 0)
{
if (doalert) alert("Field must contain a value.");
validflag = false;
}
}
if (!validflag)
{
field.focus();
field.select();
}
window.isvalid = validflag;
return validflag;
}
function setSelectionRange(input, selectionStart, selectionEnd) {
if (input.setSelectionRange) {
input.focus();
input.setSelectionRange(selectionStart, selectionEnd);
}
else if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', selectionEnd);
range.moveStart('character', selectionStart);
range.select();
}
}
function nlGetFullYear(d)
{
if (navigator != null && navigator.appName == "Netscape")
{
if (d.getFullYear=="undefined")
return d.getYear();
}
return d.getFullYear();
}
function nlSetFullYear(d,val)
{
if (navigator != null && navigator.appName == "Netscape")
{
if (d.setFullYear=="undefined")
d.setYear(val);
}
d.setFullYear(val);
}
function getdatestring(d)
{
if (window.dateformat == "DD-Mon-YYYY")
{
var m = "JanFebMarAprMayJunJulAugSepOctNovDec";
return d.getDate()+"-"+m.substring(d.getMonth()*3,d.getMonth()*3+3)+"-"+nlGetFullYear(d);
}
else if (window.dateformat == "DD.MM.YYYY")
return d.getDate()+"."+(d.getMonth()+1)+"."+nlGetFullYear(d);
else if (window.dateformat == "DD/MM/YYYY")
return d.getDate()+"/"+(d.getMonth()+1)+"/"+nlGetFullYear(d);
else
return (d.getMonth()+1)+"/"+d.getDate()+"/"+nlGetFullYear(d);
}
function getdefaultformatdatestring(d)
{
return (d.getMonth()+1)+"/"+d.getDate()+"/"+nlGetFullYear(d);
}
function gettimestring(time)
{
var hours = time.getHours();
var minutes = time.getMinutes();
var ampm = hours < 12 ? 'am' : 'pm';
return timestr = (hours%12 < 1 ? 12 : hours%12) + ':' + (minutes < 10 ? '0'+minutes.toString() : minutes) + ' ' + ampm;
}
function getdatetimestring(date)
{
return getdatestring(date) + " " + gettimestring(date);
}
function getmmyydatestring(d)
{
return ((d.getMonth()+1) < 10 ? "0" : "") + (d.getMonth()+1) + "/" + nlGetFullYear(d);
}
function stringtodate(arg, dateformat)
{
var comps;
var month, day, year;
var datetime = arg.split(" ");
var d = datetime[0];
if (d.indexOf("/") != -1)
{
comps = d.split("/");
if ( dateformat == null )
dateformat = window.dateformat;
if (comps.length == 2)
{
month = parseInt(comps[0],10)-1;
day = 1;
year = parseInt(comps[1],10);
}
else if (dateformat == "DD/MM/YYYY")
{
day = parseInt(comps[0],10);
month = parseInt(comps[1],10)-1;
year = parseInt(comps[2],10);
}
else
{
month = parseInt(comps[0],10)-1;
day = parseInt(comps[1],10);
year = parseInt(comps[2],10);
}
}
else if (d.indexOf(".") != -1)
{
comps = d.split(".");
if (comps.length == 2)
{
day = 1;
month = parseInt(comps[0],10);
year = parseInt(comps[1],10)-1;
}
else
{
day = parseInt(comps[0],10);
month = parseInt(comps[1],10)-1;
year = parseInt(comps[2],10);
}
}
else if (d.indexOf("-") != -1)
{
comps = d.split("-");
var ms = "JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC";
if (comps.length == 2)
{
day = 1;
month = parseInt(comps[0],10);
year = ms.indexOf(comps[1].toUpperCase())/3;
}
else
{
day = parseInt(comps[0],10);
month = ms.indexOf(comps[1].toUpperCase())/3;
year = parseInt(comps[2],10);
}
}
var result;
var t = datetime[1];
if (t != null)
{
comps = t.split(":");
var hour = parseInt(comps[0],10);
var min = parseInt(comps[1],10);
var sec = (comps[2] != null ? parseInt(comps[2],10) : 0);
if (datetime[2].toLowerCase() == "pm")
hour += 12;
result = new Date(year,month,day,hour,min,sec);
}
else
result = new Date(year,month,day);
if (year < 50)
nlSetFullYear(r, year+2000);
else if (year < 100)
nlSetFullYear(r, year+1900);
return result;
}
function stringtotime(date, time)
{
var flddate = date != null ? stringtodate( date ) : new Date();
var re = /([0-9][0-9]?):([0-5][0-9])\s?([AaPp])?[Mm]?/;
var result = re.exec( time );
var hours = parseInt(RegExp.$1);
var minutes = parseInt(RegExp.$2);
var ampm = (RegExp.$3.length == 0 || RegExp.$3.toUpperCase() == 'A') ? 'am' : 'pm';
hours = (ampm == 'pm') ? (hours%12)+12 : hours%12;
flddate.setHours(hours,minutes);
return flddate;
}
function adddays(d, daystoadd)
{
var d2 = new Date(d.getTime() + 86400 * daystoadd * 1000);
if (d2.getHours() != d.getHours())
{
if ((d.getHours() > 0 && d2.getHours() < d.getHours()) || (d.getHours() == 0 && d2.getHours() == 23))
d2.setTime(d2.getTime() + 3600*1000);
else
d2.setTime(d2.getTime() - 3600*1000);
}
d.setTime(d2.getTime());
return d;
}
function addmonths(d, mtoadd)
{
var curmonth = d.getMonth()+mtoadd;
while (curmonth < 0)
{
curmonth += 12;
nlSetFullYear(d, nlGetFullYear(d)-1);
}
while (curmonth > 11)
{
curmonth -= 12;
nlSetFullYear(d,nlGetFullYear(d)+1);
}
d.setMonth(curmonth);
return d;
}
function createTDWindow(dest)
{
var wide = screen.width*(0.35);
var high = screen.height*(0.3);
if(wide<150 || high<150)
{
wide = 150;
high = 150;
}
var leftpos = screen.width-(wide+20);
var toppos = screen.height-(high+60);
window.open(dest,'test','scrollbars=yes,width='+wide+',height='+high+',left='+leftpos+',top='+toppos);
}
function DoFieldFocus(form)
{
if (form == null)
return;
var i;
for (i=0;i< form.elements.length;i++)
{
var el = form.elements[i];
if (el.type == "text" || el.type == "select-one" || el.type == "checkbox")
{
el.focus();
return;
}
}
}
function clearMultiSelect(sel)
{
if ( isNLMultiDropDown(sel) )
getMultiDropdown(sel.name).removeAll();
else if (sel.type == "select-multiple")
{
for ( i=sel.length-1; i >=0 ; i-- )
sel.options[i].selected = false;
}
else
{
sel.value='';
sel.form.elements[sel.name+'_display'].value='';
}
}
function getnamevaluelisttext(val,delim,alllabels)
{
if (val.length == 0)
return "";
var nvarray = val.split(String.fromCharCode(4));
var result = "";
for (i=0; i < nvarray.length; i++)
{
var nv = nvarray[i].split(String.fromCharCode(3));
var dv = nv.length==5?nv[4]:nv[3];
if (dv.length > 0 || alllabels == true)
{
if (!isValEmpty(result)) result += delim;
result += nv[2]+": "+dv;
}
}
return result;
}
function getnamevaluelistdata(val)
{
if (val.length == 0)
return "";
var nvarray = val.split(String.fromCharCode(4));
var result = "";
for (i=0; i < nvarray.length; i++)
{
if (i>0)
result += String.fromCharCode(4);
var nv = nvarray[i].split(String.fromCharCode(3));
var v = nv.length>3?nv[3]:"";
result += nv[0]+String.fromCharCode(3)+v;
}
return result;
}
function getnamevaluelistvalue(nvlist,name)
{
if (nvlist.length == 0)
return null;
var nvarray = nvlist.split(String.fromCharCode(4));
for (i=0; i < nvarray.length; i++)
{
var nv = nvarray[i].split(String.fromCharCode(3));
if (nv[0].toLowerCase() == name.toLowerCase())
return nv[3];
}
return null;
}
function getnamevaluelistdisplayvalue(nvlist,name)
{
if (nvlist.length == 0)
return null;
var nvarray = nvlist.split(String.fromCharCode(4));
for (i=0; i < nvarray.length; i++)
{
var nv = nvarray[i].split(String.fromCharCode(3));
if (nv[0].toLowerCase() == name.toLowerCase())
return nv.length==5?nv[4]:nv[3];
}
return null;
}
function setnamevaluelistvalue(nvlist,name,value)
{
if (nvlist.length == 0)
return "";
var nvarray = nvlist.split(String.fromCharCode(4));
for (i=0; i < nvarray.length; i++)
{
var nv = nvarray[i].split(String.fromCharCode(3));
if (nv[0].toLowerCase() == name.toLowerCase())
{
nv[3] = value;
nvarray[i] = nv.join(String.fromCharCode(3));
break;
}
}
return nvarray.join(String.fromCharCode(4));
}
function syncnamevaluelist(list)
{
var fldDisp = list.form.elements[list.name+"_display"];
fldDisp.value = getnamevaluelisttext(list.value,"\n", true);
if(fldDisp.onchange)
{
fldDisp.onchange();
}
}
function synclist(list,val,makedefault)
{
if (list.className == 'nldropdown')
{
var dd = getDropdown(list);
if(dd != null)
{
var idx = dd.getIndexForValue(val);
dd.setIndex(idx, true );
if (makedefault)
dd.setDefaultIndex(idx);
}
}
else if (list.type == 'select-one')
{
for (var i=0; i < list.length; i++)
{
if (list.options[i].value == val)
{
list.selectedIndex=i
if (makedefault)
list.options[i].defaultSelected = true;
break;
}
}
}
else
list.value = val;
}
function syncpopup(list,val,name)
{
var i;
if (list.className == 'nldropdown')
{
var dd = getDropdown(list);
var idx = dd.getIndexForValue(val);
dd.setIndex(idx, true );
}
else if (isNLMultiDropDown(list))
{
var dd = getMultiDropdown(list.name);
dd.setValues(val);
}
else if (list.type == "select-one" || list.type == "select-multiple")
{
for (i=0; i < list.length; i++)
if (list.options[i].value == val)
{
list.selectedIndex=i
break;
}
}
else
{
list.value = val;
var dispfld = list.form.elements[list.name+"_display"];
if (val.length > 0 || (name != null && name.length > 0))
dispfld.value = name;
else
dispfld.value = dispfld.type == 'text' ? _popup_help : _mult_popup_help;
}
}
function syncmultiselectlist(list,val)
{
clearMultiSelect(list);
if (isNLMultiDropDown(list))
{
if ( typeof val != "string" )
val = val.join( String.fromCharCode(5) );
var dd = getMultiDropdown(list.name);
dd.setValues(val);
}
else if (list.type != "select-multiple")
{
list.form.elements[list.name].value = val;
}
else
{
if ( typeof val == "string" )
val = val.split( String.fromCharCode(5) );
for ( var i=0; i < val.length; i++)
{
for ( var j=0; j < list.length; j++)
{
if (list.options[j].value == val[i])
list.options[j].selected = true;
}
}
}
}
function syncradio(radio,val,makedefault)
{
var i;
for (i=0; i < radio.length; i++)
{
if (radio[i].value == val)
{
radio[i].checked=true;
if (makedefault)
radio[i].defaultChecked = true;
break;
}
}
}
function getlisttext(list, val, frommultisel)
{
if (list.className == 'nldropdown')
return getDropdown(list).getTextForValue(val);
if (list.type != "select-one" && !frommultisel)
return '';
for (var i=0; i < list.length; i++)
if (list.options[i].value == val)
return list.options[i].text;
return "";
}
function getmultiselectlisttext(list, val)
{
if ( isNLMultiDropDown(list) )
{
return getMultiDropdown(list.name).getSelectedTextFromValues(val, '
');
}
else if (list.type != "select-multiple")
{
return '';
}
else
{
var selvals = val.split(String.fromCharCode(5));
var label = '';
for (i=0; i < selvals.length; i++)
{
if (i > 0) label += '
';
label += getlisttext(list, selvals[i], true);
}
return label;
}
}
function getradiotext(radio, val)
{
var i;
for (i=0;i< radio.length;i++)
if (radio[i].value == val)
return radio[i].textValue;
return "";
}
function getRadioValue(radio)
{
var val = '';
for (var i=0; i < radio.length; i++)
{
if (radio[i].checked == true)
{
val = radio[i].value;
break;
}
}
return val;
}
function getFieldSetSpan( fldset )
{
return fldset.document.getElementById( fldset.id + "_slct" );
}
function getFieldSetValue( fldset, mach )
{
var encodedData = new Array();
if ( mach != null )
{
var types = mach.getFieldSetSelectedTypes( fldset );
var fields = mach.getFieldSetSelectedFields( fldset );
var delimData = new Array();
for ( var i = 0; i < fields.length - 1 ; i++ )
{
var inpField = getFormElement(mach.miniform,fields[i]);
var val = '';
if (inpField != null)
{
var spanName = (fields[i].indexOf( '_display' ) == -1 ? fields[i] : fields[i].substring(0,fields[i].indexOf('_display'))) + '_fs';
var inpSpan = document.getElementById( spanName );
if (inpSpan == null || inpSpan.style.display != 'none')
{
if ( types[i] == 'checkbox' )
val = inpField.checked ? 'T' : 'F';
else
val = inpField.value;
}
}
delimData[i] = val;
}
encodedData.push( mach.getFieldSetSelected( fldset ) );
encodedData.push( fields.join(String.fromCharCode( 8) ) );
encodedData.push( types.join(String.fromCharCode( 8 ) ) );
encodedData.push( mach.getFieldSetSelectedLabels( fldset ).join(String.fromCharCode( 8 ) ) );
encodedData.push( delimData.join( String.fromCharCode( 7 ) ) );
}
return encodedData.join( String.fromCharCode(6) );
}
function getFieldSetText( fldset, data, mach, nohtml )
{
var sOutput = "";
if ( nohtml == null )
nohtml = false;
if ( data != null && data.length > 0)
{
var dataFields = data.split(String.fromCharCode(6) );
var slct = dataFields[0];
var fields = dataFields[1].split(String.fromCharCode(8) );
var types = dataFields[2].split(String.fromCharCode(8) );
var labels = dataFields[3].split(String.fromCharCode(8) ) ;
var dataContent = dataFields[4].split(String.fromCharCode(7) );
var inpField = null;
var nCount = 0;
for( var i=0; i < fields.length; i++ )
{
if ( dataContent[i] && dataContent[i].length > 0 && curType != 'checkbox' )
{
nCount ++;
}
}
for (var i = 0; i < fields.length; i++)
{
if ( dataContent[i] && dataContent[i].length > 0)
{
var curType = types[i];
var bCheckBox = curType == 'checkbox';
var bWriteLabel = labels[i].length > 0 && ( (!bCheckBox && nCount>1) || dataContent[i] == 'T');
if ( bWriteLabel )
{
sOutput += labels[i];
if ( !bCheckBox )
sOutput += ": ";
}
if ( !bCheckBox )
{
var dataCell = dataContent[i];
var curName = fields[i];
var curElement = mach.miniform.elements[curName];
var pos = curName.indexOf("_display");
if ( getFieldSetDisplayField(curName, fields) != null )
{
if ( pos != -1 && !isValEmpty(dataCell) )
sOutput += dataCell.replace(/\n/g, nohtml ? ' ' : '
');
}
else if ( curType == "select" || curType == "slaveselect")
{
if ( isMultiSelect( curElement ) )
sOutput += getmultiselectlisttext( curElement ,dataCell );
else
sOutput += getlisttext( curElement, dataCell ) ;
}
else if (curType == "currency")
sOutput += format_currency( parseFloat( dataCell ) );
else if (curType == "radio")
sOutput += getradiotext( curElement, dataCell );
else if (curType == "namevaluelist")
sOutput += getnamevaluelisttext( dataCell , nohtml ? " " : "
" );
else if (curType == "fieldset")
sOutput += getFieldSetText( curName, dataCell, mach );
else
sOutput += dataCell.replace(/\n/g, nohtml ? ' ' : '
');
}
if ( i + 1 != fields.length && bWriteLabel )
sOutput += nohtml ? " " : "
";
}
}
}
return sOutput;
}
function getSelectValue(sel)
{
var returnMe;
if (sel.type != null && sel.type == "select-one")
returnMe = (sel.options.length == 0 || sel.selectedIndex == -1 || sel.selectedIndex >= sel.options.length) ? '' : sel.options[sel.selectedIndex].value;
else if (sel.className == 'nldropdown')
returnMe = getDropdown(sel).getValue();
else if (isNLMultiDropDown(sel))
returnMe = getMultiDropdown(sel.name).getSelectedValues();
else
returnMe = sel.value;
return returnMe;
}
function getSelectValueArray(sel)
{
var returnMe;
if (sel.type == "select-one" || sel.type == "select-multiple")
{
returnMe = new Array(sel.length);
for ( var i = 0; i < sel.length; i++ )
returnMe[i] = sel.options[i].value;
}
else if (sel.className == 'nldropdown')
returnMe = getDropdown(sel).valueArray;
else if (isNLMultiDropDown(sel))
returnMe = getMultiDropdown(sel.name).valueArray;
return returnMe;
}
function getSelectTextForValue( sel, val )
{
var textArray = getSelectValueArray(sel);
var i;
for (i = 0; i < textArray.length; i++)
{
if (textArray[i] == val)
return getSelectTextAtIndex(sel, i);
}
return null;
}
function getSelectTextArray(sel)
{
var returnMe;
if (sel.type == "select-one" || sel.type == "select-multiple")
{
returnMe = new Array(sel.length);
for ( var i = 0; i < sel.length; i++ )
returnMe[i] = sel.options[i].text;
}
else if (sel.className == 'nldropdown')
returnMe = getDropdown(sel).textArray;
else if (isNLMultiDropDown(sel))
returnMe = getMultiDropdown(sel.name).textArray;
return returnMe;
}
function getSelectText(sel)
{
if (sel.type == "select-one")
return (sel.options.length == 0 || sel.selectedIndex == -1 || sel.selectedIndex >= sel.options.length) ? null : sel.options[sel.selectedIndex].text;
else if (sel.className == 'nldropdown')
return getDropdown(sel).getText();
else if ( isMultiSelect(sel) )
return getMultiSelectText( sel );
else if (sel.type == "hidden" && sel.form != null && getFormElement(sel.form,sel.name+'_display') != null)
return getFormElement(sel.form,sel.name+'_display').value;
else
return sel.text;
}
function setSelectValue(sel, val)
{
if (sel.className == 'nldropdown')
{
var dd = getDropdown(sel);
var idx = dd.getIndexForValue(val);
if (idx == null)
return false;
dd.setIndex(idx, true );
}
else if (isNLMultiDropDown(sel))
{
var dd = getMultiDropdown(sel.name);
var idx = dd.getIndexForValue(val);
if (idx == null)
return false;
dd.setIndex(idx);
}
else if (sel.type == "select-one")
{
var opt = sel.options;
for (var i=0; i < opt.length; i++)
{
if (opt[i].value==val)
{
sel.selectedIndex=i;
return true;
}
}
return false;
}
else if (sel.type == "select-multiple")
{
var opts = sel.options;
var result = false;
for (var i=0; i < opts.length; i++)
{
opts[i].selected = opts[i].value == val;
result = result || opts[i].value == val;
}
return result;
}
else
sel.value = val;
return true;
}
function addMultiSelectValue(sel, val, name)
{
if (isNLMultiDropDown(sel))
{
var dd = getMultiDropdown(sel.name);
var idx = dd.getIndexForValue(val);
dd.addIndex(idx);
}
else if (sel.type == "select-multiple")
{
var opts = sel.options;
for (var i=0; i < opts.length; i++)
if ( opts[i].value == val )
opts[i].selected = true;
}
else
{
var values = sel.value.split(String.fromCharCode(5));
for (var i=0;i idx))
return sel.options[idx].value;
else
return null;
}
else if (sel.className == 'nldropdown')
{
return getDropdown(sel).getValueAtIndex(idx);
}
else if (isNLMultiDropDown(sel))
{
return getMultiDropdown(sel.name).getValue(idx);
}
}
}
function getSelectTextAtIndex(sel, idx)
{
if ( sel != null )
{
if (sel.type == "select-one" || sel.type == "select-multiple")
{
if ((sel.options != null) && (sel.options.length > idx))
return sel.options[idx].text;
else
return null;
}
else if (sel.className == 'nldropdown')
{
return getDropdown(sel).getTextAtIndex(idx);
}
else if (isNLMultiDropDown(sel))
{
return getMultiDropdown(sel.name).getText(idx);
}
}
}
function setRequired(fld,required)
{
if ( fld.className == 'nldropdown' )
getDropdown(fld).setRequired(required);
else if ( isNLMultiDropDown( fld ) )
getMultiDropdown(fld).setRequired(required);
else if ( getHtmlEditor( fld.name ) != null )
getHtmlEditor( fld.name ).setMandatory( required );
else
fld.className='input' + (required ? 'req' : '');
}
function getRequired(fld)
{
if ( fld.className == 'nldropdown' )
return getDropdown(fld).getRequired( );
else if ( isNLMultiDropDown( fld ) )
return getMultiDropdown(fld).getRequired( );
else if ( getHtmlEditor( fld.name ) )
return getHtmlEditor( fld.name ).getMandatory( );
else
return fld.className == 'inputreq';
}
function disableField(fld, val)
{
if (fld == null)
return;
if (fld.className == 'nldropdown' || isNLMultiDropDown(fld) || fld.form.elements[fld.name+"_display"] != null)
disableSelect(fld, val);
else if ( getHtmlEditor( fld.name ) != null )
getHtmlEditor( fld.name ).setDisabled( val );
else
{
fld.disabled = val;
var docObj = (fld.document) ? fld.document : document;
var datelink = docObj.getElementById(fld.name+"_helper_calendar");
if(datelink != null)
datelink.style.visibility = val ? "hidden" : "inherit";
}
}
function setOptionsFromMachineField( machine_name, field_name, selectObject, alternate_label, test_field, test_value )
{
deleteAllSelectOptions( selectObject, window );
var doc = window.document;
var mch = eval( machine_name + '_machine');
addSelectOption( doc, selectObject, "", "", true, window );
var bNewOptions = false;
for ( var i = 1; i <= getLineCount(machine_name); i++)
{
if (mch.getMachineIndex() == i || ( test_field != null && getEncodedValue( machine_name, i, test_field) != test_value ) )
continue;
bNewOptions = true;
addSelectOption( doc, selectObject, getEncodedValue( machine_name,i, alternate_label != null ? alternate_label :field_name + '_display'), getEncodedValue( machine_name,i,field_name ), false, window);
}
return bNewOptions;
}
window.linearrayArray = new Array();
function getLineArray(machine_name)
{
if( window.linearrayArray[machine_name] == null )
{
window.linearrayArray[machine_name] = splitIntoRows( document.forms[0].elements[machine_name+'data'].value );
}
return window.linearrayArray[machine_name];
}
window.fieldnamesArray = new Array();
function getFieldNamesArray(machine_name)
{
if( window.fieldnamesArray[machine_name] == null )
{
window.fieldnamesArray[machine_name] = splitIntoCells( document.forms[0].elements[machine_name+'fields'].value );
}
return window.fieldnamesArray[machine_name];
}
function getLineCount(machine_name)
{
return getLineArray(machine_name) != null ? getLineArray(machine_name).length : 0;
}
function getEncodedFieldPosition(machine_name, fieldname)
{
var fieldnames = getFieldNamesArray(machine_name);
for (var i=0; i < fieldnames.length; i++)
if (fieldnames[i] == fieldname)
return i;
return -1;
}
function hasEncodedField(machine_name, fieldname)
{
if (getEncodedFieldPosition(machine_name, fieldname) < 0)
return false;
return true;
}
function getEncodedValue(machine_name, linenum, fieldname)
{
var linearray = getLineArray(machine_name);
if( linearray[linenum - 1] == null )
return null;
var linedata = splitIntoCells( linearray[linenum-1] );
var fieldnames = getFieldNamesArray(machine_name);
for (var i=0; i < fieldnames.length; i++)
if (fieldnames[i] == fieldname)
return linedata[i];
return '';
}
function findEncodedValue(machine_name, fieldname, value)
{
var linearray = getLineArray(machine_name);
var i;
var fieldnames = getFieldNamesArray(machine_name);
for (i=0; i < fieldnames.length; i++)
if (fieldnames[i] == fieldname)
break;
if (i == fieldnames.length)
return -1;
for (linenum=0;linenum 0 ? url.substr(endIndex) : "");
}
return url;
}
function previewMedia(mediaid, href, document)
{
if (href)
mediaid = mediaid.substr(mediaid.lastIndexOf('/')+1);
var url = '/core/media/previewmedia.nl?id='+mediaid;
preview(url, 'prevmedia');
}
function siteMedia(mediaid, href, document)
{
if (href)
mediaid = mediaid.substr(mediaid.lastIndexOf('/')+1);
var url = '/app/site/media/sitemedia.nl?id='+mediaid;
preview(url, 'sitemedia');
}
function preview(url, winname)
{
var prms = 'location=no,width=600,height=500,menubar=yes,scrollbars=yes,resizable=yes';
var win = window.open(url, winname, prms);
win.focus();
}
function getCookieVal (offset)
{
var endstr = document.cookie.indexOf (';', offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name)
{
var arg = name + '=';
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(' ', i) + 1;
if (i == 0) break;
}
return null;
}
function getStickyTag(tagName)
{
var cbody = GetCookie('stickytags');
if (cbody != null)
{
var b=cbody.indexOf(tagName+':');
if (b>=0)
{
var e=cbody.indexOf(',',b);
if (e<0)
e=cbody.length;
return unescape(cbody.substring(b+tagName.length+1, e));
}
}
return null;
}
function getLmtPage(url, cookieName)
{
return url + (url.indexOf('?') >= 0 ? '&t=' : '?t=') + getStickyTag(cookieName);
}
function gotoLmtPage(url,cookieName,framed)
{
var newUrl = getLmtPage(url, cookieName);
try {
if (typeof(framed) == "number")
parent.frames[framed].document.location = newUrl;
else if (framed)
parent.document.location = newUrl;
else
document.location = newUrl;
} catch (e) { }
}
var SelectKeyPressMaxKeyPause = 2000;
function SelectKeyPressHandler (sorted)
{
keyString = String.fromCharCode (window.event.keyCode).toUpperCase();
if (!(keyString >= " " && keyString <= "_"))
{
SelectKeyPressTypedString = "";
return true;
}
if (SelectKeyPressTimeoutID != null)
window.clearTimeout (SelectKeyPressTimeoutID);
SelectKeyPressTimeoutID = window.setTimeout ("SelectKeyPressTimeout()",
SelectKeyPressMaxKeyPause);
SelectKeyPressTypedString += keyString;
if (sorted)
{
if (SelectKeyPressTypedString.length == 1)
option = SelectKeyPressLookupFirst (SelectKeyPressTypedString);
else
option = SelectKeyPressLookupNext (SelectKeyPressTypedString);
}
else
option = SelectKeyPressLookupLinear (SelectKeyPressTypedString);
window.event.returnValue = false;
if (option != -1)
{
window.event.srcElement.selectedIndex = option;
window.event.srcElement.onchange();
}
return false;
}
var SelectKeyPressTypedString = "";
SelectKeyPressTimeoutID = null;
function SelectKeyPressTimeout ()
{
SelectKeyPressTypedString = "";
SelectKeyPressTimeoutID = null;
}
function SelectKeyPressLookupFirst (str)
{
select = window.event.srcElement;
options = select.options;
low = 0;
high = options.length;
while (high - low > 1)
{
i = Math.floor ((high + low) / 2);
if (str.charAt(0) <= options(i).text.charAt(0).toUpperCase())
high = i;
else
low = i;
}
while (high > 0 &&
str.charAt(0) == options(high - 1).text.charAt(0).toUpperCase())
--high;
if (high < options.length &&
str.charAt(0) == options(high).text.charAt(0).toUpperCase())
return high;
else
return -1;
}
function SelectKeyPressLookupNext (str)
{
select = window.event.srcElement;
options = select.options;
selIndex = select.selectedIndex;
while (selIndex < options.length - 1 &&
options(selIndex).text.toUpperCase() < str)
++selIndex;
if (selIndex < options.length - 1 &&
options(selIndex).text.substr(0, str.length).toUpperCase() == str)
return selIndex;
else
return -1;
}
function SelectKeyPressLookupLinear (str)
{
select = window.event.srcElement;
options = select.options;
for (i = 0; i < options.length; ++i)
if (options(i).text.substr(0, str.length).toUpperCase() == str)
return i;
return -1;
}
function disableFilter(radio, disableVal, fld1,fld2)
{
if (getRadioValue(radio) == disableVal)
{
fld1.disabled = true;
if (fld2)
fld2.disabled = true;
}
else
{
fld1.disabled = false;
if (fld2)
fld2.disabled = false;
}
}
function NLDate_parseString(sDate, bDoAlert)
{
var m=0;
var d=0;
var y=0;
var val = sDate;
var fmterr;
var year="";
var rtnDate = null;
if(!window.dateformat)
window.dateformat = "MM/DD/YYYY";
if(window.dateformat == "MM/DD/YYYY")
{
if (val.indexOf("/") != -1)
{
var c = val.split("/");
if(onlydigits(c[0])) m = parseInt(c[0],10);
if(onlydigits(c[1])) d = parseInt(c[1],10);
if ( d > 1970 )
{
year = y = d;
d = 1;
}
else
{
if(onlydigits(c[2])) y = parseInt(c[2],10);
year=c[2];
}
}
else
{
var l = val.length, str;
str = val.substr(0,2-l%2); if(onlydigits(str)) m = parseInt(str,10);
str = val.substr(2-l%2,2); if(onlydigits(str)) d = parseInt(str,10);
str = val.substr(4-l%2); if(onlydigits(str)) y = parseInt(str,10);
year=str;
}
fmterr = "MM/DD/YY, MM/DD/YYYY, MMDDYY or MMDDYYYY";
}
else if(window.dateformat == "DD/MM/YYYY")
{
if (val.indexOf("/") != -1)
{
var c = val.split("/");
if(onlydigits(c[0])) d = parseInt(c[0],10);
if(onlydigits(c[1])) m = parseInt(c[1],10);
if(onlydigits(c[2])) y = parseInt(c[2],10);
year=c[2];
}
else
{
var l = val.length, str;
str = val.substr(0,2-l%2); if(onlydigits(str)) d = parseInt(str,10);
str = val.substr(2-l%2,2); if(onlydigits(str)) m = parseInt(str,10);
str = val.substr(4-l%2); if(onlydigits(str)) y = parseInt(str,10);
year=str;
}
fmterr = "DD/MM/YY, DD/MM/YYYY, DDMMYY or DDMMYYYY";
}
else if(window.dateformat == "DD.MM.YYYY")
{
if (val.indexOf(".") != -1)
{
var c = val.split(".");
if(onlydigits(c[0])) d = parseInt(c[0],10);
if(onlydigits(c[1])) m = parseInt(c[1],10);
if(onlydigits(c[2])) y = parseInt(c[2],10);
year=c[2];
}
else
{
var l = val.length, str;
str = val.substr(0,2-l%2); if(onlydigits(str)) d = parseInt(str,10);
str = val.substr(2-l%2,2); if(onlydigits(str)) m = parseInt(str,10);
str = val.substr(4-l%2); if(onlydigits(str)) y = parseInt(str,10);
year=parseInt(str,10);
}
fmterr = "DD.MM.YY, DD.MM.YYYY, DDMMYY or DDMMYYYY";
}
else if(window.dateformat == "DD-Mon-YYYY")
{
var ms = "JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC";
if (val.indexOf("-") != -1)
{
var c = val.split("-");
if(onlydigits(c[0])) d = parseInt(c[0],10);
m = (ms.indexOf(c[1].toUpperCase())+3)/3;
if(onlydigits(c[2])) y = parseInt(c[2],10);
year=c[2];
}
else
{
var l = val.length, str;
str = val.substr(0,1+l%2); if(onlydigits(str)) d = parseInt(str,10);
str = val.substr(1+l%2,3); if (ms.indexOf(str.toUpperCase()) >= 0) m = (ms.indexOf(str.toUpperCase())+3)/3;
str = val.substr(4+l%2); if(onlydigits(str)) y = parseInt(str,10);
year=str;
}
fmterr = "DD-Mon-YY, DD-Mon-YYYY, DDMonYY or DDMonYYYY";
}
if(m==0 || d==0)
{
if(bDoAlert)
{
alert("Invalid date value (must be "+fmterr+")");
}
}
else
{
if (y==0 && !onlydigits(year)) y = (new Date()).getFullYear();
if(m<1) m=1; else if(m>12) m=12;
if(d<1) d=1; else if(d>31) d=31;
if(y<100) y+=((y>=70)?1900:2000);
if(y<1000) y*=10;
if (y > 9999) y = (new Date()).getFullYear();
year = y;
rtnDate = new Date(y, m-1, d);
}
return rtnDate;
}
var NLDate_pnDaysInMonths = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
function NLDate_getLastDayOfMonth(dDate)
{
var m = dDate.getMonth();
var days = NLDate_pnDaysInMonths[m];
if(m == 1)
{
var y = dDate.getYear();
if ( (y% 400 == 0) || ((y % 4 == 0) && (y % 100 != 0)) )
days++;
}
return days;
}
function setDateComponents(theDate, monthsToAdd, theDay)
{
var newDate = new Date(theDate);
addmonths(newDate,monthsToAdd);
newDate.setDate(theDay);
return newDate;
}
function setDisabledState(elementid,enable)
{
var childnodes=document.getElementById(elementid).getElementsByTagName('INPUT');
for(var i=0;i","") ) )
result += (result.length ? "," : "") + labels[i];
}
else
{
if ( isempty(fields[i]) )
result += (result.length ? "," : "") + labels[i];
}
}
return result;
}
function nlOpenWindow(url, winname, width, height, fld, scrollbars)
{
return window.open(url, winname, 'scrollbars='+(scrollbars ? 'yes' : 'no')+',width='+width+',height='+height+',resizable=yes');
}
function getObjectLeft(obj)
{
var offset=0;
while (obj != null && obj != document.body)
{
offset += obj.offsetLeft;
obj = obj.offsetParent;
}
return offset + window.screenLeft;
}
function getObjectTop(obj)
{
var offset=0;
while (obj != null && obj != document.body)
{
offset += obj.offsetTop;
obj = obj.offsetParent;
}
return offset + window.screenTop;
}
function setFieldVisibility ( spanId, on )
{
var spanInput = document.getElementById( spanId );
visible ( spanInput, on );
}
function setLabelVisibility ( spanId, on )
{
var spanLabel = document.getElementById( spanId + "_lbl" );
visible( spanLabel, on );
}
function setFieldAndLabelVisibility( spanId, on )
{
setLabelVisibility( spanId, on );
setFieldVisibility( spanId, on );
}
function showField ( spanId, on )
{
var spanInput = document.getElementById( spanId );
display ( spanInput, on );
}
function showLabel ( spanId, on )
{
var spanLabel = document.getElementById( spanId + "_lbl" );
display( spanLabel, on );
}
function setLabel( spanId, label)
{
var spanLabel = document.getElementById( spanId + "_lbl" );
spanLabel.innerHTML = label;
}
function getLabel( spanId )
{
var spanLabel = document.getElementById( spanId + "_lbl" );
return spanLabel.innerHTML;
}
function showFieldAndLabel( spanId, on )
{
showLabel( spanId, on );
showField( spanId, on );
}
function showSpan( spanToShow, spanSet, mach )
{
var children = spanSet.childNodes;
var disp;
for (var i=0; i < children.length; i++)
{
if (children[i].nodeName == 'SPAN')
{
var span = children[i];
if ( span.id == spanToShow )
disp = span;
else if (span.style.display != 'none' )
display( span, false );
}
}
getFieldSetSpan( spanSet ).value = spanToShow;
if ( disp != null )
display( disp, true );
if ( mach != null )
{
var table = document.getElementById(mach.getTableName());
var newRow = table.rows[mach.getMachineIndex() ];
moveButtons( mach.name, newRow );
}
}
function setFormValue(fld,value)
{
if (fld == null)
return;
if (fld.type == 'checkbox')
fld.checked = value == 'T';
else if (fld.type == 'select-one')
synclist(fld,value);
else if (fld.className == 'nldropdown')
getDropdown(fld).setValue(value, true );
else if (isMultiSelect(fld))
syncmultiselectlist(fld, value);
else
fld.value = value;
}
function getFormValue(fld, returnArray)
{
if (fld == null)
return null;
if (fld.type == "checkbox")
return fld.checked ? 'T' : 'F';
else if (fld.type == "radio")
return getRadioValue(fld);
else if (fld.type == "select-one" || fld.className == 'nldropdown')
return getSelectValue(fld);
else if (isMultiSelect(fld))
return getMultiSelectValues(fld, returnArray);
else
return fld.value;
}
function getEditFlag()
{
var bReturnMe = false;
if ( document.forms[0].elements['id'] )
{
if ( !isempty(document.forms[0].elements['id']) && document.forms[0].elements['id'].value != -1 )
bReturnMe = true;
}
return bReturnMe;
}
function getParameter( param )
{
var re = new RegExp(".*[?&]"+param+"=([^&]*)");
var matches = re.exec( document.location.href.toString() ) ;
return matches != null && matches.length > 0 ? matches[1] : null;
}
function getBooleanParameter( param )
{
return getParameter( param ) == "T";
}
function getParameterValuesArray( )
{
var url = document.location.href.toString();
if ( url.indexOf('?') < 0 )
return null;
var pairs = url.substring( url.indexOf('?')+1 ).split("&");
var a = new Array();
for ( var i = 0; i < pairs.length; i++ )
{
var pair = pairs[i].split("=");
a[a.length] = pair[0];
a[a.length] = pair.length > 0 ? pair[1] : null;
}
return a;
}
function getFormElement(frm,fldname)
{
var returnMe = null;
if ( frm != null )
{
if (isIE)
returnMe = frm.elements[fldname];
else
{
for ( var i = 0; i < frm.elements.length; i++ )
if ( frm.elements[i].name == fldname )
returnMe = frm.elements[i];
}
}
return returnMe;
}
var isIE = document.all ? true : false;
var isNS = document.addEventListener ? true : false;
var isNS4x = document.layers ? true : false ;
var NODE_TD = "TD";
var NODE_TR = "TR";
var NODE_TEXT = "#text";
var NODE_TABLE = "TABLE";
function findPosX(obj)
{
var curleft = 0;
if (document.getElementById || document.all)
{
while (obj.offsetParent)
{
curleft += obj.offsetLeft
obj = obj.offsetParent;
}
}
else if (document.layers)
curleft += obj.x;
return curleft;
}
function findPosY(obj)
{
var curtop = 0;
if (document.getElementById || document.all)
{
while (obj.offsetParent)
{
curtop += obj.offsetTop
obj = obj.offsetParent;
}
}
else if (document.layers)
curtop += obj.y;
return curtop;
}
function getTarget(evnt)
{
if (isIE)
{
return event.srcElement;
}
if (isNS)
{
var returnMe = evnt.target;
return returnMe;
}
}
function fireProperOnChange(elem, win)
{
if(elem != null)
{
if(win == null)
win = window;
if(elem.getAttribute('onChangeFunc'))
win.localEval(elem.getAttribute('onChangeFunc').replace(/this/g,'document.forms.'+elem.form.name+'.'+elem.name));
else if(elem.onchange)
elem.onchange();
}
}
function findUp(node, type)
{
while ((node != null) && (node.nodeName != type))
node = node.parentNode;
return node;
}
function getKeypress(evnt)
{
if (isIE)
return event.keyCode;
if (isNS)
return evnt.which;
}
function restoreHtmlEditors( frm )
{
if ( window.htmleditors != null )
{
for ( i in window.htmleditors )
{
var editor = getHtmlEditor(String(i));
if ( frm == null || editor.hddn.form == frm )
editor.setValue( editor.hddn.value, true );
}
}
}
function nlFieldHelp(db,p,f,fld)
{
var url = '/core/help/fieldhelp.nl?fld='+f+'&perm='+p;
if ( window.isOLC )
url = '/offline/pages/core/help/offlinefieldhelp.html?field='+f+'&recordType='+p.toLowerCase();
nlOpenWindow( url ,'fieldhelp',350,150,fld );
return false;
}
function dumpObj(obj)
{
for(var prop in obj)
{
var str = prop + ": " + obj[prop];
document.body.appendChild(document.createTextNode(str));
document.body.appendChild(document.createElement("BR"));
}
if (obj.style)
{
document.body.appendChild(document.createTextNode("STYLE:"));
document.body.appendChild(document.createElement("BR"));
dumpObj(obj.style);
}
}
function NLAlert(msg,ignoreServerSide)
{
alert(msg);
}