/*Image Thumbnail Viewer II (May 19th, 2010)
* This notice must stay intact for usage 
* Author: Dynamic Drive at http://www.dynamicdrive.com/
* Visit http://www.dynamicdrive.com/ for full source code
*/

jQuery.noConflict()

jQuery.thumbnailviewer2 = {
    loadmsg: '<img src="./theme/images/spinner.gif" /><br />Loading Large Image...', //HTML for loading message. Make sure image paths are correct
    /////NO NEED TO EDIT BEYOND HERE////////////////

    dsetting: { trigger: 'click', preload: 'yes', fx: 'fade', fxduration: 500, enabletitle: 'yes' }, //default settings
    buildimage: function($, $anchor, setting) {
        if (!$anchor.attr)
            var imghtml = '<img src="' + $anchor.href + '" style="border-width:0; width: 900px; height: 440px;" />';
        else
            var imghtml = '<img src="' + $anchor.attr('href') + '" style="border-width:0; width: 900px; height: 440px;" />';

        if (setting.link)
            imghtml = '<a href="' + setting.link + '">' + imghtml + '</a>';

        if (!$anchor.attr)
            imghtml = '<div>' + imghtml + ((setting.enabletitle && $anchor.title != '') ? '<div class="title">' + $anchor.title : '') + '</div></div>';
        else
            imghtml = '<div>' + imghtml + ((setting.enabletitle && $anchor.attr('title') != '') ? '<div class="title">' + $anchor.attr('title') : '') + '</div></div>';
        return $(imghtml)
    },

    showimage: function($image, setting) {
        $image.stop()[setting.fxfunc](setting.fxduration, function() {
            if (this.style && this.style.removeAttribute)
                this.style.removeAttribute('filter') //fix IE clearType problem when animation is fade-in
        })
    }

}


jQuery.fn.addthumbnailviewer2 = function(options) {
    var $ = jQuery

    return this.each(function() { //return jQuery obj
        if (this.tagName != "A")
            return true //skip to next matched element

        var $anchor = $(this);
        var s = $.extend({}, $.thumbnailviewer2.dsetting, options) //merge user options with defaults
        s.fxfunc = (s.fx == "fade") ? "fadeIn" : "show"
        s.fxduration = (s.fx == "none") ? 0 : parseInt(s.fxduration)
        if (s.preload == "yes") {
            var hiddenimage = new Image()
            hiddenimage.src = this.href
        }
        var $loadarea = $('#' + s.targetdiv)
        var $hiddenimagediv = $('<div />').css({ position: 'absolute', visibility: 'hidden', left: -10000, top: -10000 }).appendTo(document.body) //hidden div to load enlarged image in
        var triggerevt = s.trigger + '.thumbevt' //"click" or "mouseover"
        $anchor.unbind(triggerevt).bind(triggerevt, function() {
            isSlideShowEnable = false;
            if ($loadarea.data('$curanchor') == $anchor) //if mouse moves over same element again
                return false
            $loadarea.data('$curanchor', $anchor)
            if ($loadarea.data('$queueimage')) { //if a large image is in the queue to be shown
                $loadarea.data('$queueimage').unbind('load') //stop it first before showing current image
            }
            $loadarea.html($.thumbnailviewer2.loadmsg)
            var $hiddenimage = $hiddenimagediv.find('img')
            if ($hiddenimage.length == 0) { //if this is the first time moving over or clicking on the anchor link
                var $hiddenimage = $('<img src="' + this.href + '" />').appendTo($hiddenimagediv) //populate hidden div with enlarged image
                $hiddenimage.bind('loadevt', function(e) { //when enlarged image has fully loaded
                    var $targetimage = $.thumbnailviewer2.buildimage($, $anchor, s).hide() //create/reference actual enlarged image
                    $loadarea.empty().append($targetimage) //show enlarged image
                    $.thumbnailviewer2.showimage($targetimage, s)
                })
                $loadarea.data('$queueimage', $hiddenimage) //remember currently loading image as image being queued to load
            }

            if ($hiddenimage.get(0).complete)
                $hiddenimage.trigger('loadevt')
            else
                $hiddenimage.bind('load', function() { $hiddenimage.trigger('loadevt') })
            return false
        })
    })
}

jQuery(document).ready(function($){
	var $anchors=$('a[rel="enlargeimage"]') //look for links with rel="enlargeimage"
	$anchors.each(function(i){
		var options={}
		var rawopts=this.getAttribute('rev').split(',') //transform rev="x:value1,y:value2,etc" into a real object
		for (var i=0; i<rawopts.length; i++){
			var namevalpair=rawopts[i].split(/:(?!\/\/)/) //avoid spitting ":" inside "http://blabla"
			options[jQuery.trim(namevalpair[0])]=jQuery.trim(namevalpair[1])
		}
		$(this).addthumbnailviewer2(options)
	})
})