/*
 * FancyBox - simple and fancy jQuery plugin
 * Examples and documentation at: http://fancy.klade.lv/
 * Version: 1.2.1 (13/03/2009)
 * Copyright (c) 2009 Janis Skarnelis
 * Licensed under the MIT License: http://en.wikipedia.org/wiki/MIT_License
 * Requires: jQuery v1.3+
*/
;(function(jQuery){jQuery.fn.fixPNG=function(){return this.each(function(){var image=jQuery(this).css('backgroundImage');if(image.match(/^url\(["']?(.*\.png)["']?\)jQuery/i)){image=RegExp.jQuery1;jQuery(this).css({'backgroundImage':'none','filter':"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod="+(jQuery(this).css('backgroundRepeat')=='no-repeat'?'crop':'scale')+", src='"+image+"')"}).each(function(){var position=jQuery(this).css('position');if(position!='absolute'&&position!='relative')jQuery(this).css('position','relative')})}})};var elem,opts,busy=false,imagePreloader=new Image,loadingTimer,loadingFrame=1,imageRegExp=/\.(jpg|gif|png|bmp|jpeg)(.*)?jQuery/i;var isIE=(jQuery.browser.msie&&parseInt(jQuery.browser.version.substr(0,1))<8);jQuery.fn.fancybox=function(settings){settings=jQuery.extend({},jQuery.fn.fancybox.defaults,settings);var matchedGroup=this;function _initialize(){elem=this;opts=settings;_start();return false};function _start(){if(busy)return;if(jQuery.isFunction(opts.callbackOnStart)){opts.callbackOnStart()}opts.itemArray=[];opts.itemCurrent=0;if(settings.itemArray.length>0){opts.itemArray=settings.itemArray}else{var item={};if(!elem.rel||elem.rel==''){var item={href:elem.href,title:elem.title};if(jQuery(elem).children("img:first").length){item.orig=jQuery(elem).children("img:first")}opts.itemArray.push(item)}else{var subGroup=jQuery(matchedGroup).filter("a[rel="+elem.rel+"]");var item={};for(var i=0;i<subGroup.length;i++){item={href:subGroup[i].href,title:subGroup[i].title};if(jQuery(subGroup[i]).children("img:first").length){item.orig=jQuery(subGroup[i]).children("img:first")}opts.itemArray.push(item)}while(opts.itemArray[opts.itemCurrent].href!=elem.href){opts.itemCurrent++}}}if(opts.overlayShow){if(isIE){jQuery('embed, object, select').css('visibility','hidden')}jQuery("#fancy_overlay").css('opacity',opts.overlayOpacity).show()}_change_item()};function _change_item(){jQuery("#fancy_right, #fancy_left, #fancy_close, #fancy_title").hide();var href=opts.itemArray[opts.itemCurrent].href;if(href.match(/#/)){var target=window.location.href.split('#')[0];target=href.replace(target,'');target=target.substr(target.indexOf('#'));_set_content('<div id="fancy_div">'+jQuery(target).html()+'</div>',opts.frameWidth,opts.frameHeight)}else if(href.match(imageRegExp)){imagePreloader=new Image;imagePreloader.src=href;if(imagePreloader.complete){_proceed_image()}else{jQuery.fn.fancybox.showLoading();jQuery(imagePreloader).unbind().bind('load',function(){jQuery(".fancy_loading").hide();_proceed_image()})}}else if(href.match("iframe")||elem.className.indexOf("iframe")>=0){_set_content('<iframe id="fancy_frame" onload="jQuery.fn.fancybox.showIframe()" name="fancy_iframe'+Math.round(Math.random()*1000)+'" frameborder="0" hspace="0" src="'+href+'"></iframe>',opts.frameWidth,opts.frameHeight)}else{jQuery.get(href,function(data){_set_content('<div id="fancy_ajax">'+data+'</div>',opts.frameWidth,opts.frameHeight)})}};function _proceed_image(){if(opts.imageScale){var w=jQuery.fn.fancybox.getViewport();var r=Math.min(Math.min(w[0]-36,imagePreloader.width)/imagePreloader.width,Math.min(w[1]-60,imagePreloader.height)/imagePreloader.height);var width=Math.round(r*imagePreloader.width);var height=Math.round(r*imagePreloader.height)}else{var width=imagePreloader.width;var height=imagePreloader.height}_set_content('<img alt="" id="fancy_img" src="'+imagePreloader.src+'" />',width,height)};function _preload_neighbor_images(){if((opts.itemArray.length-1)>opts.itemCurrent){var href=opts.itemArray[opts.itemCurrent+1].href;if(href.match(imageRegExp)){objNext=new Image();objNext.src=href}}if(opts.itemCurrent>0){var href=opts.itemArray[opts.itemCurrent-1].href;if(href.match(imageRegExp)){objNext=new Image();objNext.src=href}}};function _set_content(value,width,height){busy=true;var pad=opts.padding;if(isIE){jQuery("#fancy_content")[0].style.removeExpression("height");jQuery("#fancy_content")[0].style.removeExpression("width")}if(pad>0){width+=pad*2;height+=pad*2;jQuery("#fancy_content").css({'top':pad+'px','right':pad+'px','bottom':pad+'px','left':pad+'px','width':'auto','height':'auto'});if(isIE){jQuery("#fancy_content")[0].style.setExpression('height','(this.parentNode.clientHeight - 20)');jQuery("#fancy_content")[0].style.setExpression('width','(this.parentNode.clientWidth - 20)')}}else{jQuery("#fancy_content").css({'top':0,'right':0,'bottom':0,'left':0,'width':'100%','height':'100%'})}if(jQuery("#fancy_outer").is(":visible")&&width==jQuery("#fancy_outer").width()&&height==jQuery("#fancy_outer").height()){jQuery("#fancy_content").fadeOut("fast",function(){jQuery("#fancy_content").empty().append(jQuery(value)).fadeIn("normal",function(){_finish()})});return}var w=jQuery.fn.fancybox.getViewport();var itemLeft=(width+36)>w[0]?w[2]:(w[2]+Math.round((w[0]-width-36)/2));var itemTop=(height+50)>w[1]?w[3]:(w[3]+Math.round((w[1]-height-50)/2));var itemOpts={'left':itemLeft,'top':itemTop,'width':width+'px','height':height+'px'};if(jQuery("#fancy_outer").is(":visible")){jQuery("#fancy_content").fadeOut("normal",function(){jQuery("#fancy_content").empty();jQuery("#fancy_outer").animate(itemOpts,opts.zoomSpeedChange,opts.easingChange,function(){jQuery("#fancy_content").append(jQuery(value)).fadeIn("normal",function(){_finish()})})})}else{if(opts.zoomSpeedIn>0&&opts.itemArray[opts.itemCurrent].orig!==undefined){jQuery("#fancy_content").empty().append(jQuery(value));var orig_item=opts.itemArray[opts.itemCurrent].orig;var orig_pos=jQuery.fn.fancybox.getPosition(orig_item);jQuery("#fancy_outer").css({'left':(orig_pos.left-18)+'px','top':(orig_pos.top-18)+'px','width':jQuery(orig_item).width(),'height':jQuery(orig_item).height()});if(opts.zoomOpacity){itemOpts.opacity='show'}jQuery("#fancy_outer").animate(itemOpts,opts.zoomSpeedIn,opts.easingIn,function(){_finish()})}else{jQuery("#fancy_content").hide().empty().append(jQuery(value)).show();jQuery("#fancy_outer").css(itemOpts).fadeIn("normal",function(){_finish()})}}};function _set_navigation(){if(opts.itemCurrent!=0){jQuery("#fancy_left, #fancy_left_ico").unbind().bind("click",function(e){e.stopPropagation();opts.itemCurrent--;_change_item();return false});jQuery("#fancy_left").show()}if(opts.itemCurrent!=(opts.itemArray.length-1)){jQuery("#fancy_right, #fancy_right_ico").unbind().bind("click",function(e){e.stopPropagation();opts.itemCurrent++;_change_item();return false});jQuery("#fancy_right").show()}};function _finish(){_set_navigation();_preload_neighbor_images();jQuery(document).keydown(function(e){if(e.keyCode==27){jQuery.fn.fancybox.close();jQuery(document).unbind("keydown")}else if(e.keyCode==37&&opts.itemCurrent!=0){opts.itemCurrent--;_change_item();jQuery(document).unbind("keydown")}else if(e.keyCode==39&&opts.itemCurrent!=(opts.itemArray.length-1)){opts.itemCurrent++;_change_item();jQuery(document).unbind("keydown")}});if(opts.centerOnScroll){jQuery(window).bind("resize scroll",jQuery.fn.fancybox.scrollBox)}else{jQuery("div#fancy_outer").css("position","absolute")}if(opts.hideOnContentClick){jQuery("#fancy_wrap").click(jQuery.fn.fancybox.close)}jQuery("#fancy_overlay, #fancy_close").bind("click",jQuery.fn.fancybox.close);jQuery("#fancy_close").show();if(opts.itemArray[opts.itemCurrent].title!==undefined&&opts.itemArray[opts.itemCurrent].title.length>0){jQuery('#fancy_title div').html(opts.itemArray[opts.itemCurrent].title);jQuery('#fancy_title').show()}if(opts.overlayShow&&isIE){jQuery('embed, object, select',jQuery('#fancy_content')).css('visibility','visible')}if(jQuery.isFunction(opts.callbackOnShow)){opts.callbackOnShow()}busy=false};return this.unbind('click').click(_initialize)};jQuery.fn.fancybox.scrollBox=function(){var pos=jQuery.fn.fancybox.getViewport();jQuery("#fancy_outer").css('left',((jQuery("#fancy_outer").width()+36)>pos[0]?pos[2]:pos[2]+Math.round((pos[0]-jQuery("#fancy_outer").width()-36)/2)));jQuery("#fancy_outer").css('top',((jQuery("#fancy_outer").height()+50)>pos[1]?pos[3]:pos[3]+Math.round((pos[1]-jQuery("#fancy_outer").height()-50)/2)))};jQuery.fn.fancybox.getNumeric=function(el,prop){return parseInt(jQuery.curCSS(el.jquery?el[0]:el,prop,true))||0};jQuery.fn.fancybox.getPosition=function(el){var pos=el.offset();pos.top+=jQuery.fn.fancybox.getNumeric(el,'paddingTop');pos.top+=jQuery.fn.fancybox.getNumeric(el,'borderTopWidth');pos.left+=jQuery.fn.fancybox.getNumeric(el,'paddingLeft');pos.left+=jQuery.fn.fancybox.getNumeric(el,'borderLeftWidth');return pos};jQuery.fn.fancybox.showIframe=function(){jQuery(".fancy_loading").hide();jQuery("#fancy_frame").show()};jQuery.fn.fancybox.getViewport=function(){return[jQuery(window).width(),jQuery(window).height(),jQuery(document).scrollLeft(),jQuery(document).scrollTop()]};jQuery.fn.fancybox.animateLoading=function(){if(!jQuery("#fancy_loading").is(':visible')){clearInterval(loadingTimer);return}jQuery("#fancy_loading > div").css('top',(loadingFrame*-40)+'px');loadingFrame=(loadingFrame+1)%12};jQuery.fn.fancybox.showLoading=function(){clearInterval(loadingTimer);var pos=jQuery.fn.fancybox.getViewport();jQuery("#fancy_loading").css({'left':((pos[0]-40)/2+pos[2]),'top':((pos[1]-40)/2+pos[3])}).show();jQuery("#fancy_loading").bind('click',jQuery.fn.fancybox.close);loadingTimer=setInterval(jQuery.fn.fancybox.animateLoading,66)};jQuery.fn.fancybox.close=function(){busy=true;jQuery(imagePreloader).unbind();jQuery("#fancy_overlay, #fancy_close").unbind();if(opts.hideOnContentClick){jQuery("#fancy_wrap").unbind()}jQuery("#fancy_close, .fancy_loading, #fancy_left, #fancy_right, #fancy_title").hide();if(opts.centerOnScroll){jQuery(window).unbind("resize scroll")}__cleanup=function(){jQuery("#fancy_overlay, #fancy_outer").hide();if(opts.centerOnScroll){jQuery(window).unbind("resize scroll")}if(isIE){jQuery('embed, object, select').css('visibility','visible')}if(jQuery.isFunction(opts.callbackOnClose)){opts.callbackOnClose()}busy=false};if(jQuery("#fancy_outer").is(":visible")!==false){if(opts.zoomSpeedOut>0&&opts.itemArray[opts.itemCurrent].orig!==undefined){var orig_item=opts.itemArray[opts.itemCurrent].orig;var orig_pos=jQuery.fn.fancybox.getPosition(orig_item);var itemOpts={'left':(orig_pos.left-18)+'px','top':(orig_pos.top-18)+'px','width':jQuery(orig_item).width(),'height':jQuery(orig_item).height()};if(opts.zoomOpacity){itemOpts.opacity='hide'}jQuery("#fancy_outer").stop(false,true).animate(itemOpts,opts.zoomSpeedOut,opts.easingOut,__cleanup)}else{jQuery("#fancy_outer").stop(false,true).fadeOut("fast",__cleanup)}}else{__cleanup()}return false};jQuery.fn.fancybox.build=function(){var html='';html+='<div id="fancy_overlay"></div>';html+='<div id="fancy_wrap">';html+='<div class="fancy_loading" id="fancy_loading"><div></div></div>';html+='<div id="fancy_outer">';html+='<div id="fancy_inner">';html+='<div id="fancy_close"></div>';html+='<div id="fancy_bg"><div class="fancy_bg fancy_bg_n"></div><div class="fancy_bg fancy_bg_ne"></div><div class="fancy_bg fancy_bg_e"></div><div class="fancy_bg fancy_bg_se"></div><div class="fancy_bg fancy_bg_s"></div><div class="fancy_bg fancy_bg_sw"></div><div class="fancy_bg fancy_bg_w"></div><div class="fancy_bg fancy_bg_nw"></div></div>';html+='<a href="javascript:;" id="fancy_left"><span class="fancy_ico" id="fancy_left_ico"></span></a><a href="javascript:;" id="fancy_right"><span class="fancy_ico" id="fancy_right_ico"></span></a>';html+='<div id="fancy_content"></div>';html+='<div id="fancy_title"></div>';html+='</div>';html+='</div>';html+='</div>';jQuery(html).appendTo("body");jQuery('<table cellspacing="0" cellpadding="0" border="0"><tr><td class="fancy_title" id="fancy_title_left"></td><td class="fancy_title" id="fancy_title_main"><div></div></td><td class="fancy_title" id="fancy_title_right"></td></tr></table>').appendTo('#fancy_title');if(isIE){jQuery("#fancy_inner").prepend('<iframe class="fancy_bigIframe" scrolling="no" frameborder="0"></iframe>');jQuery("#fancy_close, .fancy_bg, .fancy_title, .fancy_ico").fixPNG()}};jQuery.fn.fancybox.defaults={padding:10,imageScale:true,zoomOpacity:false,zoomSpeedIn:0,zoomSpeedOut:0,zoomSpeedChange:300,easingIn:'swing',easingOut:'swing',easingChange:'swing',frameWidth:425,frameHeight:355,overlayShow:true,overlayOpacity:0.3,hideOnContentClick:true,centerOnScroll:true,itemArray:[],callbackOnStart:null,callbackOnShow:null,callbackOnClose:null};jQuery(document).ready(function(){jQuery.fn.fancybox.build()})})(jQuery);

function css_browser_selector(u){var ua = u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1;},g='gecko',w='webkit',s='safari',h=document.getElementsByTagName('html')[0],b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3')?g+' ff3':is('gecko/')?g:/opera(\s|\/)(\d+)/.test(ua)?'opera opera'+RegExp.$2:is('konqueror')?'konqueror':is('chrome')?w+' chrome':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?'mobile':is('iphone')?'iphone':is('ipod')?'ipod':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win':is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);
 
(function(jQuery) {
    var AutoComplete = function(input, url, options) {
        settings = jQuery.extend({
            minimumCharacters: 3,
            searchDelay: 500,
            limitPerCategory: 5,
            actionFunction: null,
            align: 'center',
            width: '600',
            showEffect: 'fade',
            hideEffect: 'fade'
        }, options);

        var input = jQuery(input);
        var container = jQuery(document.createElement('div'));
        container.attr('className',  'AutoComplete-balloon');
        container.css({
            left: input.offset().left,
            top: input.offset().top + input.outerHeight()
        });

        var results = jQuery(document.createElement('div'));
        results.attr('className', 'AutoComplete-results-wrapper');
        results.css({
            width: '100%',
            height: '100%'
        });

        container.append(results);
        jQuery(document.body).append(container);


        this._input = input;
        this._container = container;
        this._searchURL = url;
        this._resultsContainer = results;

        input.bind('focus.AutoComplete', {AutoComplete: this}, function(evt) {
            var AutoComplete = evt.data.AutoComplete;
            if (this.value.length >= settings.minimumCharacters) {
                AutoComplete.search(this.value);
            }
        });
        jQuery(document.body).bind('mousedown.AutoComplete', {AutoComplete: this}, function(evt) {
            var AutoComplete = evt.data.AutoComplete;

            // Make sure we didn't click the AutoComplete
            var node = evt.target;
            var c = 0
            while (node) {
                // Clicked AutoComplete, so return
                if (node == AutoComplete._input[0] || node == AutoComplete._container[0]) {
                    return;
                }
                node = node.parentNode;
            }

            AutoComplete.hide();
        });

        input.bind('keydown.AutoComplete', {AutoComplete: this}, function(evt) {
            var AutoComplete = evt.data.AutoComplete;
            if (evt.which == 38 && AutoComplete._selectedRow > 0) {
                // Up arrow
                AutoComplete.selectRow(AutoComplete._selectedRow-1);
            } else if (evt.which == 40 && AutoComplete._selectedRow < AutoComplete._rowCount -1) {
                // Down arrow
                AutoComplete.selectRow(AutoComplete._selectedRow+1);
            } else if (evt.which == 13 && AutoComplete._selectedRow > -1) {
                AutoComplete.activateRow(AutoComplete._selectedRow);
            }
            if (evt.which == 13 || evt.which == 38 || evt.which == 40) {
                evt.preventDefault();
            }
        });
        input.bind('keyup.AutoComplete', {AutoComplete: this}, function(evt) {
            var AutoComplete = evt.data.AutoComplete;
            if (AutoComplete._searchDelayTimer) {
                clearTimeout(AutoComplete._searchDelayTimer);
            }
            AutoComplete._searchDelayTimer = setTimeout(function() {
                var input = AutoComplete._input[0];
                if (input.value == AutoComplete._previousQuery) {
                } else if (input.value.length >= settings.minimumCharacters) {
                    AutoComplete.search(input.value);
                } else {
                    AutoComplete.hide();
                }
            }, settings.searchDelay);
        });
        input.bind('keypress.AutoComplete', {AutoComplete: this}, function(evt) {
            var AutoComplete = evt.data.AutoComplete;
        });
        this._container.bind('mouseleave.AutoComplete', {AutoComplete: this}, function(evt) {
            var AutoComplete = evt.data.AutoComplete;
            AutoComplete.selectRow(-1);
        });


        this.resultAction = settings.actionFunction ? settings.actionFunction : this.defaultResultAction;
    };
    AutoComplete.prototype.show = function() {
        if (!this._container.is(':visible')) {
            this._container.fadeIn('fast');
        }
    };
    AutoComplete.prototype.hide = function() {
        if (this._disableHide) {
            return;
        }
        this._container.fadeOut('fast');
    };
    AutoComplete.prototype.search = function(query) {
        var AutoComplete = this;
        this._previousQuery = query;
        if (this._previousXHR) {
            this._previousXHR.abort();
        }
        this._previousXHR = jQuery.getJSON(this._searchURL, {q: query}, function(results) {
            AutoComplete.clearResults();
			if (results.length > 0)
			{
				for (var i = 0; i < results.length; i++) {
					var r = results[i]
					AutoComplete.addResultCategory(r.title, r.results);
				}
				AutoComplete.show();
			}
			else
			{
			}
        });
    };
    AutoComplete.prototype.clearResults = function() {
        this._categoryCount = 0;
        this._rowCount = 0;
        this._selectedRow = -1;
        this._resultsContainer.html('<table class="AutoComplete-results"></table>');
    };
    AutoComplete.prototype.addResultCategory = function(name, results) {
        var first = true;
        for (var i = 0; i < results.length; i++) {
            var r = results[i];

            var tr = document.createElement('tr');
            jQuery(tr).attr('className', 'AutoComplete-not-selected');

            var th = document.createElement('th');
            var td = document.createElement('td');

            if (first) {
                jQuery(th).text(name);
                first = false;
            }
            var img = document.createElement('img');
            img.className = 'AutoComplete-result-icon';
            img.style.width = '16px';
            img.style.height = '16px';
            // If icon, then use that otherwise use blank
            img.src = r[2] ? r[2] : 'icons/blank.gif';
            jQuery(td).append(img);

            jQuery(td).append(r[1]);

            jQuery(tr).append(th);
            jQuery(tr).append(td);

            jQuery(tr).bind('mousemove', {AutoComplete: this}, function(evt) {
                var AutoComplete = evt.data.AutoComplete;
                AutoComplete.selectRow(this._rowId);
            });
            jQuery(tr).bind('click', {AutoComplete: this}, function(evt) {
                var AutoComplete = evt.data.AutoComplete;
                AutoComplete.activateRow(this._rowId);
            });

            tr._rowId = this._rowCount;
            tr._actionValue = r[0];
            this._resultsContainer.children('table').append(tr);
            this._rowCount++;
        }

        // Add spacer if this isn't the first category
        var tr = document.createElement('tr');
        var th = document.createElement('th');
        var td = document.createElement('td');
        tr.className = 'AutoComplete-spacer-row';

        jQuery(tr).append(th);
        jQuery(tr).append(td);
        this._resultsContainer.children('table').append(tr);

        this._categoryCount++;
    };

    AutoComplete.prototype.selectRow = function(id) {
        this._selectedRow = id;

        this._resultsContainer.find('tr:not(.AutoComplete-spacer-row)').each(function(i) {
            if (this._rowId == id) {
                if (!jQuery(this).hasClass('AutoComplete-selected')) {
                    jQuery(this).removeClass('AutoComplete-not-selected');
                    jQuery(this).addClass('AutoComplete-selected');
                }
            } else {
                if (!jQuery(this).hasClass('AutoComplete-not-selected')) {
                    jQuery(this).removeClass('AutoComplete-selected');
                    jQuery(this).addClass('AutoComplete-not-selected');
                }
            }
        });
    };

    AutoComplete.prototype.activateRow = function(id) {
        this.resultAction(this._resultsContainer.find('tr:not(.AutoComplete-spacer-row):eq('+ id +')')[0]._actionValue);
    }

    AutoComplete.prototype.defaultResultAction = function(val) {
        QuickOrder.SearchBar.Selected(val);
				jQuery.getJSON("exm_quickorder/ajax_funcs.php?method=productname_from_productid&productid=" + val,
					function(json) {
						jQuery("#qo_search").val(json.productname);
				});
				this.hide();
    };


    jQuery.fn.AutoComplete = function(url, options) {
        this.each(function() {
            new AutoComplete(this, url, options);
        });
    };
})(jQuery);

