
// usage: log('inside coolFunc', this, arguments);
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
window.log = function(){
    log.history = log.history || [];   // store logs to an array for reference
    log.history.push(arguments);
    if(this.console) {
        arguments.callee = arguments.callee.caller;
        var newarr = [].slice.call(arguments);
        (typeof console.log === 'object' ? log.apply.call(console.log, console, newarr) : console.log.apply(console, newarr));
    }
};

// make it safe to use console.log always
(function(b){
    function c(){}
    for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();){
        b[a]=b[a]||c
        }
    })((function(){
    try

    {
        console.log();
        return window.console;
    }catch(err){
        return window.console={};

}
})());


// place any jQuery/helper plugins in here, instead of separate, slower script files.
/* Copyright (c) 2009 Alvaro A. Lima Jr http://alvarojunior.com/jquery/joverlay.html
 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * Version: 0.8 (OUT 19, 2009)
 * Requires: jQuery 1.3+
 */

(function($) {

    // Global vars
    var isIE6 = $.browser.msie && $.browser.version == 6.0; // =(
    var JOVERLAY_TIMER = null;

    $.fn.jOverlay = function(options) {

        // Element exist?
        if ( $('#jOverlay').length ) {
            $.closeOverlay();
        }

        // Clear Timer
        if (JOVERLAY_TIMER !== null) {
            clearTimeout( JOVERLAY_TIMER );
        }

        // Set Options
        var options = $.extend({}, $.fn.jOverlay.options, options || {});

        // success deprecated !!! Use onSuccess
        var onSuccess =  options.onSuccess || options.success;

        var element = this.is('*') ? this : '#jOverlayContent';

        var position = isIE6 ? 'absolute' : 'fixed';

        var isImage = /([^\/\\]+)\.(png|gif|jpeg|jpg|bmp)$/i.test( options.url );

        var imgLoading = options.imgLoading ? "<img id='jOverlayLoading' src='"+options.imgLoading+"' style='position:"+position+"; z-index:"+(options.zIndex + 9)+";'/>" : '';

        // private function
        function center(id) {
            if (options.center) {
                $.center(id);
            } else if( isIE6 ) {
                $.center('#jOverlayContent',{
                    'top' : $(window).scrollTop() + 'px',
                    'marginLeft' : '',
                    'marginTop' : '',
                    'left' : ''
                });
            }
        }

        $('body').prepend(imgLoading + "<div id='jOverlay' />"
            + "<div id='jOverlayContent' style='position:"+position+"; z-index:"+(options.zIndex + 5)+"; display:none;'/>"
            );

        // Cache options
        $('#jOverlayContent').data('options', options);

        // Loading Centered
        $('#jOverlayLoading').load(function() {
            center(this);
        });

        //IE 6 FIX
        if ( isIE6 ) {
            $('select').hide();
            $('#jOverlayContent select').show();
        }

        // Overlay Style
        $('#jOverlay').css({
            'backgroundColor' : options.color,
            'position' : position,
            'top' : '0px',
            'left' : '0px',
            'filter' : 'alpha(opacity='+ (options.opacity * 100) +')', // IE =(
            'opacity' : options.opacity, // Good Browser =D
            '-khtml-opacity' : options.opacity,
            '-moz-opacity' : options.opacity,
            'zIndex' : options.zIndex,
            'width' : !isIE6 ? '100%' : $(window).width() + 'px',
            'height' : !isIE6 ? '100%' : $(document).height() + 'px'
        }).show();

        // INNER HTML
        if ( $.trim(options.html) ) {
            $(element).html(options.html);
        }

        // ELEMENT
        if ( this.is('*') ) {

            $('#jOverlayContent').data('jOverlayElementPrev', this.prev() );

            $('#jOverlayContent').html(
                this.show().data('display', options.autoHide ? 'none' : this.css('display') )
                );

            if ( !isImage ) {

                center('#jOverlayContent');

                $('#jOverlayContent').show();

                // Execute callback
                if ( !options.url && $.isFunction( onSuccess ) ) {
                    onSuccess( this );
                }

            }

        }

        // IMAGE
        if ( isImage ) {

            $('<img/>').load(function(){
                var resize = $.resize(this.width, this.height);

                $(this).css({
                    width : resize.width,
                    height : resize.height
                });

                $( element ).html(this);

                center('#jOverlayContent');
                center('#jOverlayLoading');

                $('#jOverlayLoading').fadeOut(500);
                $('#jOverlayContent').show();

                // Execute callback
                if ( $.isFunction( onSuccess ) ) {
                    onSuccess( $(element) );
                }

            }).error(function(){
                alert('Image ('+options.url+') not found.');
                $.closeOverlay();
            }).attr({
                'src' : options.url,
                'alt' : options.url
                });

        }

        // AJAX
        if ( options.url && !isImage ) {

            $.ajax({
                type: options.method,
                data: options.data,
                url: options.url,
                success: function(responseText) {

                    $('#jOverlayLoading').fadeOut(500);

                    $( element ).html(responseText).show();

                    center('#jOverlayContent');

                    // Execute callback
                    if ( $.isFunction( onSuccess ) ) {
                        onSuccess( responseText );
                    }

                },
                error : function() {
                    alert('URL ('+options.url+') not found.');
                    $.closeOverlay();
                }
            });

        }

        // :(
        if ( isIE6 ) {

            // Window scroll
            $(window).scroll(function(){
                center('#jOverlayContent');
            });

            // Window resize
            $(window).resize(function(){

                $('#jOverlay').css({
                    'width' : $(window).width() + 'px',
                    'height' : $(document).height() + 'px'
                });

                center('#jOverlayContent');

            });

        }

        // Press ESC to close
        if ( options.closeOnEsc ) {
            $(document).keydown(function(event){
                if ( event.keyCode == 27 ) {
                    $.closeOverlay();
                }
            });
        } else {
            $(document).unbind('keydown');
        }

        // Click to close
        if ( options.bgClickToClose ) {
            $('#jOverlay').click($.closeOverlay);
        }

        // Timeout (auto-close)
        // time in millis to wait before auto-close
        // set to 0 to disable
        if ( options.timeout && Number(options.timeout) > 0 ) {
            JOVERLAY_TIMER = window.setTimeout( $.closeOverlay, Number(options.timeout) );
        }

        // ADD CSS
        $('#jOverlayContent').css(options.css || {});

    };

    // Resizing large images - orginal by Christian Montoya.
    // Edited by - Cody Lindley (http://www.codylindley.com) (Thickbox 3.1)
    $.resize = function(imageWidth, imageHeight) {
        var x = $(window).width() - 150;
        var y = $(window).height() - 150;
        if (imageWidth > x) {
            imageHeight = imageHeight * (x / imageWidth);
            imageWidth = x;
            if (imageHeight > y) {
                imageWidth = imageWidth * (y / imageHeight);
                imageHeight = y;
            }
        } else if (imageHeight > y) {
            imageWidth = imageWidth * (y / imageHeight);
            imageHeight = y;
            if (imageWidth > x) {
                imageHeight = imageHeight * (x / imageWidth);
                imageWidth = x;
            }
        }
        return {
            'width':imageWidth,
            'height':imageHeight
        };
    };

    // Centered Element
    $.center = function(element, css) {
        var element = $(element);
        var elemWidth = element.width();

        element.css($.extend({},{
            'width' : elemWidth + 'px',
            'marginLeft' : '-' + (elemWidth / 2) + 'px',
            'marginTop' : '-' + element.height() / 2 + 'px',
            'height' : 'auto',
            'top' : !isIE6 ? '50%' : $(window).scrollTop() + ($(window).height() / 2) + 'px',
            'left' : '50%'
        }, css || {}));
    };

    // Options default
    $.fn.jOverlay.options = {
        'method' : 'GET',
        'data' : '',
        'url' : '',
        'color' : '#000',
        'opacity' : '0.6',
        'zIndex' : 9999,
        'center' : true,
        'imgLoading' : '',
        'bgClickToClose' : true,
        'success' : null, // Deprecated : use onSuccess
        'onSuccess' : null,
        'timeout' : 0,
        'autoHide' : true,
        'css' : {},
        'html' : '',
        'closeOnEsc' : true
    };

    // Set default options (GLOBAL)
    // Overiding the default values.
    $.fn.jOverlay.setDefaults = function(options) {
        $.fn.jOverlay.options = $.extend({}, $.fn.jOverlay.options, options || {});
    };

    // Close
    $.closeOverlay = function() {

        var content = $('#jOverlayContent');
        var options = content.data('options');
        var elementPrev = content.data('jOverlayElementPrev');

        // Fix IE6 (SELECT)
        if (isIE6) {
            $("select").show();
        }

        // Restore position
        if ( elementPrev ) {
            var contentChildren = content.children();
            elementPrev.after( contentChildren.css('display', contentChildren.data('display') ) );
            // Clear cache
            contentChildren.removeData('display');
            content.removeData('jOverlayElementPrev');
        }

        // Clear options cache
        content.removeData('options');

        // Remove joverlay elements
        $('#jOverlayLoading, #jOverlayContent, #jOverlay').remove();

    };

})(jQuery);

$(function(){
    // Dialog
    $('#imagegallery li a').bind('click', function(event) {
       event.preventDefault();
       var src = $(this).attr('href');
       $().jOverlay({url:src, imgLoading : 'images/ajax-loader.gif'});
    });
});

