﻿/// <reference path="../jquery-1.2.6.js"/>

(function($) {
    jQuery.extend(jQuery.fn, {

        popWindow: function(options) {

            var defaults = {
                'imageclass': '',
                'window': '',
                'inSpeed': 10,
                'outSpeed': 75,
                'xoffset': 0,
                'yoffset': 0,
                'oversrc': '',
                'outsrc': '',
                'clickeventname': 'onshoprpop'
            };

            var settings = jQuery.extend({}, defaults, options);
            var shoprwin = jQuery('#' + settings.window);

            if (shoprwin.attr('loaded') != 'loaded') {
                shoprwin.find('[shoprevent]').each(function(e) {
                    jQuery(this).bind('click', { eventname: settings.clickeventname, eventvalue: jQuery(this).attr('shoprevent') }, function(e) {
                        jQuery().trigger(e.data.eventname, [e.data.eventvalue, shoprwin.attr('recid')]);
                    });
                });
                shoprwin.attr('loaded', 'loaded');
            }

            // Loop each context menu
            jQuery(this).each(function() {
                var elthis = jQuery(this);

                // Add pop window class
                var shoprwin = jQuery('#' + settings.window);
                shoprwin.attr('shoprwin', 'on');

                // add some attributes for the images so we can use them on events
                elthis.attr('oversrc', settings.oversrc);
                elthis.attr('outsrc', settings.outsrc);
                elthis.attr('shoprpop', 'on');

                jQuery(this).parent().bind('mouseover', { imgelement: jQuery(this) }, function(e) {
                    if (jQuery('[shoprwin]:not(:hidden)').size() < 1)
                        e.data.imgelement.attr('src', e.data.imgelement.attr('oversrc'));
                });

                jQuery(this).parent().bind('mouseout', { imgelement: jQuery(this) }, function(e) {
                    if (jQuery('[shoprwin]:not(:hidden)').size() < 1)
                        e.data.imgelement.attr('src', e.data.imgelement.attr('outsrc'));
                });

                jQuery(this).mouseup(function(e) {
                    var srcElement = jQuery(this);
                    if (e.button == 1) {

                        //first reset them all
                        jQuery('[shoprpop]').each(function() {
                            jQuery(this).attr('src', jQuery(this).attr('outsrc'));
                        });

                        //now set 'this' one back to over
                        jQuery(this).attr('src', settings.oversrc);

                        // Hide windows that may be showing
                        jQuery('[shoprwin]').hide();
                        jQuery('[shoprwin]').attr('recid', srcElement.attr('recid'));

                        // Get this window
                        var win = jQuery('#' + settings.window);
                        var offset = srcElement.offset();

                        // Show the window
                        jQuery(document).unbind('click');
                        var x = offset.left + settings.xoffset;
                        var y = offset.top + settings.yoffset;
                        jQuery(win).css({ 'top': y + 'px', 'left': x + 'px' }).show();

                        // Hide pop windows
                        setTimeout(function() {
                            jQuery(document).click(function() {
                                jQuery('.' + settings.imageclass).attr("src", settings.outsrc);
                                jQuery(document).unbind('click');
                                jQuery(win).hide();
                                return false;
                            });
                        }, 0);
                    }
                });
            });
        }
    });
})(jQuery);