/**
  NextDB.net JavaScript API
  build: 10/31/2009
  docs: http://nextdb.net/docs/  
  contact: info@nextdb.net
  © 2009 NextDB LLC All rights reserved.
  US and international patents pending.
*/
(function(){if(window.net&&window.net.nextdb){return }if(!window.net){window.net={}}if(!window.net.nextdb){window.net.nextdb={}}if(!window.net.nextdb.admin){window.net.nextdb.admin={}}if(!window.net.nextdb.html){window.net.nextdb.html={}}net.nextdb.html.Calendar=function(f,b){var Z=Z;var D=f||new Date();var b=b||{border:"rgb(200, 200, 200)",font:"rgb(8, 8, 8)",background:"rgb(255, 255, 255)",selectedBackground:"rgb(0, 88, 0)",selectedFont:"rgb(255, 255, 255)",mouseoverBackground:"rgb(200, 200, 200)",mouseoverFont:"rgb(0, 0, 0)"};var j=["January","February","March","April","May","June","July","August","September","October","November","December"];var U=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var F=[31,28,31,30,31,30,31,31,30,31,30,31];if(C()){F[1]=29}this.date=function(){return D};var E=new RegExp(/\s/g);this.input=R("input");if(f){this.input.value=net.nextdb.Util.convertToServerDateFormat(f)}this.selectType="BUTTON";this.body=R("div");var O=this.body;var A=this.input;O.style.backgroundColor=b.background;O.style.color=b.font;O.style.position="absolute";O.style.zIndex="100000";O.style.display="none";O.style.width="150px";O.style.border="3px solid "+b.border;O.style.textAlign="center";O.style.padding="4px";O.style.fontFamily="arial";O.style.fontSize="8pt";var H=R("div");H.style.position="relative";H.style.height="24px";var S=R("span");S.style.position="absolute";S.style.left="6px";S.style.color=b.font;S.style.fontFamily="verdana";S.style.fontSize="8pt";S.style.fontWeight="bold";S.style.textAlign="center";S.innerHTML="&lt;&lt;";S.onclick=d;S.id="nextdb:cal-back-arrow";var X=R("span");X.innerHTML="&gt;&gt;";X.style.position="absolute";X.style.fontFamily="verdana";X.style.color=b.font;X.style.fontSize="8pt";X.style.fontWeight="bold";X.style.left="120px";X.style.textAlign="center";X.onclick=N;X.id="nextdb:cal-forward-arrow";var a=R("span");a.style.position="absolute";a.style.left="30px";a.style.minWidth="80px";a.style.fontFamily="arial";a.style.fontWeight="bold";a.style.fontSize="8pt";a.style.color=b.font;a.style.backgroundColor=b.background;a.style.textAlign="center";a.innerHTML=j[D.getMonth()]+" "+D.getFullYear();a.id="nextdb:cal-month-view";H.appendChild(S);H.appendChild(a);H.appendChild(X);O.appendChild(H);var l=R("td");l.style.width="10px";l.style.height="8px";l.style.padding="3px";l.style.fontSize="7pt";l.style.border="1px solid "+b.border;l.style.textAlign="center";l.style.cursor="hand";var m=R("table");var W=R("tBody");var Q=R("tr");for(e=0;e<7;e++){var P=l.cloneNode(false);P.innerHTML=U[e].substr(0,1);Q.appendChild(P)}W.appendChild(Q);O.style.align="center";m.appendChild(W);O.appendChild(m);var k=R("table");L();O.appendChild(k);var V=R("select");V.onchange=B;V.style.color=b.font;V.style.width="40px";V.style.backgroundColor=b.background;V.style.fontSize="8pt";for(var e=0;e<24;e++){var Y=R("option");Y.style.backgroundColor=b.background;if((e==D.getHours())){Y.selected="true"}Y.value=e;if(e==0){Y.text="12 AM"}else{if(e<12){Y.text=e+" AM"}else{if(e==12){Y.text="12 PM"}else{Y.text=Math.abs(12-e)+" PM"}}}if(document.all){V.add(Y,e)}else{V.appendChild(Y)}}O.appendChild(V);var g=R("select");g.onchange=G;g.style.color=b.font;g.style.width="40px";g.style.backgroundColor=b.background;g.style.fontFamily="arial";g.style.fontSize="8pt";for(var e=0;e<60;e++){var Y=R("option");if((e==D.getMinutes())){Y.selected="true"}Y.value=e<10?"0"+e:e;Y.text=Y.value;Y.style.backgroundColor=b.background;if(document.all){g.add(Y,e)}else{g.appendChild(Y)}}O.appendChild(g);var J=R("input");J.type="button";J.onclick=M;J.value="set";J.style.fontFamily="arial";J.style.fontSize="8pt";O.appendChild(J);function L(){if(T("nextdb:cal-table")){k.removeChild(T("nextdb:cal-table"))}var w=R("tBody");w.id="nextdb:cal-table";var u=R("tr");w.appendChild(u);var r=new Date(D.getFullYear(),D.getMonth());r.setDate(1);var o=r.getDay();var n=1;for(var s=0;s<7;s++){var v=l.cloneNode(false);if(s<o){v.innerHTML="&nbsp;"}else{if(D.getDate()==n){v.innerHTML=n;v.style.backgroundColor=b.selectedBackground;v.style.color=b.selectedFont}else{v.innerHTML=n}v.onmouseover=c;v.onmouseout=I;v.onclick=h;n++}u.appendChild(v)}var u=R("tr");w.appendChild(u);var q=0;var t=F[D.getMonth()]-n;for(var s=0;s<=t;s++){var v=l.cloneNode(false);if(D.getDate()==n){v.innerHTML=n;v.style.backgroundColor=b.selectedBackground;v.style.color=b.selectedFont}else{v.innerHTML=n}v.onmouseover=c;v.onmouseout=I;v.onclick=h;u.appendChild(v);n++;q++;if(q==7){q=0;u=R("tr");w.appendChild(u)}}k.appendChild(w)}function c(i){if(document.all){var n=window.event.srcElement}else{var n=i.target}if(n.style.backgroundColor.replace(E,"")!=b.selectedBackground.replace(E,"")){n.style.backgroundColor=b.mouseoverBackground;n.style.color=b.mouseoverFont}}function I(i){if(document.all){var n=window.event.srcElement}else{var n=i.target}if(n.style.backgroundColor.replace(E,"")!=b.selectedBackground.replace(E,"")){n.style.backgroundColor=b.background;n.style.color=b.font}}function h(q){if(document.all){var r=window.event.srcElement}else{var r=q.target}var o=T("nextdb:cal-table").getElementsByTagName("td");for(var n=0;n<o.length;n++){o[n].style.backgroundColor=b.background;o[n].style.color=b.font}D.setDate(r.innerHTML);M();r.style.backgroundColor=b.selectedBackground;r.style.color=b.selectedFont}function K(){D.setYear(yearSelect[yearSelect.selectedIndex].value);if(C()){F[1]=29}L()}function d(){D.setMonth(D.getMonth()-1);L();T("nextdb:cal-month-view").innerHTML=j[D.getMonth()]+" "+D.getFullYear()}function N(){D.setMonth(D.getMonth()+1);L();T("nextdb:cal-month-view").innerHTML=j[D.getMonth()]+" "+D.getFullYear()}function B(){D.setHours(V[V.selectedIndex].value)}function G(){D.setMinutes(g[g.selectedIndex].value)}function M(){O.style.display="none";var i=net.nextdb.Util.convertToServerDateFormat(D);A.value=i;if(A.callback){A.callback(i)}}function C(){if((D.getFullYear()%4)==0){if((D.getFullYear()%100==0)&&(D.getFullYear()%400)!=0){return false}else{return true}}else{return false}}function T(i){return document.getElementById(i)}function R(i){if(document.all){var n=document.createElement("<"+i+">")}else{var n=document.createElement(i)}return n}};net.nextdb.html.Calendar.prototype.getElement=function(){this.input.type="text";var A=this;this.input.onfocus=function(){A.input.parentNode.appendChild(A.body);A.body.style.display="block"};return this.input};net.nextdb.html.Calendar.prototype.setCallback=function(A){this.input.callback=A};net.nextdb.html.Calendar.prototype.setSelectType=function(A){if(!A||A!="BUTTON"||A!="DAYCLICK"){alert("invalid value in setting Calendar.setSelectType() \n\n entered : "+A);return }this.selectType=A};net.nextdb.Column=function(C,D,E,B,F,A){if(D!="TEXT"&&D!="LONGTEXT"&&D!="DATE"&&D!="INTEGER"&&D!="LONGINTEGER"&&D!="PASSWORD"&&D!="DECIMAL"&&D!="BINARY"&&D!="LONGBINARY"){alert("invalid xdb.Column typeuse TEXT, LONGTEXT, INTEGER, LONGINTEGER, DECIMAL, BINARY, LONGBINARY");return }this.name=C;this.type=D;this.unique=E;this.defaultValue=B;this.nullable=F;this.owner=A};net.nextdb.Column.prototype.toString=function(){return this.name};net.nextdb.Connection=function(A,C){if(arguments.length>=2){this.companyName=A;this.schema=C}else{if(arguments.length==1){try{this.companyName=A.companyName;this.schema=A.databaseName}catch(B){alert("bad connection parameters")}}}};net.nextdb.Connection.prototype.setURL=function(A){net.nextdb.CONSTANTS.url=A};net.nextdb.Connection.prototype.setTimeout=function(A){net.nextdb.CONSTANTS.requestTimeout=A};net.nextdb.Connection.prototype.getURL=function(A,C){var B=net.nextdb.CONSTANTS.url+"/"+this.companyName+"/"+this.schema+"/"+A+"?"+C;return B};net.nextdb.Connection.prototype.createRelationship=function(C,A,E,D){var B=this.getURL("RELATE_ROWS",net.nextdb.CONSTANTS.generalCallback);B+="&relationshipName="+C;B+="&pk1="+net.nextdb.Util.escape(A);B+="&pk2="+net.nextdb.Util.escape(E);net.nextdb.Request.send(B,D,true)};net.nextdb.Connection.prototype.removeRelationship=function(C,A,E,D){var B=this.getURL("REMOVE_RELATIONSHIP",net.nextdb.CONSTANTS.generalCallback);B+="&relationshipName="+C;B+="&pk1="+net.nextdb.Util.escape(A);B+="&pk2="+net.nextdb.Util.escape(E);net.nextdb.Request.send(B,D,true)};net.nextdb.Connection.prototype.getUploadURL=function(C,A){var B=net.nextdb.CONSTANTS.uploadUrl+"/"+this.companyName+"/"+this.schema+"/post?table="+A+"&uploadID="+C;return B};net.nextdb.Connection.prototype.describeTable=function(A,C){var B=this.getURL("DESCRIBE_TABLE",net.nextdb.CONSTANTS.describeTablesCallback);if(!A){alert("net.nextdb.Connection.prototype.describeTable\n\nplease supply table name")}B+="&name="+A;net.nextdb.Request.send(B,C)};net.nextdb.Connection.prototype.describeQuery=function(B,C){if(!B){alert("net.nextdb.Connection.prototype.describeQueries\n\nplease supply query name");return }var A=this.getURL("DESCRIBE_QUERY",net.nextdb.CONSTANTS.describeQueryCallback);A+="&name="+B;net.nextdb.Request.send(A,C)};net.nextdb.Connection.prototype.uploadProgress=function(B,C){var A=this.getURL("PROGRESS",net.nextdb.CONSTANTS.uploadProgressCallback);A+="&uploadID="+B;net.nextdb.Request.send(A,C)};net.nextdb.Connection.prototype.executeQuery=function(C,E){var A="EXECUTE_QUERY";if(C.admin){A="ADMIN_QUERY"}var B=this.getURL(A,net.nextdb.CONSTANTS.queryCallback);if(C.admin){B+="&table="+C.name}else{B+="&name="+C.name}if(C.pageSize!=null){B+="&pageSize="+C.pageSize}if(C.startAfter!=null){B+="&startAfterPK="+net.nextdb.Util.escape(C.startAfter)}if(C.startAfterValue!=null){B+="&startAfterValue="+net.nextdb.Util.escape((C.startAfterValue))}if(C.orderBy!=null){B+="&orderBy="+C.orderBy}if(C.map){for(var D in C.map){if(C.map.hasOwnProperty(D)){B+=("&"+net.nextdb.Util.escape("${"+D+"}")+"="+net.nextdb.Util.escape(C.map[D])+"")}}}net.nextdb.Request.send(B,E)};net.nextdb.Connection.prototype.executeInsert=function(B,D){var A=this.getURL("INSERT",net.nextdb.CONSTANTS.insertCallback);A+="&_table="+B.table;for(var C in B.map){if(B.map.hasOwnProperty(C)){A+=("&"+C+"="+net.nextdb.Util.escape((B.map[C])))}}if(B.relationshipName&&B.rowId){A+="&_relationshipName="+B.relationshipName;A+="&_FK="+net.nextdb.Util.escape(B.rowId)}if(B.permalinkHandler){net.nextdb.Request.send(A,D,true,B.permalinkHandler)}else{net.nextdb.Request.send(A,D,true)}};net.nextdb.Connection.prototype.executeUpdate=function(D,C){var A=this.getURL("UPDATE",net.nextdb.CONSTANTS.updateCallback);A+="&_table="+D.table;A+="&_PK="+net.nextdb.Util.escape(D.rowId);if(D.map){for(var B in D.map){if(D.map.hasOwnProperty(B)){A+=("&"+B+"="+net.nextdb.Util.escape(D.map[B]))}}}net.nextdb.Request.send(A,C,true)};net.nextdb.Connection.prototype.describeQueries=function(B){var A=this.getURL("DESCRIBE_QUERY",net.nextdb.CONSTANTS.describeQueriesCallback);net.nextdb.Request.send(A,B)};net.nextdb.Connection.prototype.executeDelete=function(A,C){var B=this.getURL("DELETE",net.nextdb.CONSTANTS.generalCallback);B+="&table="+A.tableName;B+="&PK="+net.nextdb.Util.escape(A.rowId);net.nextdb.Request.send(B,C)};net.nextdb.Connection.prototype.executeGenericRequest=function(A,C,E){var B=this.getURL(A,net.nextdb.CONSTANTS.generalDataCallback);if(C){for(var D in C){if(C.hasOwnProperty(D)){B+=("&"+D+"="+net.nextdb.Util.escape(C[D]))}}}net.nextdb.Request.send(B,E)};net.nextdb.CONSTANTS={};net.nextdb.CONSTANTS.logging=1;net.nextdb.CONSTANTS.requestTimeout=90;net.nextdb.CONSTANTS.url="http://www.nextdb.net/nextdb/service";net.nextdb.CONSTANTS.uploadUrl="http://www.nextdb.net/nextdb/upload";net.nextdb.CONSTANTS.captchaUrl="http://www.nextdb.net/nextdb/captcha";net.nextdb.CONSTANTS.generalCallback="callback=net.nextdb.Request.generalCallback";net.nextdb.CONSTANTS.generalDataCallback="callback=net.nextdb.Request.generalDataCallback";net.nextdb.CONSTANTS.queryCallback="callback=net.nextdb.Request.queryCallback";net.nextdb.CONSTANTS.insertCallback="_callback=net.nextdb.Request.insertCallback";net.nextdb.CONSTANTS.updateCallback="_callback=net.nextdb.Request.updateCallback";net.nextdb.CONSTANTS.describeTablesCallback="callback=net.nextdb.Request.describeTablesCallback";net.nextdb.CONSTANTS.pingCallback="callback=net.nextdb.Request.pingCallback";net.nextdb.CONSTANTS.uploadProgressCallback="callback=net.nextdb.Request.uploadProgressCallback";net.nextdb.CONSTANTS.describeQueryCallback="callback=net.nextdb.Request.describeQueryCallback";net.nextdb.Delete=function(A,B){this.tableName=A;this.rowId=B};net.nextdb.Delete.prototype.setTableName=function(A){this.tableName=A};net.nextdb.Delete.prototype.setRowId=function(A){this.rowId=A};net.nextdb.Error=function(){this.code=0;this.message="";this.causedBy="";var A=this;this.exceptionClass="";this.toString=function(){return A.code+" : "+A.message+" : "+A.causedBy};var A=this;this.getMessage=function(){if(A.code==120&&A.causedBy){return"The column "+A.causedBy+" is unique and the value you entered is already taken.  Please try again."}else{return A.message}}};net.nextdb.html.FileUpload=function(G,O,C,A,D){this.table=O;this.div=document.createElement("div");this.rowSet;this.conn=G;this.callbackStart=C;this.callbackFinish=A;this.formId="XDBForm"+Math.round(Math.random()*100000000000);this.progress=D;this.uploadID;this.formFieldId="XDBFormField"+Math.round(Math.random()*100000000000);var K=this;var B=document.createElement("form");this.form=B;B.action="";B.method="post";B.id=this.formId;B.name="upLoadForm";B.onsubmit=N;B.enctype="multipart/form-data";B.encoding="multipart/form-data";var H=document.createElement("input");H.type="file";H.name="form[file]";H.id=K.formFieldId;H.onchange=function(){M.click()};B.appendChild(H);this.addClassName=function(P){H.className=P;B.className=P};var M=document.createElement("input");M.type="submit";M.style.display="none";B.appendChild(M);var F;function N(){L();K.callbackStart();return net.nextdb.html.AIM.submit(B,{onStart:E,onComplete:I},K.div)}function L(){var P=Math.round(Math.random()*100000000000);K.uploadID=P;F=K.conn.getUploadURL(P,K.table);document.getElementById(K.formId).action=F}function E(){J();return true}function J(){if(!K.progress){return }K.conn.uploadProgress(K.uploadID,function(Q,P){if(P){return P}else{if(!Q.rx){setTimeout(J,100);return }if(Q.rx<Q.totalRX){K.progress(Q);setTimeout(J,100)}else{K.progress(Q);return }}})}function I(P){var Q=(F.replace(/post/,"view"));K.callbackFinish(Q);return }};net.nextdb.html.FileUpload.prototype.getElement=function(){return this.form};net.nextdb.html.AIM={frame:function(D){var C="f"+Math.floor(Math.random()*99999);var B=document.createElement("div");B.innerHTML=B.innerHTML+'<iframe style="display:none;" id="'+C+'" name="'+C+'" onload="net.nextdb.html.AIM.loaded(\''+C+"');\"></iframe>";B.id="div_"+C;document.body.appendChild(B);var A=document.getElementById(C);self.frames[C].name=C;if(D&&typeof (D.onComplete)=="function"){A.onComplete=D.onComplete}return C},form:function(B,A){B.setAttribute("target",A)},submit:function(A,B){net.nextdb.html.AIM.form(A,net.nextdb.html.AIM.frame(B));if(B&&typeof (B.onStart)=="function"){return B.onStart()}else{return true}},loaded:function(C){try{var A=document.getElementById(C);if(typeof (A.onComplete)=="function"){A.onComplete(C)}}catch(B){alert(B)}}};net.nextdb.html.Form=function(){this.form;this.columns;this._interceptor;this._hiddenColumns=[];this._omitFields=[];this._orderFields=[];this._defaultValues={};this._options={};this._expandable=[];this._confirmFields=[];this._obscureFields=[];this._cancelCallback=null;this._validation={};this._layout=1};net.nextdb.html.Form.BOX_LAYOUT=1;net.nextdb.html.Form.HORIZONTAL_LAYOUT=2;net.nextdb.html.Form.VERTICAL_LAYOUT=3;net.nextdb.html.Form.prototype.interceptor=function(A){this._interceptor=A;return this};net.nextdb.html.Form.prototype.cancelCallback=function(A){this._cancelCallback=A;return this};net.nextdb.html.Form.prototype.layout=function(A){this._layout=A;return this};net.nextdb.html.Form.prototype.expandFields=function(A){this._expandable=A;return this};net.nextdb.html.Form.prototype.omitFields=function(A){this._omitFields=A;return this};net.nextdb.html.Form.prototype.orderFields=function(A){this._orderFields=A;return this};net.nextdb.html.Form.prototype.confirmFields=function(A){this._confirmFields=A;return this};net.nextdb.html.Form.prototype.setMessageId=function(A){this.errorId=A;return this};net.nextdb.html.Form.prototype.message=function(C,A){var B=document.getElementById(this.errorId);if(A){B.style.color=A}else{B.style.color="#cc0000"}B.innerHTML=C;return this};net.nextdb.html.Form.prototype.obscureFields=function(A){this._obscureFields=A;return this};net.nextdb.html.Form.prototype.options=function(A){this._options=A;return this};net.nextdb.html.Form.prototype.defaultValues=function(A){this._defaultValues=A;return this};net.nextdb.html.Form.prototype.validation=function(A){this._validation=A;return this};net.nextdb.html.Form.prototype.destroy=function(){if(document.getElementById(this.objectId)){net.nextdb.Util.purge(document.getElementById(this.objectId));document.getElementById(this.objectId).parentNode.removeChild(document.getElementById(this.objectId))}return this};net.nextdb.html.Form.prototype.render=function(A){};net.nextdb.html.Form.prototype.doAction=function(){};net.nextdb.html.Form.prototype.build=function(){for(var m=0;m<this._expandable.length;m++){if(this.columns[this._expandable[m].toString()]){this.columns[this._expandable[m].toString()].expandable=true}}for(var m=0;m<this._obscureFields.length;m++){if(this.columns[this._obscureFields[m].toString()]){this.columns[this._obscureFields[m].toString()].dataType="PASSWORD"}}for(var m=0;m<this._omitFields.length;m++){if(this.columns[this._omitFields[m].toString()]){delete this.columns[this._omitFields[m].toString()]}}for(var K in this._defaultValues){if(this.columns[K]){this.columns[K].defaultValue=this._defaultValues[K]}}for(var J in this._options){if(this.columns[J]){this.columns[J].options=this._options[J]}}for(var V in this._validation){if(this.columns[V]){this.columns[V].validate=this._validation[V]}}if(this._orderFields.length>0){var e={};for(var m=0;m<this._orderFields.length;m++){var s=this._orderFields[m];for(var V in this.columns){if(V==s){e[V]=this.columns[V];break}}}this.columns=e}var d=this;function n(){var i="";for(var c in d.columns){if(d.columns[c].validate&&d.columns[c].node){var t=d.columns[c].validate.regex.test(d.columns[c].node.value);if(d.columns[c].node2){if(d.columns[c].node2.value!=d.columns[c].node.value){i+=" "+(d.columns[c].node.name).replace(/_/g," ")+" fields must match, ";d.columns[c].node.style.border=g;d.columns[c].node2.style.border=g;continue}else{if(!t){d.columns[c].node2.style.border=g}else{d.columns[c].node2.style.border=""}}}if(!t){var b=(d.columns[c].node.name).replace(/_/g," ");var u=d.columns[c].validate.message.replace("?",b);i+=u+", ";d.columns[c].node.style.border=g}else{d.columns[c].node.style.border=""}}}if(i!=""){i=i.substring(0,i.length-2);d.message(i)}else{d.message("");d.doAction()}}function C(t,b){var c;var i=new net.nextdb.html.FileUpload(d.conn,d.table,function(){c=a.value;a.value="loading...";t.firstChild.style.display="none";t.appendChild(W("div"));a.disabled=true},function(u){a.value=c;a.disabled=false;t.innerHTML="<input type='hidden' name='"+b+"' value='"+u+"'><img src='http://www.nextdb.net/img/file.png'> File loaded and ready for "+d.type},function(u){var w=u.rx;var x=u.totalRX;var v=(Math.round((w/x)*100))+"%";t.lastChild.innerHTML=v;if(v=="100%"){a.value=c}});return i}var W=net.nextdb.Util.createElement;var U="&nbsp;";var g="1px solid #CC0000";var Z=W("form");var I=W("table");I.className="form";Z.appendChild(I);Z.id=this.objectId;var N=W("tBody");I.appendChild(N);var O=W("tr");var E=W("td");if(this._layout==net.nextdb.html.Form.BOX_LAYOUT){E.colSpan="2"}else{if(this._layout==net.nextdb.html.Form.HORIZONTAL_LAYOUT){E.colSpan="5"}}if(this.errorId){E.id=this.errorId}E.innerHTML="&nbsp;";E.style.margin="4px";E.style.padding="4px";O.appendChild(E);N.appendChild(O);var Q=true;var G;function Y(i,c){if(d._layout==net.nextdb.html.Form.BOX_LAYOUT){var b=W("tr");b.appendChild(i);b.appendChild(c);N.appendChild(b)}else{if(d._layout==net.nextdb.html.Form.HORIZONTAL_LAYOUT){if(Q){G=W("tr");G.appendChild(i);G.appendChild(c);N.appendChild(G);Q=false}else{G.appendChild(i);G.appendChild(c)}}else{if(d._layout==net.nextdb.html.Form.VERTICAL_LAYOUT){var u=W("tr");var t=W("tr");u.appendChild(i);t.appendChild(c);N.appendChild(u);N.appendChild(t)}}}}for(var D in this.columns){var P=W("td");var M=W("td");P.innerHTML=D.replace(/_/g," ");if(this.columns[D].dataType=="LONGBINARY"){var L=document.createElement("div");L.name=D;M.appendChild(L);var q=C(M,D);L.appendChild(q.form);Y(P,M);this.columns[D].node=L}else{if(this.columns[D].dataType=="DATE"){var o=new net.nextdb.html.Calendar();var B=o.getElement();B.type="text";B.name=D;P.innerHTML+="<br>[click to open]";B.value=this.columns[D].defaultValue||"";M.appendChild(B);Y(P,M);this.columns[D].node=B}else{if(this.columns[D].dataType=="TEXT"||this.columns[D].dataType=="HIDDEN"||this.columns[D].dataType=="PASSWORD"||this.columns[D].dataType=="LONGINTEGER"||this.columns[D].dataType=="DECIMAL"){if(this.columns[D].options){var h=W("select");h.name=D;for(var J in this.columns[D].options){var f=W("option");f.value=this.columns[D].options[J];f.text=this.columns[D].options[J];if(document.all){h.add(f)}else{h.appendChild(f)}}M.appendChild(h);Y(P,M);this.columns[D].node=h}else{if(this.columns[D].expandable){var B=W("textarea");B.value=this.columns[D].defaultValue||"";B.name=D;M.appendChild(B);Y(P,M);this.columns[D].node=B}else{var B=W("input");if(this.columns[D].password||this.columns[D].dataType=="PASSWORD"){B.type="password"}else{B.type="text"}B.name=D;B.value=this.columns[D].defaultValue||"";M.appendChild(B);Y(P,M);this.columns[D].node=B;for(var m=0;m<this._confirmFields.length;m++){if(this._confirmFields[m]==D){var T=B.cloneNode(true);T.name="_"+T.name;T.value="";var l=W("td");var k=W("td");l.innerHTML="confirm "+D.replace(/_/g," ");k.appendChild(T);Y(l,k);this.columns[D].node2=T}}}}}}}}if(this.captcha){var H=W("td");var F=W("td");var A=W("td");var j=W("td");F.innerHTML="<img onclick='net.nextdb.Util.sourceCaptchaImg(this,\""+this.captchaStyle.fg+'","'+this.captchaStyle.bg+"\")' id='nextdb-captcha' src='"+net.nextdb.CONSTANTS.captchaUrl+"?fg="+(this.captchaStyle.fg.replace("#",""))+"&bg="+(this.captchaStyle.bg.replace("#",""))+"&width=175&height=80&cruft="+Math.random()+"'><br/>";H.innerHTML="word verification:<br>[click image to reload]";var B=W("input");this.columns.captcha={};this.columns.captcha.node=B;this.columns.captcha.validate=net.nextdb.validate.REQUIRED;B.type="text";B.name="captcha";j.appendChild(B);A.innerHTML="type the characters <br>you see in the picture";Y(H,F);Y(A,j)}var S=W("td");var R=W("td");var a=W("input");var r=W("input");var X=W("input");a.type="button";r.type="button";X.type="reset";a.value="submit";if(this._cancelCallback!=null&&(typeof this._cancelCallback=="function")){net.nextdb.Util.addEvent(r,"click",this._cancelCallback)}r.value="cancel";X.value="reset";R.appendChild(a);R.appendChild(X);R.appendChild(r);Y(S,R);net.nextdb.Util.addEvent(a,"click",n);return Z};net.nextdb.html.InsertForm=function(B,A){this.objectId=Math.round(Math.abs(Math.random()*10000000));this.errorId="nextdb-form-msg-"+this.objectId;this.type="INSERT";this.conn=B;this.tableName=A;this.linkId;this.callback;this.captchaStyle={bg:"#FFFFFF",fg:"#333333"};return this};net.nextdb.html.InsertForm.prototype=new net.nextdb.html.Form;net.nextdb.html.InsertForm.prototype.insertAndLink=function(B,A){this.relationshipName=A;this.linkId=B};net.nextdb.html.InsertForm.prototype.insertCallback=function(A){this.callback=A;return this};net.nextdb.html.InsertForm.prototype.captchaColors=function(A){if(!A.fg||!A.bg){alert('invalid call to captchaColors\n\n please use this object literal format: {bg:"#FFFFFF",fg:"#333333"}');return }this.captchaStyle=A;return this};net.nextdb.html.InsertForm.prototype.describeTable=function(){var A=this;this.conn.describeTable(this.tableName,function(E,C){if(C){alert(C)}else{A.columns={};var F=E[0];for(var D=0;D<F.columns.length;D++){if(F.columns[D].owner==null){var B=F.columns[D].type=="INTEGER"?net.nextdb.validate.NUMERIC:net.nextdb.validate.REQUIRED;A.columns[F.columns[D].name]={dataType:F.columns[D].type,validate:B}}}if(F.captcha=="true"){A.captcha=true}}A.div.appendChild(A.build())})};net.nextdb.html.InsertForm.prototype.doAction=function(){var B=this;var A=new net.nextdb.Insert(this.tableName);var C=net.nextdb.Util.parseForm(document.getElementById(this.objectId));if(this.relationshipName&&this.linkId){A.setRelationship(this.linkId,this.relationshipName)}if(this._interceptor){this._interceptor(C,A)}A.setParameters(C);if((typeof this.callback=="function")){this.conn.executeInsert(A,this.callback)}else{this.conn.executeInsert(A,function(E,D){if(D){var F;if(D.code==120){F="field "+D.causedBy+" must be unique, the value you entered is already taken"}else{if(D.code==130){F="field "+D.causedBy+" threw a data format exception, please check data format"}else{if(D.code==110){F="incorrect security CAPTCHA word";B.columns.captcha.node.style.border="1px solid #cc0000"}else{F=D.message}}}error="insert failed. "+F;B.message(error,"red")}else{error="insert succeeded";B.message(error,"green");if(document.getElementById("nextdb-captcha"+B.objectId)){net.nextdb.Util.sourceCaptchaImg(document.getElementById("nextdb-captcha"+B.objectId))}}})}};net.nextdb.html.InsertForm.prototype.render=function(A){this.div=A;this.describeTable()};net.nextdb.html.UpdateForm=function(B,A){this.objectId=Math.round(Math.abs(Math.random()*10000000));this.errorId="nextdb-form-msg-"+this.objectId;this.type="UPDATE";this.conn=B;this.callback;this.tableName=A;return this};net.nextdb.html.UpdateForm.prototype=new net.nextdb.html.Form;net.nextdb.html.UpdateForm.prototype.setRowId=function(A){this.rowId=A;return this};net.nextdb.html.UpdateForm.prototype.updateCallback=function(A){this.callback=A;return this};net.nextdb.html.UpdateForm.prototype.describeTable=function(){var A=this;this.conn.describeTable(this.tableName,function(E,C){if(C){alert(C)}else{A.columns={};var F=E[0];for(var D=0;D<F.columns.length;D++){if(F.columns[D].owner==null){var B=F.columns[D].type=="INTEGER"?net.nextdb.validate.NUMERIC:net.nextdb.validate.REQUIRED;A.columns[F.columns[D].name]={dataType:F.columns[D].type,validate:B}}}A.div.appendChild(A.build())}})};net.nextdb.html.UpdateForm.prototype.doAction=function(A){if(!this.rowId){alert("you must pass in a valid updatePK to the UpdateForm in order to identify the row you wish to update.");return }var B=new net.nextdb.Update(this.tableName);B.setRowId(this.rowId);var D=net.nextdb.Util.parseForm(document.getElementById(this.objectId));if(this.interceptor){this.interceptor(D,B)}B.setParameters(D);var C=this;if((typeof this.callback=="function")){this.conn.executeUpdate(B,this.callback)}else{this.conn.executeUpdate(B,function(E){if(E){var F;if(E.code==120){F="field "+E.causedBy+" must be unique, the value you entered is already taken"}else{if(E.code==130){F="field "+E.causedBy+" threw a data format exception, please check data format"}else{F=E.message}}error="update failed. "+F;C.message(error,"red")}else{C.message("update succeeded","green")}if(this.callback){this.callback(E)}})}};net.nextdb.html.UpdateForm.prototype.render=function(A){this.div=A;this.describeTable();return this};net.nextdb.html.QueryForm=function(A,B){this.objectId=Math.round(Math.abs(Math.random()*10000000));this.errorId="nextdb-form-msg-"+this.objectId;this.type="QUERY";this.conn=A;this.queryName=B;this.callback;return this};net.nextdb.html.QueryForm.prototype=new net.nextdb.html.Form;net.nextdb.html.QueryForm.prototype.queryCallback=function(A){this.callback=A;return this};net.nextdb.html.QueryForm.prototype.describeQuery=function(){var A=this;this.conn.describeQuery(this.queryName,function(E,D){if(D){alert(D)}else{A.columns={};for(var C in E[A.queryName.toString()].whereParameters){A.columns[C.toString()]={};var B=E[A.queryName.toString()].whereParameters[C.toString()];if(B.indexOf("SURID")==0){A.columns[C.toString()].dataType="TEXT"}else{if(B=="INTEGER"){A.columns[C.toString()].dataType="LONGINTEGER"}else{A.columns[C.toString()].dataType=B}}if(B=="INTEGER"){A.columns[C.toString()].validate=net.nextdb.validate.NUMERIC}else{A.columns[C.toString()].validate=net.nextdb.validate.REQUIRED}}}A.div.appendChild(A.build())})};net.nextdb.html.QueryForm.prototype.doAction=function(){var A=new net.nextdb.Query(this.queryName);var B=net.nextdb.Util.parseForm(document.getElementById(this.objectId));A.setParameters(B);if((typeof this.callback=="function")){this.conn.executeQuery(A,this.callback)}else{this.conn.executeQuery(A,function(){})}};net.nextdb.html.QueryForm.prototype.render=function(A){this.div=A;this.describeQuery()};net.nextdb.Insert=function(A){this.table=A;this.map={};this.relationshipName;this.rowId;this.permalinkHandler};net.nextdb.Insert.prototype.setParameters=function(A){this.map=A};net.nextdb.Insert.prototype.setPermalinkHandler=function(A){this.permalinkHandler=A};net.nextdb.Insert.prototype.setRelationship=function(B,A){if(!B||!A){alert("development time bug:\n\nbe sure to pass in both the rowId and the relationshipName when calling insert.setRelationship()")}this.rowId=B;this.relationshipName=A};net.nextdb.Query=function(A){this.name=A;this.map;this.startAfterValue="now";this.admin=false;this.startAfter=0;this.pageSize=10000;this.orderBy=null};net.nextdb.Query.prototype.setParameters=function(A){this.map=A};net.nextdb.Query.prototype.setStartAfter=function(A){this.startAfter=A};net.nextdb.Query.prototype.setStartAfterValue=function(A){this.startAfterValue=(A)};net.nextdb.Query.prototype.setPageSize=function(A){this.pageSize=A};net.nextdb.html.Reflector=function(){Array.prototype.___isArray=true;var J=0;var B="";var H=false;var F=-1;var E=this;this.reflect=function(O){J++;if(H){F++;if(typeof (O)==="number"||typeof (O)==="string"){C(G()+((typeof (O)==="number")?A(O):L(O)));J--;return }}for(var P in O){var N;if(O[P]==null||O[P]==undefined){C(K("object "+P+"= null"));continue}if(typeof (O[P])==="object"){if((O[P].___isArray)){H=true;C(K("array ")+P+" ("+O[P].length+")");for(var M=0;M<O[P].length;M++){E.reflect(O[P][M])}H=false;F=-1}else{C(K("object ")+P);E.reflect(O[P])}}else{if(typeof (O[P])==="string"){C(K("string ")+P+G()+L(O[P]))}else{if(typeof (O[P])==="number"){C(K("number ")+P+G()+A(O[P]))}}}}J--};this.getHTML=function(){return"<style>span{font-size:9pt} pre{font-size:9pt} .s { color: green } .t { color: blue } .n { color: red } .r { color: #DD7777; font-weight:bold } .literal { color: #5555FF }</style><pre>"+B+"</pre>"};this.show=function(){var M;if(document.getElementById("nextdb:reflector")){M=document.getElementById("nextdb:reflector");M.innerHTML+="<style>span{font-size:9pt} pre{font-size:9pt} .s { color: green } .t { color: blue } .n { color: red } .r { color: #DD7777; font-weight:bold } .literal { color: #5555FF }</style>";M.innerHTML+="<pre>"+B+"</pre>"}else{M=document.createElement("div");M.style.position="relative";M.style.width="768px";M.style.padding="8px";M.style.backgroundColor="#ffffff";M.style.fontSize="14pt";M.style.border="1px inset #cccccc";M.id="nextdb:reflector";document.body.appendChild(M);M.innerHTML+="<style>span{font-size:9pt} pre{font-size:9pt} .s { color: green } .t { color: blue } .n { color: red } .r { color: #DD7777; font-weight:bold } .literal { color: #5555FF }</style>";M.innerHTML+="<pre>"+B+"</pre>"}};function L(M){return"<span class='s'>\""+M+'"</span>'}function G(){return"<span class='r'>=</span>"}function K(M){return"<img src='http://www.nextdb.net/admin/img/arrow.png'><span class='t'>"+M+"</span>"}function A(M){return"<span class='n'>"+M+"</span>"}function I(){var N="";for(var M=0;M<J;M++){N+="\t"}return N}function C(M){if(F!=-1){B+=I()+"["+F+"]"+M+"\n"}else{B+=I()+M+"\n"}}function D(M){M.target.parent.style.display="none"}};net.nextdb.Request=function(){};net.nextdb.Request.scriptId=1;net.nextdb.Request.callbackFunctions=[];net.nextdb.Request.additionalCallbackFunctions=[];net.nextdb.Request.checkExceptions=function(B){var A=undefined;if(B.hasOwnProperty("ApplicationException")){A=new net.nextdb.Error();A.message=B.ApplicationException.message;A.exceptionClass=B.ApplicationException.exceptionClass;if(A.message=="request cannot be completed because user is not logged in."){net.nextdb.Util.createCookie("timeout","true",1);window.location="./index.html";return }A.causedBy=B.ApplicationException.causedBy;if(B.ApplicationException.code==null){A.code=-1}else{A.code=parseInt(B.ApplicationException.code)}}if(B.hasOwnProperty("InternalException")){A=new net.nextdb.Error();A.message=B.InternalException.message;A.exceptionClass=B.InternalException.exceptionClass;A.causedBy=B.InternalException.causedBy;if(B.InternalException.code==null){A.code=-1}else{A.code=parseInt(B.InternalException.code)}}return A};net.nextdb.Request.queryCallback=function(B){var A=net.nextdb.Request.checkExceptions(B);net.nextdb.Request.callbackFunctions[B.id](B.rs,A,B.datatypes);net.nextdb.Request.clearCallback(B.id)};net.nextdb.Request.describeQueryCallback=function(B){var A=net.nextdb.Request.checkExceptions(B);net.nextdb.Request.callbackFunctions[B.id](B,A);net.nextdb.Request.clearCallback(B.id)};net.nextdb.Request.insertCallback=function(C){var A=net.nextdb.Request.checkExceptions(C);var B=null;if(C.hasOwnProperty("generatedPK")){B=C.generatedPK}if(net.nextdb.Request.additionalCallbackFunctions[C.id]){net.nextdb.Request.additionalCallbackFunctions[C.id](C.permalink)}net.nextdb.Request.callbackFunctions[C.id](B,A);net.nextdb.Request.clearCallback(C.id)};net.nextdb.Request.updateCallback=function(B){var A=net.nextdb.Request.checkExceptions(B);net.nextdb.Request.callbackFunctions[B.id](A);net.nextdb.Request.clearCallback(B.id)};net.nextdb.Request.describeTablesCallback=function(G){var A=net.nextdb.Request.checkExceptions(G);var D=[];if(G.Tables){for(var C=0;C<G.Tables.length;C++){var F=new net.nextdb.Table(G.Tables[C].name);F.captcha=G.Tables[C].captcha;var B=G.Tables[C].Columns;for(var H=0;H<B.length;H++){var E=new net.nextdb.Column(B[H].name,B[H].type,B[H].unique,B[H].defaultValue,B[H].nullable,B[H].owner);F.addColumn(E)}D[C]=F}}net.nextdb.Request.callbackFunctions[G.id](D,A);net.nextdb.Request.clearCallback(G.id)};net.nextdb.Request.uploadProgressCallback=function(B){var A=net.nextdb.Request.checkExceptions(B);net.nextdb.Request.callbackFunctions[B.id](B,A);net.nextdb.Request.clearCallback(B.id)};net.nextdb.Request.generalCallback=function(B){var A=net.nextdb.Request.checkExceptions(B);net.nextdb.Request.callbackFunctions[B.id](A);net.nextdb.Request.clearCallback(B.id)};net.nextdb.Request.generalDataCallback=function(B){var A=net.nextdb.Request.checkExceptions(B);net.nextdb.Request.callbackFunctions[B.id](B,A);net.nextdb.Request.clearCallback(B.id)};net.nextdb.Request.send=function(C,Q,J,B){var E=net.nextdb.Request.scriptId++;net.nextdb.Request.callbackFunctions[E]=Q;if(B){net.nextdb.Request.additionalCallbackFunctions[E]=B}if(C.length<2000){var K=document.createElement("script");K.setAttribute("type","text/javascript");if(J){K.setAttribute("src",C+"&_id="+E)}else{K.setAttribute("src",C+"&id="+E)}K.setAttribute("id",E);document.getElementsByTagName("head").item(0).appendChild(K);setTimeout("net.nextdb.Request.checkTimeout("+E+")",net.nextdb.CONSTANTS.requestTimeout*1000)}else{var M=C.substring(0,C.indexOf("?")+1);var L=C.substring(C.indexOf("?")+1);var A=Math.ceil(Math.random()*10000000);var N=1500;var G=1;while(M.length+L.length>N){G++;if(M.length+(L.length/G)<N){break}}var I=[];var O=Math.ceil(L.length/G);for(var H=0;H<G;H++){var D=Math.round(H*O);var F=Math.round((H*O)+O);if(H+1==G){var P=(net.nextdb.Util.escape((L.substring(D))))}else{var P=(net.nextdb.Util.escape((L.substring(D,F))))}var C=M+"rId="+A+"&chunkNum="+(H)+"&chunkCallback=net.nextdb.Request.multiPartCallback&numChunks="+G+"&chunk="+P;I.push(C)}for(var H=0;H<I.length;H++){var K=document.createElement("script");K.setAttribute("type","text/javascript");K.setAttribute("id",E);K.rid=A;K.cn=H;if(J){K.setAttribute("src",I[H]+"&_id="+E)}else{K.setAttribute("src",I[H]+"&id="+E)}document.getElementsByTagName("head").item(0).appendChild(K)}setTimeout("net.nextdb.Request.checkTimeout("+E+")",net.nextdb.CONSTANTS.requestTimeout*1000)}};net.nextdb.Request.multiPartCallback=function(C){var A=document.getElementsByTagName("script");for(var B=0;B<A.length;B++){if(document.getElementsByTagName("script")[B].rid==C.reqId&&document.getElementsByTagName("script")[B].cn==C.chunkNum){document.getElementsByTagName("head").item(0).removeChild(document.getElementsByTagName("script")[B])}}};net.nextdb.Request.clearCallback=function(A){if(A){net.nextdb.Request.callbackFunctions[A]=null;document.getElementsByTagName("head").item(0).removeChild(document.getElementById(A))}};net.nextdb.Request.checkTimeout=function(D){if(net.nextdb.Request.callbackFunctions[D]){if(!net.nextdb.Request.timeoutError){net.nextdb.Request.timeoutError=new net.nextdb.Error();net.nextdb.Request.timeoutError.message="This request has timed out.  The server might be having problems.  Please try again later."}var B=net.nextdb.Request.callbackFunctions[D].toString();var A=(B.substring(B.indexOf("(")+1,B.indexOf(")")));var C=(A.split(",")).length;if(C==1){net.nextdb.Request.callbackFunctions[D](net.nextdb.Request.timeoutError)}else{if(C==2){net.nextdb.Request.callbackFunctions[D](null,net.nextdb.Request.timeoutError)}else{if(C==3){net.nextdb.Request.callbackFunctions[D](null,null,net.nextdb.Request.timeoutError)}else{if(C==4){net.nextdb.Request.callbackFunctions[D](null,null,null,net.nextdb.Request.timeoutError)}}}}net.nextdb.Request.callbackFunctions[D]=null;net.nextdb.Request.clearCallback(D)}};net.nextdb.Request.timeoutError=undefined;net.nextdb.Table=function(A){this.name=A;this.captcha=false;this.columns=[]};net.nextdb.Table.prototype.addColumn=function(A){this.columns.push(A)};net.nextdb.Table.prototype.removeColumn=function(B){var C=[];for(var A=0;A<this.columns.length;A++){if(this.columns[A].name!=B){C.push(this.columns[A])}}this.columns=C};net.nextdb.Table.prototype.getColumns=function(){return this.columns};net.nextdb.Table.prototype.test=function(){alert(this.name)};net.nextdb.Update=function(A){this.table=A;this.map;this.rowId};net.nextdb.Update.prototype.setParameters=function(A){this.map=A};net.nextdb.Update.prototype.setRowId=function(A){this.rowId=A};net.nextdb.Util=function(){};net.nextdb.Util.fitTextArea=function(A){return ;var B=A.target||window.event.srcElement;if(document.all){B.style.overflow="visible";return }while(B.rows>1&&B.scrollHeight<B.offsetHeight){B.rows--}while(B.scrollHeight>B.offsetHeight){B.rows++}return };net.nextdb.Util.addEvent=function(C,B,A){if(C.attachEvent){C["e"+B+A]=A;C[B+A]=function(){C["e"+B+A](window.event)};C.attachEvent("on"+B,C[B+A])}else{C.addEventListener(B,A,false)}};net.nextdb.Util.removeEvent=function(C,B,A){if(C.detachEvent){C.detachEvent("on"+B,C[B+A]);C[B+A]=null}else{C.removeEventListener(B,A,false)}};net.nextdb.Util.shareDataModel=function(A){return"http://www.nextdb.net/nextdb/service/"+A.companyName+"/"+A.schema+"/EXPORT"};net.nextdb.Util.monthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"];net.nextdb.Util.shortDateFormat=function(B){var A=((B.getHours()+"").length==1?"0"+B.getHours():B.getHours());var C=((B.getMinutes()+"").length==1?"0"+B.getMinutes():B.getMinutes());return net.nextdb.Util.monthNames[B.getMonth()]+" "+B.getDate()+",  "+B.getFullYear()+" "+A+":"+C};net.nextdb.Util.convertToServerDateFormat=function(A){var C=A.getFullYear()+"-"+(A.getMonth()+1)+"-"+A.getDate()+" "+A.getHours()+":"+A.getMinutes()+":"+A.getSeconds()+".000 "+B();return C;function B(){var F=A.toString();var H="";var E;var G=F.indexOf("(");if(G>-1){H=F.substring(++G,F.indexOf(")"))}else{var D=/([A-Z\/]+) \d{4}$/;if((E=F.match(D))){H=E[1]}else{F=dateObject.toLocaleString();D=/ ([A-Z\/]+)$/;if((E=F.match(D))){H=E[1]}}}return(H=="AM"||H=="PM")?"":H}};net.nextdb.Util.convertFromServerDateFormat=function(E){try{var C=E.split(" ");var F=C[0].split("-");var B=C[1].split(":");var A=new Date();A.setUTCFullYear(F[0]);var D=A.setUTCMonth(parseInt(F[1],10)-1);A.setUTCDate(F[2],10);A.setUTCHours(B[0]);A.setUTCMinutes(B[1]);A.setUTCSeconds(B[2]);return A}catch(G){throw ("invalid date string from server : "+E)}};net.nextdb.Util.convertFromLocalServerDateFormat=function(E){try{var C=E.split(" ");var F=C[0].split("-");var B=C[1].split(":");var A=new Date();A.setFullYear(F[0]);var D=A.setMonth(parseInt(F[1],10)-1);A.setDate(F[2],10);A.setHours(B[0]);A.setMinutes(B[1]);A.setSeconds(B[2]);return A}catch(G){throw ("invalid date string from server : "+E)}};net.nextdb.Util.isServerDateFormat=function(B){var A=/^(19|20)\d\d[-](0[1-9]|[1-9]|1[012])[-](0[1-9]|[1-9]|[12][0-9]|3[01]).*GMT$/;if(A.test(B)==false){return false}return true};net.nextdb.Util.printAll=function(D){var B=D.attributes,C,A,E;if(B){A=B.length;for(C=0;C<A;C+=1){E=B[C];if(E.name=="id"){net.nextdb.Util.p(E.value)}}}B=D.childNodes;if(B){A=B.length;for(C=0;C<A;C+=1){net.nextdb.Util.printAll(D.childNodes[C])}}};net.nextdb.Util.purge=function(D){var B=D.attributes,C,A,E;if(B){A=B.length;for(C=0;C<A;C+=1){E=B[C].name;if(typeof D[E]==="function"){D[E]=null}}}B=D.childNodes;if(B){A=B.length;for(C=0;C<A;C+=1){net.nextdb.Util.purge(D.childNodes[C])}}};net.nextdb.Util.getAbsoluteLeft=function(C){var B=C.offsetLeft;var A=C.offsetParent;while(A!=null){B+=A.offsetLeft;A=A.offsetParent}return B};net.nextdb.Util.getAbsoluteTop=function(C){var B=C.offsetTop;var A=C.offsetParent;while(A!=null){B+=A.offsetTop;A=A.offsetParent}return B};net.nextdb.Util.validateEmail=function(A){var B=/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;if(B.test(A)==false){return false}return true};net.nextdb.Util.googleAPI=null;net.nextdb.Util.visualizeQuery=function(B,C){if(net.nextdb.Util.googleAPI==null){net.nextdb.Util.googleAPI=document.createElement("script");net.nextdb.Util.googleAPI.setAttribute("type","text/javascript");net.nextdb.Util.googleAPI.setAttribute("src","http://www.google.com/jsapi");document.getElementsByTagName("head").item(0).appendChild(net.nextdb.Util.googleAPI);net.nextdb.Util.googleAPI.onload=function(){net.nextdb.Util.visualizeQuery(B,C)}}else{var A=function(){var I=new google.visualization.DataTable();I.addRows(B.length);for(var G in B[0]){for(var E in B[0][G]){if(net.nextdb.Util.isServerDateFormat(B[0][G][E])){I.addColumn("date",E)}else{I.addColumn("string",E)}}}var F=0;for(var D=0;D<B.length;D++){for(var G in B[D]){for(var E in B[D][G]){if(net.nextdb.Util.isServerDateFormat(B[D][G][E])){I.setCell(D,F,net.nextdb.Util.convertFromServerDateFormat(B[D][G][E]))}else{I.setCell(D,F,""+B[D][G][E])}F++}F=0}}var H=new google.visualization.Table(C);H.draw(I,{showRowNumber:true})};google.load("visualization","1",{packages:["table"],callback:A})}};net.nextdb.Util.formParser=function(A){return net.nextdb.Util.parseForm(A)};net.nextdb.Util.parseForm=function(B){var C={};if(!B||!B.hasChildNodes()){alert("illegal argument to net.nextdb.Util.parseForm\n\nBe sure to pass in a valid HTML DOM node with child input elements to be parsed.");return }A(B);function A(F){D(F);if(F.hasChildNodes()){for(var E=0;E<F.childNodes.length;E++){A(F.childNodes[E])}}}function D(E){if(E.nodeName.toLowerCase()=="input"&&E.type.toLowerCase()=="text"){C[E.name]=E.value}else{if(E.nodeName.toLowerCase()=="input"&&E.type.toLowerCase()=="password"){C[E.name]=E.value}else{if(E.nodeName.toLowerCase()=="input"&&E.type.toLowerCase()=="hidden"){C[E.name]=E.value}else{if(E.nodeName.toLowerCase()=="input"&&E.type.toLowerCase()=="checkbox"){C[E.name]=E.checked}else{if(E.nodeName.toLowerCase()=="input"&&E.type.toLowerCase()=="radio"){C[E.name]=E.checked}else{if(E.nodeName.toLowerCase()=="textarea"){C[E.name]=E.value}else{if(E.nodeName.toLowerCase()=="select"&&E.name&&E.name!=""){C[E.name]=E[E.selectedIndex].value}}}}}}}}return C};net.nextdb.Util.c=function(){if(document.getElementById("nextdb:console")){document.getElementById("nextdb:console").innerHTML=""}};net.nextdb.Util.p=function(A,C){if(C&&C<net.nextdb.CONSTANTS.logging){return }if(document.getElementById("nextdb:console")){document.getElementById("nextdb:console").innerHTML+="<br/>"+A}else{var B=document.createElement("div");B.style.position="absolute";B.style.top="10px";B.style.left="10px";B.style.scrolling="on";B.style.width="800px";B.style.height="500px";B.style.overflow="auto";B.style.zIndex="300";B.style.padding="10px";B.style.border="4px solid #cccccc";B.style.opacity="0.65";B.style.filter="alpha(opacity=65)";B.style.fontSize="9pt";B.style.fontFamily="verdana";B.style.border="3px inset #008F00";B.style.color="#CCFF66";B.style.backgroundColor="#333333";B.id="nextdb:console";document.body.appendChild(B);B.innerHTML+="<br/>"+A}document.getElementById("nextdb:console").style.display="block";document.getElementById("nextdb:console").onclick=function(){document.getElementById("nextdb:console").style.display="none"}};net.nextdb.Util.escape=function(E){E=E+"";var J="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.~";var B="!*'();:@&=+$,/?%#[]";var H=J+B;var G="0123456789ABCDEFabcdef";function I(K){return"%"+G.charAt(K>>4)+G.charAt(K&15)}var C="";for(var D=0;D<E.length;D++){var A=E.charAt(D);if(J.indexOf(A)!=-1){C=C+A}else{var F=E.charCodeAt(D);if(F<128){C=C+I(F)}if(F>127&&F<2048){C=C+I((F>>6)|192);C=C+I((F&63)|128)}if(F>2047&&F<65536){C=C+I((F>>12)|224);C=C+I(((F>>6)&63)|128);C=C+I((F&63)|128)}if(F>65535){C=C+I((F>>18)|240);C=C+I(((F>>12)&63)|128);C=C+I(((F>>6)&63)|128);C=C+I((F&63)|128)}}}return C};net.nextdb.Util.escapeBraces=function(A){for(var B in A){A[B]=A[B].replace(/\]/g,">").replace(/\[/g,"<")}return A};net.nextdb.Util.escapeBrakets=function(A){return A.replace(/\>/g,"&gt;").replace(/\</g,"&lt;")};net.nextdb.Util.yellowerize=function(A){A.onfocus=function(B){if(document.all){window.event.srcElement.style.backgroundColor="#ffffcc"}else{B.target.style.backgroundColor="#ffffcc"}};A.onblur=function(B){if(document.all){window.event.srcElement.style.backgroundColor="#eeeeee"}else{B.target.style.backgroundColor="#eeeeee"}}};net.nextdb.Util.what=function(A){net.nextdb.Util.inspect(A)};net.nextdb.Util.inspect=function(B){var A="object inspection:\n\n";for(p in B){A+="\t"+p+" = "+B[p]+"\n"}alert(A)};net.nextdb.Util.trim=function(A){return A.replace(/^\s+|\s+$/g,"")};net.nextdb.Util.byId=function(A){return document.getElementById(A)};net.nextdb.Util.sourceCaptchaImg=function(B,A,D){var C=net.nextdb.CONSTANTS.captchaUrl+"?width=175&height=80";if(A){C+="&fg="+A.replace("#","")}if(D){C+="&bg="+D.replace("#","")}C+="&cruft="+Math.random();B.src=C};net.nextdb.Util.createCookie=function(C,D,E){if(E){var B=new Date();B.setTime(B.getTime()+(E*24*60*60*1000));var A="; expires="+B.toGMTString()}else{var A=""}document.cookie=C+"="+D+A+"; path=/"};net.nextdb.Util.readCookie=function(B){var D=B+"=";var A=document.cookie.split(";");for(var C=0;C<A.length;C++){var E=A[C];while(E.charAt(0)==" "){E=E.substring(1,E.length)}if(E.indexOf(D)==0){return E.substring(D.length,E.length)}}return null};net.nextdb.Util.eraseCookie=function(A){net.nextdb.Util.createCookie(A,"",-1)};net.nextdb.Util.print=function(A,B){net.nextdb.Util.p(A,B)};net.nextdb.Util.parseDate=function(A){return net.nextdb.Util.convertFromServerDateFormat(A)};net.nextdb.Util.getCaptchaURL=function(A){A.src=net.nextdb.CONSTANTS.captchaUrl+"?width=175&height=80&cruft="+Math.random()};net.nextdb.Util.uc=function(){if(document.getElementById("nextdb:usage-console")){document.getElementById("nextdb:usage-console").innerHTML=""}};net.nextdb.Util.up=function(A,C){if(document.getElementById("nextdb:usage-console")){document.getElementById("nextdb:usage-console").innerHTML+="<br/>"+A}else{var B=document.createElement("div");B.style.position="absolute";B.style.top="10px";B.style.left="10px";B.style.scrolling="on";B.style.width="600px";B.style.height="300px";B.style.overflow="auto";B.style.zIndex="300";B.style.padding="10px";B.style.border="4px solid #cccccc";B.style.fontSize="9pt";B.style.fontFamily="verdana";B.style.border="3px inset #008F00";B.style.color="#CCFF66";B.style.backgroundColor="#ffffff";B.id="nextdb:usage-console";document.body.appendChild(B);B.innerHTML+="<br/>"+A}document.getElementById("nextdb:usage-console").style.display="block";document.getElementById("nextdb:usage-console").onclick=function(){document.getElementById("nextdb:usage-console").style.display="none"}};net.nextdb.Util.view=function(A){net.nextdb.Util.p(A)};net.nextdb.Util.createElement=function(A){if(document.all){return document.createElement("<"+A+">")}else{return document.createElement(A)}};net.nextdb.Util.buildForm=function(A){};net.nextdb.validate={};net.nextdb.validate.EMAIL={regex:/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,message:"valid email required"};net.nextdb.validate.REQUIRED={regex:/./,message:"? required"};net.nextdb.validate.NUMERIC={regex:/^\d+$/,message:"? must be numeric"};net.nextdb.validate.STRONG_PASSWORD={regex:/(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/,message:"? must be at least 8 mixed case alphanumeric characters"};net.nextdb.validate.OPTIONAL={regex:null,message:""}})();