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); }