zoneminder/web/mootools.ext.js

82 lines
2.3 KiB
JavaScript

/*
* MooTools Extension script to support custom extensions to mootools
*/
var zmMooToolsVersion = '1.00';
/*
* Firstly, lets check that mootools has been included and thus is present
*/
if ( typeof(MooTools) == "undefined" )
{
alert( "MooTools not found! Please download from\nhttp://mootools.net and install in ZoneMinder web root." );
}
else
{
//console.log( "Got MooTools version "+MooTools.version );
/* Version check */
if ( MooTools.version < zmMooToolsVersion )
{
alert( "MooTools version "+MooTools.version+" found.\nVersion "+zmMooToolsVersion+" required, please upgrade." );
}
/*
* Element class extension to add getAncestor function to allow searches
* up the DOM tree for ancestor element of give type, and class optionally
*/
Element.extend({
getAncestor: function( tagName, className )
{
if ( !tagName )
return( null );
tagName = tagName.toLowerCase();
var ancestor = this;
var ancestorTag = null;
while( (ancestor = $(ancestor).getParent()) && $(ancestor) != document )
{
if ( $(ancestor).getTag() != tagName )
continue;
if ( className && !$(ancestor).hasClass( className ) )
continue;
return( $(ancestor) );
}
return( null );
}
});
/*
* Ajax class extenstion to allow for request timeouts
*/
Ajax = Ajax.extend({
request: function( data )
{
if ( this.options.timeout )
{
if ( this.timeoutTimer )
{
this.removeTimer();
}
this.timeoutTimer = window.setTimeout( this.callTimeout.bindAsEventListener(this), this.options.timeout );
this.addEvent( 'onComplete', this.removeTimer );
}
this.parent( data );
},
callTimeout: function ()
{
this.transport.abort();
this.onFailure();
if ( this.options.onTimeout )
{
this.options.onTimeout();
}
},
removeTimer: function()
{
window.clearTimeout( this.timeoutTimer );
this.timeoutTimer = 0;
}
});
}