
/* jLightBox (using jQuery library).
*--------------------------------------------*
*  @author : ukhome ( ukhome@gmail.com | ntkhoa_friends@yahoo.com )
*--------------------------------------------*
*  @released : 24-Mar-2009 : version 1.0
*--------------------------------------------*
*  @revision history : ( latest version : 1.0 )
*--------------------------------------------*
*      + 24-Mar-2009 : version 1.0
*          - released
*--------------------------------------------*
*/

/* package Main
*/

/* Extends jQuery function */
jQuery.fn.extend({
    /*import file to <head>*/
    _import: function (filenames, fileExtension, relativePath) {
        for ( var i = 0 ; i < filenames.length ; i++ ) {
            try {
                switch ( fileExtension ) {
                    case "js": 
                        jQuery("head").append("<script type=\"text/javascript\" src=\"" + relativePath + filenames[i] + "." + fileExtension + "\"><\/script>");
                        break;
                    case "css": 
                        jQuery("head").append("<link type=\"text/css\" href=\"" + relativePath + filenames[i] + "." + fileExtension + "\" />");
                        break;
                    default :
                        break;
                }
            }
            catch ( err ) {
                //error exception
            }
        }
    },

    /*centering on screen*/
    center: function () {
        var isIE6 = (/MSIE 6\.0/).test(navigator.userAgent) && !(/MSIE 7\.0/).test(navigator.userAgent) && !(/MSIE 8\.0/).test(navigator.userAgent);
        if ( isIE6 ) {
            var offsetTop = jQuery(window).scrollTop();
            var offsetLeft = jQuery(window).scrollLeft();
        }
        else {
            var offsetTop = 0;
            var offsetLeft = 0;
        }
        var self = this;
        var window_w = jQuery.browser.safari ? window.innerWidth : jQuery(window).width();
        var window_h = jQuery.browser.safari ? window.innerHeight : jQuery(window).height();

        var screen = {
            width: window_w,
            height: window_h
        }

        this.css({
            left: ( screen.width - self.outerWidth() )/2 + offsetLeft,
            top: ( screen.height - self.outerHeight() )/2 + offsetTop,
            right: "auto",
            bottom: "auto"
        });
        if ( self.outerWidth() > jQuery(window).width() ) {
            this.css({
                left: "auto",
                right: 0
            });
        }
        else if ( self.outerHeight() > jQuery(window).height() ) {
            this.css({
                top: "auto",
                bottom: 0
            });
        }
    },

    /*scaling element, relative to center point of the element*/
    scale: function (options/*{width, height, padding, percent, sync}*/, speed, effect, callback) {
        var window_w = jQuery.browser.safari ? window.innerWidth : jQuery(window).width();
        var window_h = jQuery.browser.safari ? window.innerHeight : jQuery(window).height();

        var o = this;
        var _WIDTH = typeof(options.width) != "number" ? parseInt( options.width.match(/[\d]+/) ) : options.width;
        var _HEIGHT = typeof(options.height) != "number" ? parseInt( options.height.match(/[\d]+/) ) : options.height;
        var _PADDING = typeof(options.padding) != "undefined" ? options.padding.split(" ") : 0;
        if ( _PADDING != 0 ) {
            var _PADDING_TOP = parseInt(_PADDING[0]);
            var _PADDING_RIGHT = parseInt(_PADDING[1]);
            var _PADDING_BOTTOM = parseInt(_PADDING[2]);
            var _PADDING_LEFT = parseInt(_PADDING[3]);
        }
        else {
            var _PADDING_TOP = _PADDING_RIGHT = _PADDING_BOTTOM = _PADDING_LEFT = 0;
        }
        var _SYNC = options.sync;
        var _SPEED = speed;
        var _EFFECT = effect;
        var _CALLBACK = typeof(callback) != "undefined" ? callback : null;

        var isIE6 = (/MSIE 6\.0/).test(navigator.userAgent) && !(/MSIE 7\.0/).test(navigator.userAgent) && !(/MSIE 8\.0/).test(navigator.userAgent);
        if ( isIE6 ) {
            var offsetTop = jQuery(document).scrollTop();
            var offsetLeft = jQuery(document).scrollLeft();
        }
        else {
            var offsetTop = 0;
            var offsetLeft = 0;
        }

        if ( _SYNC ) {
            o.animate({
                left: ( window_w - _WIDTH - _PADDING_LEFT - _PADDING_RIGHT )/2 + offsetLeft,
                top: ( window_h - _HEIGHT - _PADDING_TOP - _PADDING_BOTTOM )/2 + offsetTop,
                width: _WIDTH + _PADDING_LEFT + _PADDING_RIGHT,
                height: _HEIGHT + _PADDING_TOP + _PADDING_BOTTOM
            }, _SPEED, _EFFECT, function () {
                o.css({
                    width: o.width() - _PADDING_LEFT - _PADDING_RIGHT,
                    height: o.height() - _PADDING_TOP - _PADDING_BOTTOM,
                    paddingTop: _PADDING_LEFT + "px",
                    paddingRight: _PADDING_RIGHT + "px",
                    paddingBottom: _PADDING_BOTTOM + "px",
                    paddingLeft: _PADDING_LEFT + "px"
                });
                //do callback
                if ( _CALLBACK != null ) {
                    _CALLBACK();
                }
            });
        }
        else {
            o.animate({
                top: ( window_h - _HEIGHT - _PADDING_TOP - _PADDING_BOTTOM )/2 + offsetTop,
                height: _HEIGHT + _PADDING_TOP + _PADDING_BOTTOM
            }, _SPEED, _EFFECT, function () {
                o.css({
                    height: o.height() - _PADDING_TOP - _PADDING_BOTTOM,
                    paddingTop: _PADDING_LEFT + "px",
                    paddingBottom: _PADDING_BOTTOM + "px"
                });
                o.animate({
                    left: ( window_w - _WIDTH - _PADDING_LEFT - _PADDING_RIGHT )/2 + offsetLeft,
                    width: _WIDTH + _PADDING_LEFT + _PADDING_RIGHT
                }, _SPEED, _EFFECT, function () {
                    o.css({
                        width: o.width() - _PADDING_LEFT - _PADDING_RIGHT,
                        paddingRight: _PADDING_RIGHT + "px",
                        paddingLeft: _PADDING_LEFT + "px"
                    })
                    //do callback
                    if ( _CALLBACK != null ) {
                        _CALLBACK();
                    }
                });
            });
        }
    }
});

//import
jQuery("head")._import([
    "j-lightbox.Core",
	"j-lightbox.Global",
    "j-lightbox.InternalControl",
    "j-lightbox.ExternalControl",
    "j-lightbox.IframeControl",
    "j-lightbox.ImageControl",
    "j-lightbox.LightBoxControl",
    "j-lightbox.SizeControl",
    "j-lightbox.EventHandler",
    "j-lightbox.ErrorHandler",
    "j-lightbox.ExternalInterface",
    "j-lightbox.Ajax"
],
"js"/*type*/,
"http://www.rte-france.com/js/class/j-lightbox/"/*relative path*/);

/* function add LightBoxControl to els by addLightBoxControl method */
jQuery.fn.extend({
    addLightBoxControl: function() {
        //setup
        var options = arguments[0] != undefined ? arguments[0] : {};
        this.each(function () {
            new $lightbox(jQuery(this), options);
        });
    }
});
