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' ) {
Node = new Object ( ) ;
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 ) ;
for ( name in Node . prototype ) {
node [ name ] = Node . prototype [ name ] ;
}
return node ;
}
addNodePrototype = function ( node ) {
if ( ! node ) {
node = document . getElementsByTagName ( 'body' ) ;
node = node . item ( 0 )
}
if ( node . nodeType == 1 ) {
for ( name in Node . prototype ) {
// node[name]=Node.prototype[name];
eval ( 'node.' + name + '=Node.prototype.' + name + ';' ) ;
}
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-03-24 18:35:24 +03:00
}