195 lines
4.9 KiB
JavaScript
195 lines
4.9 KiB
JavaScript
if( typeof(_ccsjQ) == 'undefined' )
|
|
{
|
|
var _ccsjQ = jQuery.noConflict();
|
|
}
|
|
|
|
(function($){
|
|
$.ccs = {
|
|
//----------------------------------------------
|
|
// $.ccs.register method; based on jQuery UI
|
|
//----------------------------------------------
|
|
register: function( widget, base, obj, short){
|
|
var bits = widget.split('.');
|
|
var namespace = bits[0];
|
|
var name = bits[1];
|
|
|
|
if( obj && !short ){
|
|
short = obj;
|
|
obj = base;
|
|
base = $.ccsBase;
|
|
} else if( !obj && !short ){
|
|
obj = base;
|
|
base = $.ccsBase;
|
|
}
|
|
|
|
$[ namespace ] = $[ namespace ] || {};
|
|
|
|
if( $[ namespace ][ name ] ){
|
|
return;
|
|
}
|
|
|
|
$[ namespace ][ name ] = function( options, element){
|
|
if( arguments.length ){
|
|
this._instantiate( options, element );
|
|
}
|
|
};
|
|
|
|
var newBase = new base();
|
|
newBase.options = $.extend( true, {}, newBase.options );
|
|
$[ namespace ][ name ].prototype = $.extend( true, newBase, obj );
|
|
|
|
if( !short ){
|
|
short = namespace + name;
|
|
}
|
|
|
|
$.ccs.bridge( short, $[ namespace ][ name ] );
|
|
},
|
|
|
|
//----------------------------------------------
|
|
// $.ccs.bridge method; taken from jQuery UI
|
|
//
|
|
// jQuery UI Widget 1.8.16
|
|
//
|
|
// Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
|
// Dual licensed under the MIT or GPL Version 2 licenses.
|
|
// http://jquery.org/license
|
|
//
|
|
// http://docs.jquery.com/UI/Widget
|
|
//----------------------------------------------
|
|
bridge: function( name, object ) {
|
|
$.fn[ name ] = function( options ) {
|
|
var isMethodCall = typeof options === "string",
|
|
args = Array.prototype.slice.call( arguments, 1 ),
|
|
returnValue = this;
|
|
|
|
// allow multiple hashes to be passed on init
|
|
options = !isMethodCall && args.length ?
|
|
$.extend.apply( null, [ true, options ].concat(args) ) :
|
|
options;
|
|
|
|
// prevent calls to internal methods
|
|
if ( isMethodCall && options.charAt( 0 ) === "_" ) {
|
|
return returnValue;
|
|
}
|
|
|
|
if ( isMethodCall ) {
|
|
this.each(function() {
|
|
var instance = $.data( this, name ),
|
|
methodValue = instance && $.isFunction( instance[options] ) ?
|
|
instance[ options ].apply( instance, args ) :
|
|
instance;
|
|
|
|
if ( methodValue !== instance && methodValue !== undefined ) {
|
|
returnValue = methodValue;
|
|
return false;
|
|
}
|
|
});
|
|
} else {
|
|
this.each(function() {
|
|
var instance = $.data( this, name );
|
|
if ( instance ) {
|
|
instance.option( options || {} )._init();
|
|
} else {
|
|
$.data( this, name, new object( options, this ) );
|
|
}
|
|
});
|
|
}
|
|
|
|
return returnValue;
|
|
};
|
|
},
|
|
|
|
util: {
|
|
//----------------------------------------------
|
|
// Fits an image (or other box) inside a bigger box
|
|
//----------------------------------------------
|
|
fitImage: function( imageDims, boxDims ){
|
|
|
|
var newSize = {},
|
|
aspect = imageDims['w'] / imageDims['h'];
|
|
|
|
if( (imageDims['w'] <= boxDims['w']) || (imageDims['h'] <= boxDims['h']) ){
|
|
return {'w': imageDims['w'], 'h': imageDims['h']};
|
|
}
|
|
|
|
newSize['w'] = boxDims['w'];
|
|
newSize['h'] = newSize['w'] / aspect;
|
|
|
|
if( newSize['h'] < boxDims['h'] ){
|
|
newSize['h'] = boxDims['h'];
|
|
newSize['w'] = newSize['h'] * aspect;
|
|
}
|
|
|
|
return {
|
|
'w': newSize['w'],
|
|
'h': newSize['h'],
|
|
'l': Math.ceil( ( boxDims['w'] - newSize['w'] ) / 2 ),
|
|
't': Math.ceil( ( boxDims['h'] - newSize['h'] ) / 2 )
|
|
};
|
|
}
|
|
}
|
|
};
|
|
|
|
//----------------------------------------------
|
|
// Base object for ccs widgets
|
|
//----------------------------------------------
|
|
$.ccsBase = function( options, element ){
|
|
if( arguments.length ){
|
|
this._instantiate( options, element );
|
|
}
|
|
};
|
|
|
|
$.ccsBase.prototype = {
|
|
name: 'ccsWidget',
|
|
options: { },
|
|
|
|
//----------------------------------------------
|
|
// Called when widget is instantiated
|
|
//----------------------------------------------
|
|
_instantiate: function( options, element ){
|
|
$.data( element, this.name, this );
|
|
this.element = $(element);
|
|
this.options = $.extend( true, {}, this.options, options );
|
|
this._init();
|
|
},
|
|
|
|
//----------------------------------------------
|
|
// Called after initial setup
|
|
//----------------------------------------------
|
|
_init: function(){},
|
|
|
|
//----------------------------------------------
|
|
// Getter/setter for options
|
|
//----------------------------------------------
|
|
option: function( key, value )
|
|
{
|
|
if( $.isPlainObject( key ) ){
|
|
this.options = $.extend(true, this.options, key);
|
|
} else if( key && typeof value === 'undefined' ) {
|
|
return this.options[ key ];
|
|
} else {
|
|
this.options[ key ] = value;
|
|
}
|
|
|
|
return this;
|
|
}
|
|
};
|
|
})(_ccsjQ);
|
|
|
|
if( typeof(jsDebug) == 'undefined' )
|
|
{
|
|
var jsDebug = false;
|
|
}
|
|
|
|
var Debug = {
|
|
write: function( text ){
|
|
if( jsDebug && window.console ){
|
|
console.log( text );
|
|
}
|
|
},
|
|
dir: function( values ){
|
|
if( jsDebug && window.console ){
|
|
console.dir( values );
|
|
}
|
|
}
|
|
}; |