function err2Str( e ) { var str = "" ; if ( typeof( e ) == "object" ) { str += "err{" ; for ( i in e ) { str += "," + i + "=" + e[ i ] ; } str += "}" ; } else str += "err{" + e + "}" ; return str ; } function err2Html( e ) { var str = "" ; if ( typeof( e ) == "object" ) { for ( i in e ) { str += "" ; } } else str += "" ; str += "
" + i + "" + htmlEnc( "" + e[ i ] ) + "
" + htmlEnc( "" + e ) + "
" ; return str ; } function err2Xml( e , tagp , tag ) { if ( typeof( tagp ) == 'undefined' ) tagp = "exception" ; if ( typeof( tag ) == 'undefined' ) tag = "e" ; if ( typeof( e ) == "object" ) { var str = "<" + tagp + " " ; for ( i in e ) { str += " " + i + "='" + xmlEnc( "" + e[ i ] ) + "'" ; } str += " >\n" ; for ( i in e ) { str += "\n<" + tag + " key='" + xmlEnc( i ) + "'" + " type='" + ( typeof( e[ i ] ) == 'object' && e[ i ] ? ( e[ i ].constructor == Array ? "array" : "object" ) : typeof( e[ i ] ) ) + "'" + " value='" + xmlEnc( "" + e[ i ] ) + "'" + "/>" ; } str += "\n" ; if ( typeof ( e.stack ) != "undefined" ) { for( var i = 0 ; i < e.stack.length ; i++ ) { str += "\n" ; if ( e.stack[ i ].args ) { for( var j = 0 ; j < e.stack[ i ].args.length ; j++ ) { str += "\n" ; } } str += "" ; } } str += "" ; return str ; } for( var estr = "" + e , res = "" , i = 0 ; i < estr.length ; i++ ) res += " " + i + "=" + estr.charCodeAt( i ) ; var str = "<" + tagp + " " ; str += " str='" + xmlEnc( "" + e ) + "' strCode='" + res + "'" ; str += " >" ; str += "<" + tag + " type='" + ( typeof( e ) == 'object' && e ? ( e.constructor == Array ? "array" : "object" ) : typeof( e ) ) + "'" + " value='" + xmlEnc( "" + e ) + "'" + "/>" ; str += "<" + tag + " type='" + ( typeof( e ) == 'object' && e ? ( e.constructor == Array ? "array" : "object" ) : typeof( e ) ) + "'" + " value='" + res + "'" + "/>" ; str += "" ; return str ; } function object2Xml( o , name , tagp , tag , ignore , rec ) { if ( typeof( name ) == 'undefined' ) name = "" ; if ( typeof( tagp ) == 'undefined' ) tagp = "object" ; if ( typeof( tag ) == 'undefined' ) tag = "attribute" ; if ( typeof( ignore ) == 'undefined' ) ignore = "" ; if ( typeof( rec ) == 'undefined' ) rec = 0 ; // typeof retorna "number," "string," "boolean," "object," "function," and "undefined." var t = typeof( o ) ; if ( t == "object" && o && o.constructor == Array ) t = "array" ; for( var str = "" , i = 0 ; i < rec ; i++ ) str += "\t" ; str += "<" + tagp + ( name ? " name='" + xmlEnc( name ) + "'" : "" ) + " type='" + t + "'>" ; switch( t ) { case "object" : case "array" : if ( o ) { if ( typeof( o.constructor ) == "undefined" ) { str += "constructor undefined" ; } else { for ( i in o ) { str += "\r\n" + object2Xml( o[ i ] , ( i ) , tag , tag , ignore , rec + 1 ) ; } } } else { str += "null" ; } break ; case "undefined" : str += "undefined" ; break ; case "string" : str += "/g , "]]>" ) + "]" + "]>" ; break ; case "function" : if ( ignore.indexOf( "function" ) >= 0 ) str += "IGNORED" ; else str += "" ; break ; default : str += ( "" + o ) ; } return str + "" ; } function object2Str( o , name , ignore , rec ) { if ( typeof( ignore ) == 'undefined' ) ignore = "" ; if ( typeof( rec ) == 'undefined' ) rec = 0 ; // typeof retorna "number," "string," "boolean," "object," "function," and "undefined." var t = typeof( o ) ; if ( t == "object" && o && o.constructor == Array ) t = "array" ; for( var str = "" , i = 0 ; i < rec ; i++ ) str += "\t" ; str += "" + name + "(" + t + "){" ; switch( t ) { case "object" : case "array" : if ( o ) { if ( typeof( o.constructor ) == "undefined" ) { str += "constructor undefined" ; } else { for ( var i in o ) { str += "\r\n" + object2Str( o[ i ] , i , ignore , rec + 1 ) ; } } } else { str += "null" ; } break ; case "undefined" : str += "undefined" ; break ; case "string" : str += "" + o + "" ; break ; case "function" : if ( ignore.indexOf( "function" ) >= 0 ) str += "IGNORED" ; else str += "" + o + "" ; break ; default : str += ( "" + o ) ; } return "" + str + "}" ; } function xml2Object( xml , tagp , tag ) { if ( typeof( tagp ) == 'undefined' ) tagp = "object" ; if ( typeof( tag ) == 'undefined' ) tag = "attribute" ; try { if ( !xml || xml == "" ) return null ; // criar object dom var d = _XMLCreateObject() ; if ( !d.loadXML( xml ) ) return null ; // obter node raiz var rootNode = d.selectSingleNode( tagp ) ; if ( !rootNode ) return null ; var o = new Object() ; // iterar pelos nodes abaixo var nodeList = rootNode.selectNodes( tag ) ; var node = ( nodeList ? nodeList.nextNode() : null ) ; var _name , _type , _val ; for( ; node ; node = nodeList.nextNode() ) { // buscar nome , tipo e valor _name = node.getAttribute( "name" ) ; _type = node.getAttribute( "type" ) ; _val = node.text ; switch( _type ) { case "object" : case "array" : o[ _name ] = xml2Object( node.xml , tag , tag ) ; break ; case "undefined" : // nothing todo break ; case "string" : o[ _name ] = ( _val ) ; break ; case "function" : if ( _val.indexOf( "IGNORED" ) == 0 ) o[ _name ] = null ; else o[ _name ] = eval( _val + " ; f ; " ) ; break ; case "number" : o[ _name ] = ( 1 * _val ) ; break ; default : o[ _name ] = ( _val ) ; break ; } } return o ; } catch( e ) { catchErr( e , _className , "xml2Object" ) ; } } function catchErr( e , className , method , args , onlyReturn ) { if ( typeof( e ) == "object" ) { if ( typeof( e.stack ) == "undefined" ) { e.stack = new Array() ; e.stack[ e.stack.length ] = { number : e.number , description : e.description , className : className , method : method , args : args } ; } else { e.stack[ e.stack.length ] = { number : "" , description : "" , className : className , method : method , args : args } ; } } else { e = e + "/" + className + "::" + method ; } if ( "" + onlyReturn == "yes" ) return e ; throw e ; } function isUndefined( obj ) { return typeof( obj ) == "undefined" || ( "" + obj == "undefined"); } function id2HexPath( id , sep ) { var i = "00000000" + ( 1 * id ).toString( 16 ) ; i = i.substr( i.length - 8 , 8 ) ; var s = ( typeof( sep ) == 'undefined' ? "/" : sep ) ; return i.substr( 0 , 2 ) + s + i.substr( 2 , 2 ) + s + i.substr( 4 , 2 ) + s + i.substr( 6 , 2 ) ; } function right( str , n ) { str = "" + str ; return str.substr( ( ( str.length - n ) > 0 ? ( str.length - n ) : 0 ) , n ) ; } function left( str , n ) { str = "" + str ; return str.substr( 0 , n ) ; } function getStringBetween( str , token1 , token2 , def ) { if ( !str || !token1 || !token2 ) return def ; var p1 = str.indexOf( token1 ) + token1.length ; var p2 = str.indexOf( token2 ) ; if ( p1 >= 0 && p2 >= 0 ) return str.substring( p1 , p2 ) ; return def ; } function sizeBytesFormat( bytes ) { bytes *= 1 ; if ( ! bytes > 0 ) return "" ; if ( bytes < 1024 ) return bytes + " bytes" ; if ( bytes < 1024 * 1024 ) { bytes = "" + ( bytes / 1024 ) ; var p = bytes.indexOf( "." ) ; if ( p < 0 ) p = 0 ; return left( bytes , p + 3 ) + " Kbytes" ; } bytes = "" + ( bytes / ( 1024 * 1024 ) ) ; var p = bytes.indexOf( "." ) ; if ( p < 0 ) p = 0 ; return left( bytes , p + 3 ) + " Mbytes" ; } function breakBigWords( str , maxlen , sep ) { if ( typeof( maxlen ) != "number" ) maxlen = 20 ; if ( typeof( sep ) != "string" ) sep = ' ' ; if ( !str || str == "" ) return str ; str = "" + str ; for( var i = 0 , j = 0 ; i < str.length ; i++ ) { if ( str.charAt( i ) != sep ) j++ ; if ( j > maxlen ) { str = str.substring( 0 , i ) + sep + str.substring( i ) j = 0 } } return str ; } function encodeXML( str ) { str = "" + str ; if ( str != "" ) { str = str.replace(/&/g,"&") ; str = str.replace(/\'/g,"'") ; str = str.replace(/\"/g,""") ; str = str.replace(/\n/g,"") ; str = str.replace(/\r/g,"") ; str = str.replace(/\/g,">") ; str = str.replace(/\000/g,"") ; } return str ; } function encodeHTML( str ) { str = "" + str ; if ( str != "" ) { //str = ( "" + str ).replace(/\'/g,"'") ; //str = str.replace(/\"/g,""") ; str = str.replace(/\/g,">") ; } return str ; } function encodeServerURL( str ) { if ( typeof( _server ) != "undefined" && _server ) return _server.URLEncode( str ) ; return encodeURISimple( str ) ; } function encodeServerHTML( str ) { if ( typeof( _server ) != "undefined" && _server ) return _server.HTMLEncode( str ) ; return encodeHTML( str ) ; } function encodeURISimple( str ) { return encodeURI( str ) ; } function decodeURISimple( str ) { return decodeURI( str ) ; } function encodeURIAll( str ) { return encodeURIComponent( str ) ; } function decodeURIAll( str ) { return decodeURIComponent( str ) ; } function encodeUnicode( str ) { return escape( str ) ; } function decodeUnicode( str ) { return unescape( str ) ; } function xmlEnc( str ) { return encodeXML( str ) ; } function htmlEnc( str ) { return encodeHTML( str ) ; } function dhtmlValidateInput( ev , validChars , invalidChars ) { var kc ; if ( document.layers ) kc=ev.which; else kc=ev.keyCode; kc=String.fromCharCode(kc); if ( typeof( validChars ) == 'string' && validChars && validChars.indexOf( kc ) < 0 ) return false ; if ( typeof( invalidChars ) == 'string' && invalidChars && invalidChars.indexOf( kc ) >= 0 ) return false ; return true ; } function dhtmlFillSelect( dom , xpath , valueAttr , textAttr , select , defValue , defText ) { var nodeList = ( dom ? dom.selectNodes( xpath ) : null ) ; var node = ( nodeList ? nodeList.nextNode() : null ) ; select.options.length = 0 ; if ( defText ) { var o = document.createElement( 'OPTION' ) ; o.value = defValue ; o.text = defText ; select.options.add( o ) ; } for( ; node ; node = nodeList.nextNode() ) { var o = document.createElement( 'OPTION' ) ; o.value = node.getAttribute( valueAttr ) ; o.text = node.getAttribute( textAttr ) ; select.options.add( o ) ; } } function dhtmlSelectedIndexByValue( sel , val ) { for( var i = 0 ; i < sel.options.length ; i++ ) if ( sel.options[ i ].value == val ) { sel.selectedIndex = i ; break ; } } function aspForm_setVars( side , varNamesList , prefix , source , trc , sep ) { if ( !varNamesList || varNamesList == "" ) return "" ; if ( typeof( source ) == "undefined" || !source || source == "" ) source = ( side == "server" ? "Request.Form" : "Document.Forms[ 0 ]" ) ; if ( typeof( prefix ) == "undefined" || !prefix || prefix == "" ) prefix = "" ; var s = "" , e = "\r\n" ; var varArr = ( varNamesList.replace( /\s/g , "" ) ).split( "," ) ; for( var i = 0 ; varArr && i < varArr.length ; i++ ) { if ( side == "server" ) { s += "" + e + "var " + prefix + varArr[ i ] + " ; " + e + prefix + varArr[ i ] + " = null ; " + e + "if ( " + source + "( '" + varArr[ i ] + "' ).count == 1 ) " + prefix + varArr[ i ] + " = '' + " + source + "( '" + varArr[ i ] + "' ) ; " + e + "if ( " + source + "( '" + varArr[ i ] + "' ).count > 1 ) { " + e + " " + prefix + varArr[ i ] + " = '' ; " + e + " for( var i = 1 ; i <= " + source + "( '" + varArr[ i ] + "' ).count ; i++ ) {" + e + " " + prefix + varArr[ i ] + " += ( " + prefix + varArr[ i ] + " == '' ? '' : '" + ( typeof( sep ) == "undefined" ? "," : sep ) + "' ) + " + source + "( '" + varArr[ i ] + "' )( i ) ; " + e + " }" + e + "}" if ( trc ) s += e + "ctx.trc.write( 1 , 0 , '" + prefix + varArr[ i ] + " = ' + " + prefix + varArr[ i ] + " ) ; " ; } else { s += "" + e + "var " + prefix + varArr[ i ] + e + prefix + varArr[ i ] + " = null" + e + "if ( " + source + "." + varArr[ i ] + " && " + source + "." + varArr[ i ] + ".value ) " + prefix + varArr[ i ] + " = '' + " + source + "." + varArr[ i ] + ".value" + e + "if ( " + source + "." + varArr[ i ] + " && typeof( " + source + "." + varArr[ i ] + ".length ) != 'undefined' ) {" + e + " " + prefix + varArr[ i ] + " = '' ; " + e + " for( var i = 0 ; i < " + source + "." + varArr[ i ] + ".length ; i++ ) {" + e + " if ( " + source + "." + varArr[ i ] + "[ i ].checked || " + source + "." + varArr[ i ] + ".selectedIndex == i ) " + e + " " + prefix + varArr[ i ] + " += ( " + prefix + varArr[ i ] + " == '' ? '' : '" + ( typeof( sep ) == "undefined" ? "," : sep ) + "' ) + " + source + "." + varArr[ i ] + "[ i ].value" + e + " }" + e + "}" if ( trc ) s += e + "alert( '" + prefix + varArr[ i ] + " = ' + " + prefix + varArr[ i ] + " ) ; " ; } } return s ; } function aspForm_processErr( side , err , source ) { if ( typeof( err ) != "object" || !err ) return "" ; if ( typeof( source ) == "undefined" || !source || source == "" ) source = "Document.Forms[ 0 ]" ; if ( side == "server" ) { var s = "" ; if ( err.msg ) s += "\n alert( '" + err.msg.replace( /'/g , "\\'" ) + "' ) ;" // if ( err.focus ) s += "\n if ( " + source + " && " + source + "." + err.focus + " ) " + source + "." + err.focus + ".focus() ;" ; // if ( err.select ) s += "\n if ( " + source + " && " + source + "." + err.select + " ) " + source + "." + err.select + ".select() ;" ; return s ; } else { if ( err.msg ) alert( err.msg ) ; if ( err.focus ) eval( source + "." + err.focus + ".focus() ;" ) ; if ( err.select ) eval( source + "." + err.select + ".select() ;" ) ; return "" ; } } function yearBisexto( y ) { return ( ( y % 4 == 0 && y % 100 != 0 ) || y % 400 == 0 ) ; } function parseDate( s ) { return parseTimestamp( s + " 00:00:00.0000" ) ; } function parseTime( s ) { var now = new Date() ; return parseTimestamp( now.getFullYear() + "-" + ( now.getMonth() + 1 ) + "-" + now.getDate() + " " + s ) ; } function parseTimestamp( s ) { try { var sd,st,s1,s2,s3,i,c,yr=0,mo=0,da=0,hh=0,mm=0,ss=0,nn=0; if (isUndefined (s) || typeof (s) != "string") return NaN; try { s1 = s.indexOf(' '); if (s1 == -1 || s1 + 1 >= s.length) return NaN; sd = s.substring (0, s1); st = s.substring (s1 + 1); if (st == null) return NaN; s1 = sd.indexOf('-'); if (s1 == -1 || s1 + 1 >= sd.length) return NaN; s2 = sd.indexOf ('-', s1 + 1); if (s2 == -1) return NaN; for (i = 0; i < sd.length; i++) { c = sd.charAt(i); if ((c < '0' || c > '9') && (i != s1 && i != s2)) return NaN; } yr = parseInt (sd.substring (0, s1), 10); mo = parseInt (sd.substring (s1 + 1, s2), 10) - 1; da = parseInt (sd.substring (s2 + 1), 10); if (yr < 1900 || yr > 2099) return NaN; if (mo < 0 || mo > 11) return NaN; if (da < 1) return NaN; switch (mo){ case 3: case 5: case 8: case 10: if (da > 30) return NaN; break; case 1: if (da > 29) return NaN; if (da == 29 && !yearBisexto(yr)) return NaN; break; default: if (da > 31) return NaN; break; } s1 = st.indexOf (':'); if (s1 == -1 || s1 + 1 >= st.length) return NaN; s2 = st.indexOf (':', s1 + 1); if (s2 != -1 && s2 + 1 < st.length) s3 = st.indexOf ('.', s2 + 1); else s3 = -1 for (i = 0; i < st.length; i++) { c = st.charAt(i); if ((c < '0' || c > '9') && (i != s1 && i != s2 && i != s3)) return NaN; } hh = parseInt (st.substring (0, s1), 10); if (s2 != -1) mm = parseInt (st.substring (s1 + 1, s2), 10); else mm = parseInt (st.substring (s1 + 1), 10); if (s2 != -1 && s3 != -1) ss = parseInt (st.substring (s2 + 1, s3), 10); else if (s2 != -1) ss = parseInt (st.substring (s2 + 1), 10); if (s3 != -1) nn = parseInt (st.substring (s3 + 1), 10); } catch (e) { return NaN; } return new Date (yr, mo, da, hh, mm, ss, nn); } catch(e) { return NaN ; } } function formatTimestamp( tt , options ) { try { if ( options == "ms" ) return formatDate( tt , "YYYYMMDD HHMMSSmmm" , "-" ) ; else return formatDate( tt , "YYYYMMDD HHMMSS" , "-" ) ; //r+= tt instanceof Date //r+= Date.prototype.isPrototypeOf( tt ) //r+= typeof( tt ) ; } catch( e ) { catchErr( e , _className , "formatTimestamp" ) ; } } function formatDate( dd , output , outputDaySep ) { try { var d ; if ( typeof( dd ) == "number" ) d = new Date( dd ) ; else if ( typeof( dd ) == "object" ) d = dd ; else if ( typeof( dd ) == "date" ) d = new Date( dd ) ; else if ( typeof( dd ) == "string" ) d = new Date( 1 * dd ) ; else throw Error( 0 , "arg is not a date value (" + typeof( dd ) + ")" ) ; if ( isNaN( d.getFullYear() ) ) throw Error( 0 , "arg is not a date value " ) ; var yyyy = "" + d.getFullYear() ; var mm = ( d.getMonth() + 1 ) ; mm = ( mm < 10 ? "0" + mm : "" + mm ) ; var dd = ( d.getDate() ) ; dd = ( dd < 10 ? "0" + dd : "" + dd ) ; var hh = ( d.getHours() ) ; hh = ( hh < 10 ? "0" + hh : "" + hh ) ; var mi = ( d.getMinutes() ) ; mi = ( mi < 10 ? "0" + mi : "" + mi ) ; var ss = ( d.getSeconds() ) ; ss = ( ss < 10 ? "0" + ss : "" + ss ) ; var ms = ( d.getMilliseconds() ) ; ms = ( ms < 10 ? "00" + ms : ( ms < 100 ? "0" + ms : "" + ms ) ) ; if ( typeof( outputDaySep ) != "string" ) outputDaySep = '-' ; if ( output == "DATE" ) return d ; if ( output == "YYYYMMDD" ) return "" + yyyy + outputDaySep + mm + outputDaySep + dd ; if ( output == "YYYYMMDD HHMMSS" ) return "" + yyyy + outputDaySep + mm + outputDaySep + dd + " " + hh + ":" + mi + ":" + ss ; if ( output == "YYYYMMDD HHMMSSmmm" ) return "" + yyyy + outputDaySep + mm + outputDaySep + dd + " " + hh + ":" + mi + ":" + ss + "." + ms ; if ( output == "DDMMYYYY" ) return "" + dd + outputDaySep + mm + outputDaySep + yyyy ; if ( output == "DDMMYYYY HHMMSS" ) return "" + dd + outputDaySep + mm + outputDaySep + yyyy + " " + hh + ":" + mi + ":" + ss ; if ( output == "DDMMYYYY HHMMSSmmm" ) return "" + dd + outputDaySep + mm + outputDaySep + yyyy + " " + hh + ":" + mi + ":" + ss + "." + ms ; return null ; } catch( e ) { catchErr( e , _className , "formatDate" ) ; } } function validDatetime( val , input , output , outputDaySep ) { var yyyy = 0 , mm , dd , hh , mi , ss , ms ; val = "" + val ; if ( val.match( /^(\d{4})[-/\.]?(\d{1,2})[-/\.]?(\d{1,2})(\s(\d{1,2}):(\d{1,2}):(\d{1,2})(\.(\d{1,3}))?)?$/ ) ) { yyyy = RegExp.$1 ; mm = right( "00" + RegExp.$2 , 2 ) ; dd = right( "00" + RegExp.$3 , 2 ) ; } else if ( val.match( /^(\d{1,2})[-/\.]?(\d{1,2})[-/\.]?(\d{4})(\s(\d{1,2}):(\d{1,2}):(\d{1,2})(\.(\d{1,3}))?)?$/ ) ) { yyyy = RegExp.$3 ; mm = right( "00" + RegExp.$2 , 2 ) ; dd = right( "00" + RegExp.$1 , 2 ) ; } if ( !yyyy ) return null ; hh = right( "00" + RegExp.$5 , 2 ) ; mi = right( "00" + RegExp.$6 , 2 ) ; ss = right( "00" + RegExp.$7 , 2 ) ; ms = right( "000" + RegExp.$9, 3 ) ; if ( input == "YYYYMMDD" && val.length >= 12 ) return null ; var dt = new Date( yyyy , ( 1 * mm ) - 1 , dd , hh , mi , ss , ms ) ; if ( typeof( outputDaySep ) != "string" ) outputDaySep = '-' ; var s1 = "" + yyyy + outputDaySep + mm + outputDaySep + dd + " " + hh + ":" + mi + ":" + ss + "." + ms ; var s2 = "" + dt.getFullYear() + outputDaySep + right( "00" + ( dt.getMonth() + 1 ) , 2 ) + outputDaySep + right( "00" + dt.getDate() , 2 ) + " " + right( "00" + dt.getHours() , 2 ) + ":" + right( "00" + dt.getMinutes() , 2 ) + ":" + right( "00" + dt.getSeconds() , 2 ) + "." + right( "00" + dt.getMilliseconds() , 3 ) ; if ( s1 != s2 ) return null ; // alert( s1 + " - " + s2 ) ; if ( output == "DATE" ) return dt ; if ( output == "YYYYMMDD" ) return s1.substr( 0 , 10 ) ; if ( output == "YYYYMMDD HHMMSS" ) return s1.substr( 0 , 19 ) ; if ( output == "YYYYMMDD HHMMSSmmm" ) return s1.substr( 0 , 23 ) ; if ( output == "DDMMYYYY" ) return "" + dd + outputDaySep + mm + outputDaySep + yyyy ; if ( output == "DDMMYYYY HHMMSS" ) return "" + dd + outputDaySep + mm + outputDaySep + yyyy + " " + hh + ":" + mi + ":" + ss ; if ( output == "DDMMYYYY HHMMSSmmm" ) return "" + dd + outputDaySep + mm + outputDaySep + yyyy + " " + hh + ":" + mi + ":" + ss + "." + ms ; return null ; } function dateAdd( what , val , d ) { try { if ( what == "ms" ) d.setMilliseconds( d.getMilliseconds() + val ) ; else if ( what == "ss" ) d.setSeconds( d.getSeconds() + val ) ; else if ( what == "mi" ) d.setMinutes( d.getMinutes() + val ) ; else if ( what == "hh" ) d.setHours( d.getHours() + val ) ; else if ( what == "dd" ) d.setDate( d.getDate() + val ) ; else if ( what == "mm" ) d.setMonth( d.getMonth() + val ) ; else if ( what == "yyyy" ) d.setFullYear( d.getFullYear() + val ) ; return d ; } catch( e ) { catchErr( e , _className , "dateAdd" ) ; } }function validateValue( value , validChars , invalidChars ) { value = "" + value ; if ( typeof( validChars ) == 'string' && validChars ) for( var i = 0 ; i < value.length ; i++ ) if ( validChars.indexOf( value.charAt( i ) ) < 0 ) return value.charAt( i ) ; if ( typeof( invalidChars ) == 'string' && invalidChars ) for( var i = 0 ; i < value.length ; i++ ) if ( invalidChars.indexOf( value.charAt( i ) ) >= 0 ) return value.charAt( i ) ; return null ; } function validMoney( val ) { val = "" + val ; if ( val.search( /^\d{1,7}$/ ) == 0 ) return 100 * val ; if ( val.search( /^\d{0,7}[\.\,]\d$/ ) == 0 ) return 10 * val.replace( /[\.\,]/g , "" ) ; if ( val.search( /^\d{0,7}[\.\,]\d\d$/ ) == 0 ) return 1 * val.replace( /[\.\,]/g , "" ) ; if ( val.search( /^\d{1,3}[\.\,]\d{3}[\.\,]\d$/ ) == 0 ) return 10 * val.replace( /[\.\,]/g , "" ) ; if ( val.search( /^\d{1,3}[\.\,]\d{3}[\.\,]\d\d$/ ) == 0 ) return 1 * val.replace( /[\.\,]/g , "" ) ; if ( val.search( /^\d{1}[\.\,]\d{3}[\.\,]\d{3}[\.\,]\d$/ ) == 0 ) return 10 * val.replace( /[\.\,]/g , "" ) ; if ( val.search( /^\d{1}[\.\,]\d{3}[\.\,]\d{3}[\.\,]\d\d$/ ) == 0 ) return 1 * val.replace( /[\.\,]/g , "" ) ; return -1 ; } function validEmail( val , list ) { // neste caso vou partir a lista em N endereços a parsar cada um deles... if ( list == "list" ) { if ( !val ) return "Lista vazia." ; va1 = ( "" + val ) ; val = val.replace( /\s/g , "" ) ; val = val.replace( /,/g , ";" ) ; if ( !val ) return "Lista vazia." ; var arrVal = val.split( ";" ) ; if ( !arrVal ) return "Lista sem endereços." ; for( var i = 0 ; i < arrVal.length ; i++ ) { if ( arrVal[ i ] ) { var msg = validEmailPainInTheAss( arrVal[ i ] ) ; if ( msg ) return msg + " (posição " + ( i + 1 ) + ")" ; } } return null ; } //return val.search( /^[\w\-,; \.@]+@[\w\-,; @]+\.[\w\-,; \.@]+$/i ) == 0 ; // o que existia permitia algo do tipo : [ ricardo sa ] ricardo.sa@newvalue.pt //return val.search( /^(.+)@(.+)\.(.+)$/ ) == 0 ; // este nao pode ser pois tenho situacoes em que posso especificar mais de um email... // vou afinal usar este pois o nucleo Backoffice utiliza-o... return validEmailPainInTheAss( val ) == null ; //from hso /[\w\-]+\@[\w\-]+\.[\w\-]+/i; } function validEmailPainInTheAss (xpto) { var emailStr= "" + xpto /* The following pattern is used to check if the entered e-mail address fits the user@domain format. It also is used to separate the username from the domain. */ var emailPat=/^(.+)@(.+)$/ /* The following string represents the pattern for matching all special characters. We don't want to allow special characters in the address. These characters include ( ) < > @ , ; : \ " . [ ] */ var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" /* The following string represents the range of characters allowed in a username or domainname. It really states which chars aren't allowed. */ var validChars="\[^\\s" + specialChars + "\]" /* The following pattern applies if the "user" is a quoted string (in which case, there are no rules about which characters are allowed and which aren't; anything goes). E.g. "jiminy cricket"@disney.com is a legal e-mail address. */ var quotedUser="(\"[^\"]*\")" /* The following pattern applies for domains that are IP addresses, rather than symbolic names. E.g. joe@[123.124.233.4] is a legal e-mail address. NOTE: The square brackets are required. */ var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/ /* The following string represents an atom (basically a series of non-special characters.) */ var atom=validChars + '+' /* The following string represents one word in the typical username. For example, in john.doe@somewhere.com, john and doe are words. Basically, a word is either an atom or quoted string. */ var word="(" + atom + "|" + quotedUser + ")" // The following pattern describes the structure of the user var userPat=new RegExp("^" + word + "(\\." + word + ")*$") /* The following pattern describes the structure of a normal symbolic domain, as opposed to ipDomainPat, shown above. */ var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$") /* Finally, let's start trying to figure out if the supplied address is valid. */ /* Begin with the coarse pattern to simply break up user@domain into different pieces that are easy to analyze. */ var matchArray=emailStr.match(emailPat) if (matchArray==null) { /* Too many/few @'s or something; basically, this address doesn't even fit the general mould of a valid e-mail address. */ return "Endereço de email incorrecto.\n username@servidor.domínio" } var user=matchArray[1] var domain=matchArray[2] // See if "user" is valid if (user.match(userPat)==null) { // user is not valid return "Username inválido.\n username@____.___" } /* if the e-mail address is at an IP address (as opposed to a symbolic host name) make sure the IP address is valid. */ var IPArray=domain.match(ipDomainPat) if (IPArray!=null) { // this is an IP address for (var i=1;i<=4;i++) { if (IPArray[i]>255) { return "Endereço IP de destino inválido!" } } return null } // Domain is symbolic name var domainArray=domain.match(domainPat) if (domainArray==null) { return "Domínio inválido.\n ___@___.domínio" } /* domain name seems valid, but now make sure that it ends in a three-letter word (like com, edu, gov) or a two-letter word, representing country (uk, nl), and that there's a hostname preceding the domain or country. */ /* Now we need to break up the domain to get a count of how many atoms it consists of. */ var atomPat=new RegExp(atom,"g") var domArr=domain.match(atomPat) var len=domArr.length if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) { // the address must end in a two letter or three letter word. return "Domínio inválido.\n ___@___.domínio" } // Make sure there's a host name preceding the domain. if (len<2) { return "Indique o nome do servidor! ___@servidor.___" } return null; } function validPhone(xpto) { var tlf= "" + xpto var valid = "0123456789"; var ok = "yes"; var temp; for (var i=0; i=970000000)) {ok="no"} else if ((tlf>=297000000)&&(tlf<=910000000)) {ok="no"} else if ((tlf>=920000000)&&(tlf<=930000000)) {ok="no"} else if ((tlf>=940000000)&&(tlf<=960000000)) {ok="no"} if (ok == "no") { //alert("Nº de telefone inválido!"); return false; } else return true; } function validPhone2(val){return (val.search(/^9[136]\d{7}$/) != -1);} function validPhone3( val ) { var v = val.search(/^\+?\d{0,5}[\s\.]?\d{9}$/) ; return v == 0 ; } function validURL( val ) { //var v = val.search(/^(.+)\.(.+)$/) ; //return v == 0 ; return val.indexOf( "http" ) == 0 || val.indexOf( 'www' ) != 0 ; } function cryptGenSalt() { var i,n; var cTxt = "omQWirjdmdERTYUIONPIOASDFGHJKLauZXCBMJUFGNOPQRSldiensmTUVWXYZABCDEFksksGHIJKLMzz"; i = cTxt.length-3; n = Math.round(i * Math.random()); if ((n % 2) != 0) n++; return cTxt.substring(n,n+2); } function cryptGenPIN( maxn ) { var res = ""; var cont = 0; for( cont; cont < maxn; cont++ ){ n = Math.round( 9 * Math.random()); res += n ; } return res; } function TS_constr() { var d = new Date() ; d = d.getTime() ; return d ; } function TS_diff( di , df , unit ) { if ( !di ) di = TS_constr() ; if ( !df ) df = TS_constr() ; return _TS_diffFormat( df - di , "ms" , unit ) ; } function _TS_diffFormat( d , ms_seg , unit ) { if ( ms_seg == "seg" ) d *= 1000 ; switch( unit ) { case "ms" : return d ; case "s" : case "seg" : return Math.floor ( d / ( 1000 ) ) ; case "s.ms" : case "seg.ms" : return ( d * 1.00 / ( 1000 ) ) ; case "mi" : return Math.floor ( d / ( 1000 * 60 ) ) ; case "h" : return Math.floor ( d * 1.00 / ( 1000 * 60 * 60 ) ) ; case "hh:mm:ss.nnn" : var hh = _TS_diffFormat( d , "ms" , "h" ) ; var mm = _TS_diffFormat( d , "ms" , "mi" ) ; var ss = _TS_diffFormat( d , "ms" , "s" ) ; var nnn = _TS_diffFormat( d , "ms" , "ms" ) ; if ( hh < 10 ) hh = "0" + hh ; mm %= ( 60 ) ; if ( mm < 10 ) mm = "0" + mm ; ss %= ( 60 ) ; if ( ss < 10 ) ss = "0" + ss ; nnn %= ( 1000 ) ; if ( nnn < 10 ) nnn = "00" + nnn ; else if ( nnn < 100 ) nnn = "0" + nnn ; return hh + ":" + mm + ":" + ss + ":" + nnn ; case "hh:mm" : var hh = _TS_diffFormat( d , "ms" , "h" ) ; var mm = _TS_diffFormat( d , "ms" , "mi" ) ; if ( hh < 10 ) hh = "0" + hh ; mm %= ( 60 ) ; if ( mm < 10 ) mm = "0" + mm ; return hh + ":" + mm ; default : return NaN ; } } function _XMLHTTPCreateObject( serverORclient ) { var xmlhttp = null ; if ( serverORclient == "server" ) { try { // 2008-03-04 nao sei por que motivo mas tenho erros no this.transformNodePreservingEncoding // ao efectuar o transform de xml com xsl // isto se tirar a versao ,ie , ficar Msxml2.ServerXMLHTTP // na maquina site prd qd ponho sem versao vai utilizar o 3.0 - e dá erro.. // nas vms de dsv do quiosque , o default é o 5.0 e é o que funciona // procurar na net : sem conclusoes // http://www.google.com.br/search?hl=pt-BR&q=Msxml2.ServerXMLHTTP+xsl+version++%22The+parameter+is+incorrect%22+&meta= // CONCLUSAO : tento criar o 4.0 , se der erro crio o DEFAULT // NAO PERCEBO E A RELACAO DESTE OBJECTO COM O XML DOM xmlhttp = new ActiveXObject( "Msxml2.ServerXMLHTTP.4.0" ) ; } catch ( e ) { try { xmlhttp = new ActiveXObject( "Msxml2.ServerXMLHTTP" ) ; } catch ( e ) { xmlhttp = null ; } } return xmlhttp ; } try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch ( e ) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch ( e ) { xmlhttp = null ; } } if ( !xmlhttp && typeof( XMLHttpRequest ) != 'undefined' ) { xmlhttp = new XMLHttpRequest(); } return xmlhttp ; } function XMLHTTPSendData( serverORclient , method , url , async , login , passwd , inContentType , inContent , responseType , raiseException , header , value , resolveTimeout // = 0 * 1000 // def - infin - resolve hotname to ip , connectTimeout // = 60 * 1000 // def - connect socket - connect , sendTimeout // = 30 * 1000 // def - send - send data , receiveTimeout // = 30 * 1000 // def - receive - receive data , proxyServer , proxyBypassList , proxyLogin , proxyPassword ) { try { _xmlhttpObject_fase = 1 ; if ( typeof( _xmlhttpObject ) == "undefined" ) // se nao existe var obter var _xmlhttpObject = _XMLHTTPCreateObject( serverORclient ) ; else if ( !_xmlhttpObject ) // se existe e ainda esta a null , obter... _xmlhttpObject = _XMLHTTPCreateObject( serverORclient ) ; // se mesmo assim nao conseguir criar o objecto... if ( !_xmlhttpObject ) { return null ; } _xmlhttpObject_fase = 2 ; // set do timeout se indicado if ( ( typeof( resolveTimeout ) == "number" || typeof( resolveTimeout ) == "string" ) && ( 1 * resolveTimeout ) >= 0 ) _xmlhttpObject.setTimeouts ( resolveTimeout , connectTimeout , sendTimeout , receiveTimeout ) ; _xmlhttpObject_fase = 3 ; // set proxy behaviour... // SXH_PROXY_SET_DEFAULT(0) // SXH_PROXY_SET_DIRECT(1) // SXH_PROXY_SET_PROXY(2) , "proxy server" , "exception list" if ( typeof( proxyServer ) == "string" && proxyServer ) _xmlhttpObject.setProxy( 2 , proxyServer , proxyBypassList ) ; if ( typeof( proxyLogin ) == "string" && proxyLogin ) _xmlhttpObject.setProxyCredentials( proxyLogin , proxyPassword ) ; //throw Error( 11111 , "Teste excepcao..." ) ; //outro teste com url falso tipo "http://www.sssss.ssss" _xmlhttpObject_fase = 4 ; // open com ou sem login if ( typeof( login ) == "string" && login ) _xmlhttpObject.open( method , url , ( async ? true : false ) , login , passwd ) ; else _xmlhttpObject.open( method , url , ( async ? true : false ) ) ; _xmlhttpObject_fase = 5 ; // set req header if ( typeof( inContentType ) == "string" && inContentType ) _xmlhttpObject.setRequestHeader( "Content-Type" , inContentType ) ; _xmlhttpObject_fase = 6 ; // set header generico if ( typeof ( header ) == "string" && header ) _xmlhttpObject.setRequestHeader( header , value ) ; // NOTE: disable any server cache or proxy for this item //_xmlhttpObject.setRequestHeader( 'cache-control', 'no-store' ); // Mimic browser form post... //_xmlhttpObject.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ); // For SOAP and XML posting //_xmlhttpObject.setRequestHeader( "Content-Type", "text/xml" ); // a partir de aqui posso aceder ao attr status do objecto _xmlhttpObject_fase = 7 ; // send e save result status _xmlhttpObject.send( inContent ) ; _xmlhttpObject_fase = 8 ; // se e para gerar exception e o status != 200 , do it if ( typeof( raiseException ) == "string" && raiseException == "exception" && _xmlhttpObject.status != 200 ) throw Error( _xmlhttpObject.status , _xmlhttpObject.statusText ) ; _xmlhttpObject_fase = 9 ; // por valores trace... _xmlhttpObject_status = _xmlhttpObject.status ; _xmlhttpObject_statusText = new String ( _xmlhttpObject.statusText ) ; // obter o resultado... if ( responseType == "text" ) return _xmlhttpObject.responseText ; if ( responseType == "xml" ) return _xmlhttpObject.responseXML ; if ( responseType == "body" ) return _xmlhttpObject.responseBody ; if ( responseType == "stream" ) return _xmlhttpObject.responseStream ; return null ; } catch( e ) { // RSS - 2006-04-04 por motivos que n conheco nao consigo devolver excepcao (throw) // de um objecto COM para fora .... fica sempre por return.. // obter dados com try catch if ( typeof( _xmlhttpObject ) != "undefined" ) { try { e.status = _xmlhttpObject.status ; e.statusText = new String ( _xmlhttpObject.statusText ) ; } catch( ee ) { e.status = 666 ; e.statusText = new String ( e.description ) ; } } if ( typeof( _xmlhttpObject_status ) != "undefined" ) _xmlhttpObject_status = e.status ; if ( typeof( _xmlhttpObject_statusText ) != "undefined" ) _xmlhttpObject_statusText = e.statusText ; //_xmlhttpObject_fase = _xmlhttpObject_fase ; // catch e throw it again if ( typeof( raiseException ) == "string" && raiseException == "exception" ) return catchErr( e , "XMLHTTPSendData" ) ; return null ; } } function XMLHTTPSendArgsInXmlPost( serverORclient /* , method = post */ , url /* , async = false , login = null , passwd = null */ /* , inContentType , inContent = args para qs */ , responseType , raiseException , header , value , resolveTimeout // = 0 * 1000 // def - infin - resolve hotname to ip , connectTimeout // = 60 * 1000 // def - connect socket - connect , sendTimeout // = 30 * 1000 // def - send - send data , receiveTimeout // = 30 * 1000 // def - receive - receive data , proxyServer , proxyBypassList , proxyLogin , proxyPassword , nodep , node , args ) { var dom = new ActiveXObject( typeof( _MSXMLProgId ) == "string" && _MSXMLProgId ? _MSXMLProgId : "MSXML2.DOMDocument" ) ; var domCtx = dom.createElement( nodep ) ; domCtx = dom.appendChild( domCtx ) ; var domArgs = dom.createElement( node ) ; domArgs = domCtx.appendChild( domArgs ) ; for( var i = 16 ; i < arguments.length ; i += 2 ) { var domArg = dom.createElement( arguments[ i ] ) ; domArg.text = arguments[ i + 1 ] ; domArgs.appendChild( domArg ) ; } return XMLHTTPSendData( serverORclient , "POST" , url , false , null , null , "text/xml" , dom , responseType , raiseException , header , value , resolveTimeout // = 0 * 1000 // def - infin - resolve hotname to ip , connectTimeout // = 60 * 1000 // def - connect socket - connect , sendTimeout // = 30 * 1000 // def - send - send data , receiveTimeout // = 30 * 1000 // def - receive - receive data , proxyServer , proxyBypassList , proxyLogin , proxyPassword ) ; } function XMLHTTPSendArgsInPost( serverORclient /* , method = post */ , url /* , async = false , login = null , passwd = null */ /* , inContentType , inContent = args para qs */ , responseType , raiseException , header , value , resolveTimeout // = 0 * 1000 // def - infin - resolve hotname to ip , connectTimeout // = 60 * 1000 // def - connect socket - connect , sendTimeout // = 30 * 1000 // def - send - send data , receiveTimeout // = 30 * 1000 // def - receive - receive data , proxyServer , proxyBypassList , proxyLogin , proxyPassword , args ) { for( var i = 14 , qs = "" ; i < arguments.length ; i += 2 ) qs += ( qs ? "&" : "" ) + arguments[ i ] + ( i + 1 < arguments.length ? '=' + arguments[ i + 1 ] : "" ) ; return XMLHTTPSendData( serverORclient , "POST" , url , false , null , null , "application/x-www-form-urlencoded" , qs , responseType , raiseException , header , value , resolveTimeout // = 0 * 1000 // def - infin - resolve hotname to ip , connectTimeout // = 60 * 1000 // def - connect socket - connect , sendTimeout // = 30 * 1000 // def - send - send data , receiveTimeout // = 30 * 1000 // def - receive - receive data , proxyServer , proxyBypassList , proxyLogin , proxyPassword ) ; } function _XMLCreateObject( MSXMLProgId ) { var _dom = null ; _dom = new ActiveXObject( typeof( MSXMLProgId ) == "string" && MSXMLProgId ? MSXMLProgId : ( typeof( _MSXMLProgId ) == "string" && _MSXMLProgId ? _MSXMLProgId : "MSXML2.DOMDocument" ) ) ; _dom.validateOnParse = false ; _dom.async = false ; _dom.setProperty( "SelectionLanguage" , "XPath" ) ; _dom.preserveWhiteSpace = true ; return _dom ; }