/*
	title: jQuery.selectable.js
	required: jQuery(tested on 1.3.2)
	copy: Copyright 2009 nori (norimania@gmail.com)
	license: MIT
	author: 5509 - http://moto-mono.net
	archive: http://moto-mono.net/2008/09/14/jqueryselectable.html
	update: 2009-07-30 01:30
	date: 2008-09-14 02:34
 */

(function(a){a.selectable=function(q,b,d){var A=a.extend({style:"selectable",set:"show",out:"hide",inDuration:"normal",outDuration:"normal",opacity:1,pos:0},b),D=a(q),r={id:D.attr("id"),cl:D.attr("class")},s=(a("optgroup",D).length>0)?true:false;if(s){var f=a("optgroup",D);var l=new Array();for(var w=0;w<f.length;w++){l[w]=a("option",f[w]);}}else{var l=a("option",D);}var m=a(document.createElement("a")),h=a(document.createElement("span")),x=(A.style.match(/simpleBox/))?"sBox":"sctble";m.append(h).attr({id:r.id+"_dummy",href:"#"}).addClass("sctble_display").addClass(x).addClass(r.cl).insertAfter(q);D.hide();function e(c){var i=m.offset();c.css({top:i.top+m.height()*1.3+A.pos,left:i.left});}var z=a(document.createElement("div"));z.attr({id:r.id+"_mat"}).addClass(x).addClass(r.cl);var E=function(k,j){var c=a(document.createElement("a"));a(j).append(c);c.text(k.text()).attr({href:"#"+encodeURI(k.text()),name:k.val()});if(k.is(":selected")){h.text(k.text());c.addClass("selected");}if(k.hasClass("br")){var i=a(document.createElement("br"));i.insertAfter(c);}};if(s){var v=a(document.createElement("dl"));for(var u=0;u<f.length;u++){var n=a(document.createElement("dt"));n.text(a(f[u]).attr("label"));var C=a(document.createElement("dd"));for(var t=0;t<l[u].length;t++){E(a(l[u][t]),C);}v.append(n).append(C);}z.append(v).addClass("optg");}else{var o=document.createElement("p");for(var u=0;u<l.length;u++){E(a(l[u]),o);}z.append(o).addClass("nooptg");}a("body").append(z);if(document.all&&typeof document.body.style.maxHeight=="undefined"){if(A.height<z.height()){z.css("height",A.height);}}else{z.css("maxHeight",A.height);}z.addClass("sctble_mat").css({position:"absolute",zIndex:1000,display:"none"});a("*:first-child",z).addClass("first-child");a("*:last-child",z).addClass("last-child");var g=function(c){switch(A.out){case"slideUp":c.slideUp(A.outDuration);break;case"fadeOut":c.fadeOut(A.outDuration);break;default:c.hide();break;}};var y=true;var B=function(j){g(a(".sctble_mat"));switch(A.set){case"slideDown":z.slideDown(A.inDuration).css("opacity",A.opacity);break;case"fadeIn":z.css({display:"block",opacity:0}).fadeTo(A.inDuration,A.opacity);break;default:z.show().css("opacity",A.opacity);break;}var i=isNaN(A.inDuration)?null:(A.inDuration+10);if(i==null){if(A.inDuration.match(/slow/)){i=610;}else{if(A.inDuration.match(/normal/)){i=410;}else{i=210;}}}var c=setInterval(function(){a("a.selected",z).focus();clearInterval(c);},i);};m.click(function(c){e(z);a(this).addClass("sctble_focus");a("a.sctble_focus").not(this).removeClass("sctble_focus");B(this);c.stopPropagation();return false;}).keyup(function(c){if(y){e(z);B(this);c.stopPropagation();}else{y=true;}});z.click(function(c){c.stopPropagation();});a("body,a").not("a.sctble_display").click(function(c){a("a.sctble_focus").removeClass("sctble_focus");g(z);}).not("a").keyup(function(c){if(c.keyCode==27){a("a.sctble_focus").removeClass("sctble_focus");y=false;m.blur();g(z);}});a("a",z).click(function(){var c=a(this);h.text(decodeURI(c.attr("href").split("#")[1]));a('option[value="'+c.attr("name")+'"]',q).attr("selected","selected");a(".selected",z).removeClass("selected");c.addClass("selected");m.removeClass("sctble_focus");y=false;g(z);if(d){d();}m.focus();return false;});a('label[for="'+r.id+'"]').click(function(c){e(z);m.addClass("sctble_focus");a("a.sctble_focus").not(m).removeClass("sctble_focus");B(m);c.stopPropagation();return false;});};a.fn.selectable=function(b,c){a(this).each(function(){a.selectable(this,b,c);});};})(jQuery);