/**
*	Hyjack Select v1.1.2 plugin for jQuery v1.4.4+ 
*	Copyright (c) 2011 Brant Wills
*	August 31, 2010
*/
(function(a){var g=0;version="v1.1.2";hyjackable="select";a.hyjack_select={update:function(d){if(d){a(".hjsel_container").each(function(){if(a(this).data("hyjack.container")===a(d).data("hyjacked.index")){a(this).hide();return false}});a(d).data("is.hyjacked",false).hyjack_select()}else a.hyjack_select.update_all()},update_all:function(){a(".hjsel_container").hide();a(":input").filter(hyjackable).each(function(){a(this).data("is.hyjacked")&&a(this).data("is.hyjacked",false).hyjack_select()})},dispose:function(d){if(d){a(".hjsel_container").each(function(){if(a(this).data("hyjack.container")=== a(d).data("hyjacked.index")){a(this).hide();return false}});a(d).data("is.hyjacked",false).show()}else a.hyjack_select.dispose_All()},dispose_All:function(){a(".hjsel_container").each(function(){a(this).data("hyjack.container")&&a(this).hide()});a(":input").filter(hyjackable).each(function(){a(this).data("is.hyjacked",false).show()})}};a.fn.hyjack_select=function(d){function o(b,c){p(c);q(a(b),c);m(c);c.select.append(c.txtbox).append(c.ddCancel).append(c.ddImage);c.container.append(c.select).append(c.options); a(document).bind("click",function(e){if(a(e.target).data("hyjack.ddImage")===c.ddImage.data("hyjack.ddImage"))c.options.toggle();else if(a(e.target).data("hyjack.ddCancel")===c.ddCancel.data("hyjack.ddCancel"))n(c);else a(e.target).data("hyjack.txtbox")===c.txtbox.data("hyjack.txtbox")||a(e.target).parents().data("hyjack.container")===c.container.data("hyjack.container")?c.options.show():i(c);d.restrictSearch&&c.txtbox.val(h(a("option:selected",c.selector).text()));k(c)});a(window).load(function(){m(c)}); return c.container}function h(b){return a("<div/>").html(b).text()}function r(b){return a("<div/>").text(b).html()}function s(){switch(d.filter.toLowerCase()){case "first":a.expr[":"].hj_contains_first=function(b,c,e){return jQuery(b).text().toUpperCase().indexOf(e[3].toUpperCase())==0};break;case "words":a.expr[":"].hj_contains_words=function(b,c,e){b=jQuery(b).text().toUpperCase();c=e[3].toUpperCase();var f=c.split(/\s+/);if(f.length==1)return b.indexOf(c)>=0;for(c=0;e=f[c];c++)if(b.indexOf(e)< 0)return false;return true};break;default:d.filter="like";a.expr[":"].hj_contains_like=function(b,c,e){return jQuery(b).text().toUpperCase().indexOf(e[3].toUpperCase())>=0}}}function t(b,c){switch(c.keyCode){case 37:break;case 39:break;case 16:break;case 17:break;case 18:break;case 19:break;case 20:break;case 33:break;case 34:break;case 35:break;case 36:break;case 45:break;case 9:break;case 13:l(a(".hjsel_options_hover",b.options),b);k(b);i(b);b.selector.change();break;case 38:if(a(".hjsel_noitems", b.options).length)break;$dir=a(".hjsel_options_hover",b.options).prev();if(b.options.is(":visible"))for(;!$dir.is(":visible");)$dir=$dir.prev().attr("val")?$dir.prev():a("li",b.options).last();l($dir,b);break;case 40:if(a(".hjsel_noitems",b.options).length)break;$dir=a(".hjsel_options_hover",b.options).next();if(b.options.is(":visible"))for(;!$dir.is(":visible");)$dir=$dir.next().attr("val")?$dir.next():a("li",b.options).first();l($dir,b);break;case 27:i(b);break;default:var e=0,f=0;a("li",b.options).remove(".hjsel_noitems").removeClass("hjsel_options_hover").hide(); a("li:hj_contains_"+d.filter+'("'+b.txtbox.val()+'")',b.options).show();a("li",b.options).each(function(){a(this).is(":hidden")&&e++;f++});e==f&&b.options.append(a("<li/>").append(d.emptyMessage).addClass("hjsel_noitems"));b.options.scrollTop(0).show()}}function l(b,c){if(b!=null){c.txtbox.val(h(b.text()));c.selector.val(b.attr("val"))}a("li",c.options).each(function(e,f){a(f).removeClass("hjsel_options_hover");c.selector.val()==a(f).attr("val")&&a(f).addClass("hjsel_options_hover")})}function n(b){a(".hjsel_options").hide(); b.txtbox.val("").focus();b.options.show()}function k(b){a("li",b.options).show();a(".hjsel_noitems",b.options).remove()}function i(b){b.options.hide();b.txtbox.val()===""&&b.txtbox.val(h(a("option:selected",b.selector).text()))}function p(b){b.txtbox.bind("click",function(){n(b)}).bind("keydown",function(c){c.keyCode==9&&i(b)}).bind("keyup",function(c){t(b,c)}).val(h(a("option:selected",b.selector).text()))}function m(b){b.txtbox.width(b.selector.width()-(b.ddImage.attr("width")+b.ddCancel.attr("width")+ d.offset));b.options.width(b.selector.width());b.container.width(b.selector.width())}function q(b,c){var e=a("<ul/>");a("option",b).each(function(f,j){e.append(a("<li/>").attr("val",a(j).val()).append(r(a(j).text())).bind("mouseenter",function(){a("li",e).removeClass("hjsel_options_hover");a(this).addClass("hjsel_options_hover");c.txtbox.focus()}).bind("click",function(){a(this).addClass("hjsel_options_hover");c.txtbox.focus().val(h(a(j).text()));c.selector.val(a(j).val()).change();k(c)}))});c.options.append(e)} try{d=jQuery.extend({ddImage:"arrow_down.png",ddCancel:"cancel.png",ddImageClass:"hjsel_ddImage",ddCancelClass:"hjsel_ddCancel",emptyMessage:"No Items to Display",offset:15,filter:"like",restrictSearch:false},d);return this.filter(hyjackable).each(function(){if(!a(this).data("is.hyjacked"))if(a(this).attr("disabled"))a(this).show();else if(a("option",this).length){g++;s();a(this).attr("autocomplete","off").data("is.hyjacked",true).data("hyjacked.index",g);hj={selector:a(this),container:a("<div/>").data("hyjack.container", g).addClass("hjsel_container"),select:a("<div/>").data("hyjack.select",g).addClass("hjsel_select"),options:a("<div/>").data("hyjack.options",g).addClass("hjsel_options"),txtbox:a('<input type="text"/>').data("hyjack.txtbox",g).addClass("hjsel_txtbox"),ddImage:a("<img/>").data("hyjack.ddImage",g).addClass(d.ddImageClass).attr("src",d.ddImage),ddCancel:a("<img/>").data("hyjack.ddCancel",g).addClass(d.ddCancelClass).attr("src",d.ddCancel)};return a(this).hide().before(o(this,hj))}else a(this).show()})}catch(u){alert("Hyjack Select "+ version+" Error:\n"+u.description)}}})(jQuery);
