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 += "| " + i + " | " + htmlEnc( "" + e[ i ] ) + " |
" ;
}
}
else
str += "| " + htmlEnc( "" + e ) + " |
" ;
str += "
" ;
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 += "" + tagp + ">" ;
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 += "" + tagp + ">" ;
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 + "" + tagp + ">" ;
}
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 ;
}