/* 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 $lightbox.LightBoxControl
*/

/*
* parent = $lightbox object
*/

$lightbox.LightBoxControl = function (parent, options/*optional: use in case call by external interface*/) {
    parent.showLightBox = function (evt) {
        parent.createOverlays();
        parent.createPopup();
        new $lightbox.SizeControl(parent);
        //manipulate data
        var internalContentID = ( parent.options.internalContent!= null && parent.options.internalContent.match(/\?.*/) != null ) 
                                        ? parent.options.internalContent.replace(parent.options.internalContent.match(/\?.*/), "")
                                        : parent.options.internalContent;

        if ( parent.handler != null ) {
            if ( parent.options.internalContent != null && jQuery(internalContentID).get(0).nodeName.toLowerCase() != "img" ) {
                new $lightbox.InternalControl(parent);
            }
            else { //load external content
                var hash = parent.options.externalContent.match(/#.*/);
                if ( hash == null) {
                    //load images && images gallery
                    if ( parent.handler.children().length > 0 && parent.handler.children().eq(0).get(0).nodeName.toLowerCase() == "img" ) {
                        new $lightbox.ImageControl(parent);
                    }
                    else { //load external content NOT images
                        new $lightbox.ExternalControl(parent);
                    }
                }
                else { //load through iframe
                    new $lightbox.IframeControl(parent, hash);
                }
            }
        }
        else {
            if ( parent.options.internalContent != null && jQuery(internalContentID).get(0).nodeName.toLowerCase() != "img" ) {
                new $lightbox.InternalControl(parent);
            }
            else { //load external content
                var hash = parent.options.externalContent.match(/#.*/);
                if ( hash == null) {
                    //load images && images gallery
                    if ( (/\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/).test(parent.options.externalContent) ) {
                        new $lightbox.ImageControl(parent, {
                            href: parent.options.externalContent,
                            rel: parent.options.internalContent,
                            title: typeof( options ) != "undefined" && typeof(options.title) != "undefined" ? options.title : "[No Caption]"
                        });
                    }
                    else { //load external content NOT images
                        new $lightbox.ExternalControl(parent);
                    }
                }
                else { //load through iframe
                    new $lightbox.IframeControl(parent, hash);
                }
            }
        }

        //clear the hover state close button
        if ( parent.options.closeBtn != null ) {
            parent.options.closeBtn.addClass("ClearHover");
            parent.options.closeBtn.hover(function () {
                jQuery(this).removeClass("ClearHover");
            });
        }

        //exception for IE6: hide select
        if ( parent.isIE6 ) {
            jQuery("select").hide();
            parent.popup.find("select").show();
        }

        parent.isOpen = true;
        return parent;
    }

    parent.hideLightBox = function (evt) {
        parent.overlays.fadeOut("fast", function () {
            parent.overlays.remove();
            jQuery("#showDMVideo").remove(); // OGV media player FIX
            //jQuery("#diaporama-image-viewer img").hide(); // OGV media player FIX
            jQuery("select").show();
            parent.isOpen = false;
        });

        if ( parent.options.internalContent != null && parent.selfOpen && !parent.reload ) {
            jQuery(parent.options.internalContent).append( parent.popupContent.children() );
        }
        parent.popup.stop().remove();
        parent.reload = false;
        return parent;
    }

    parent.reloadContent = function (url) {
        if ( parent.options.internalContent != null && parent.selfOpen && !parent.reload ) {
            parent.popupContent.children().appendTo( jQuery(parent.options.internalContent) );
        }

        if ( !parent.reload ) {
            parent.reload = true;
        }

        var ajaxRequest = new $lightbox.Ajax(parent, url, function (data) {
            parent.popupContent.empty().html(data);
        });
    }
}
