2010-03-24 18:35:24 +03:00
/ * *
* ownCloud - ajax frontend
*
* @ author Robin Appelman
* @ copyright 2010 Robin Appelman icewind1991 @ gmail . com
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation ; either
* version 3 of the License , or any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library . If not , see < http : //www.gnu.org/licenses/>.
*
* /
//The callBack object provides an easy way to pass a member of an object as callback parameter and makes sure that the 'this' is always set correctly when called.
callBack = function ( func , obj ) {
2010-03-29 17:25:00 +04:00
this . id = callBack . callBacks . length ;
callBack . callBacks [ this . id ] = this ;
2010-03-24 18:35:24 +03:00
this . func = func ;
this . obj = obj ;
}
2010-03-29 17:25:00 +04:00
callBack . callBacks = Array ( ) ;
callBack . call = function ( id , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 ) {
callback = callBack . callBacks [ id ] ;
if ( callback ) {
2010-04-04 18:50:04 +04:00
return callback . func . call ( callback . obj , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 ) ;
2010-03-29 17:25:00 +04:00
}
}
2010-03-24 18:35:24 +03:00
callBack . prototype = function ( arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 ) {
2010-04-04 18:50:04 +04:00
return this . call ( false , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 ) ;
2010-03-24 18:35:24 +03:00
}
callBack . prototype . func = false ;
callBack . prototype . obj = false ;
callBack . prototype . call = function ( dummy , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 ) {
2010-04-04 18:50:04 +04:00
return this . func . call ( this . obj , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 ) ;
2010-03-24 18:35:24 +03:00
}
callBack . prototype . apply = function ( dummy , arguments ) {
2010-04-09 01:59:19 +04:00
return this . func . apply ( this . obj , arguments ) ;
2010-03-24 18:35:24 +03:00
}
//provide a simple way to add things to the onload
OC _onload = new Object ( ) ;
OC _onload . items = new Array ( ) ;
2010-04-09 01:59:19 +04:00
OC _onload . itemsPriority = new Array ( ) ;
OC _onload . add = function ( callback , priority ) {
if ( priority ) {
OC _onload . itemsPriority [ OC _onload . items . length ] = callback ;
} else {
OC _onload . items [ OC _onload . items . length ] = callback ;
}
2010-03-24 18:35:24 +03:00
}
OC _onload . run = function ( ) {
2010-04-09 01:59:19 +04:00
for ( index in OC _onload . itemsPriority ) {
if ( OC _onload . itemsPriority [ index ] . call ) {
OC _onload . itemsPriority [ index ] . call ( ) ;
}
}
for ( index in OC _onload . items ) {
if ( OC _onload . items [ index ] . call ) {
OC _onload . items [ index ] . call ( ) ;
}
}
}
//implement Node.prototype under IE
if ( typeof Node == 'undefined' ) {
2010-04-19 21:46:42 +04:00
Node = function ( ) { } ;
2010-04-09 01:59:19 +04:00
Node . prototype = new Object ( ) ;
tmpObj = new Object ( ) ;
tmpObj . prototype = document . createElement ;
document . createElementNative = document . createElement ;
tmpObj = null ;
document . createElement = function ( tagName ) {
// alert(tagName);
node = document . createElementNative ( tagName ) ;
2010-04-19 21:46:42 +04:00
var proto = new Node ( )
2010-04-30 18:49:09 +04:00
var name ;
2010-04-19 21:46:42 +04:00
for ( name in proto ) {
node [ name ] = proto [ name ] ;
2010-04-09 01:59:19 +04:00
}
return node ;
}
addNodePrototype = function ( node ) {
if ( ! node ) {
node = document . getElementsByTagName ( 'body' ) ;
node = node . item ( 0 )
}
if ( node . nodeType == 1 ) {
2010-04-19 21:46:42 +04:00
var proto = new Node ( )
for ( name in proto ) {
node [ name ] = proto [ name ] ;
}
2010-04-09 01:59:19 +04:00
if ( node . hasChildNodes ) {
var childs = node . childNodes ;
for ( var i = 0 ; i < childs . length ; i ++ ) {
addNodePrototype ( childs [ i ] ) ;
}
}
}
}
OC _onload . add ( new function ( ) { addNodePrototype ( document . documentElement ) ; } ) ;
OC _onload . add ( addNodePrototype , true ) ;
2010-04-19 21:46:42 +04:00
}
function getStyle ( x , styleProp )
{
if ( x . currentStyle ) {
var y = x . currentStyle [ styleProp ] ;
} else if ( window . getComputedStyle ) {
var y = document . defaultView . getComputedStyle ( x , null ) . getPropertyValue ( styleProp ) ;
}
return y ;
}
Node . prototype . getStyle = function ( styleProp ) {
return getStyle ( this , styleProp )
}
Node . prototype . clearNode = function ( ) {
if ( this . hasChildNodes ( ) ) {
while ( this . childNodes . length >= 1 ) {
this . removeChild ( this . firstChild ) ;
}
}
}
setDebug = function ( text ) {
node = document . getElementById ( 'debug' ) ;
if ( node ) {
node . clearNode ( ) ;
node . appendChild ( document . createTextNode ( text ) ) ;
}
}
arrayMerge = function ( array1 , array2 ) {
var array = Array ( ) ;
for ( i in array1 ) {
array [ i ] = array1 [ i ] ;
}
for ( i in array2 ) {
array [ i ] = array2 [ i ] ;
}
return array ;
}
if ( ! Math . sign ) {
Math . sign = function ( x ) {
return x / Math . abs ( x ) ;
}
}
if ( ! Node . prototype . clearNode ) {
Node . prototype . clearNode = function ( ) {
if ( this . hasChildNodes ( ) ) {
while ( this . childNodes . length >= 1 ) {
this . removeChild ( this . firstChild ) ;
}
}
}
}
getTimeString = function ( ) {
var date = new Date ( ) ;
var months = new Array ( 12 ) ;
months [ 0 ] = "Jan" ;
months [ 1 ] = "Feb" ;
months [ 2 ] = "Mar" ;
months [ 3 ] = "Apr" ;
months [ 4 ] = "May" ;
months [ 5 ] = "Jun" ;
months [ 6 ] = "Jul" ;
months [ 7 ] = "Aug" ;
months [ 8 ] = "Sep" ;
months [ 9 ] = "Oct" ;
months [ 10 ] = "Nov" ;
months [ 11 ] = "Dec" ;
return date . getDate ( ) + ' ' + months [ date . getMonth ( ) ] + ' ' + date . getFullYear ( ) + ' ' + date . getHours ( ) + ':' + date . getMinutes ( ) ;
2010-03-24 18:35:24 +03:00
}