/*
* jQuery yacSelect Plugint v1.1 for jQuery JavaScript Library v1.3.2
* Date : 2009-11-21
* author : yves.astier@hotmail.fr
*
* Copyright (c) 2009 Yves ASTIER
* Licensed under CC-by-nc-nd ( http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ )
*/
(function(a){a.fn.yacSelect=function(n){a.fn.yacSelect.data.intNbPlugCall++;var b=a.extend(true,{},a.fn.yacSelect.defaults,n),h=a.fn.yacSelect.data.intNbPlugCall;a.fn.yacSelect.data.arrSelected[h]=[];a("html").unbind("click.yacSelect").bind("click.yacSelect",function(p){var o=false;a(p.target).parents().each(function(){if(a(this).is("div."+b.patternZone)){o=true}});if(!o){a("div."+b.patternZone).each(function(){if(a(this).data("visible")){i(a(this))}})}});return this.each(function(G){var q=this.nodeName.toLowerCase();if(q=="ul"||q=="select"){var E="left",C="right",F=b.arrowAlignRight?C:E,z=b.arrowAlignRight?E:C,o=b.css.borderTop+b.css.paddingTop,I=b.css.borderRight+b.css.paddingRight,x=b.css.borderBottom+b.css.paddingBottom,D=b.css.borderLeft+b.css.paddingLeft,B=b.width-b.arrowWidth,w=B-D-I,s=b.height-o-x,p=a('<div class="'+b.patternZone+'" tabindex="0" style="position:relative;top:0;'+z+":0;z-index:"+a.fn.yacSelect.data.posAbs+";outline:0;width:"+b.width+'px;"></div>').css(b.css.patternZone.basic).bind("click",b.func.patternZone.click),H=a('<div class="'+b.patternZoneDisplay+'" style="width:'+w+"px;border-top:"+b.css.borderTop+"px "+b.css.borderTopStyle+" "+b.css.borderTopColor+";border-right:"+b.css.borderRight+"px "+b.css.borderRightStyle+" "+b.css.borderRightColor+";border-bottom:"+b.css.borderBottom+"px "+b.css.borderBottomStyle+" "+b.css.borderBottomColor+";border-left:"+b.css.borderLeft+"px "+b.css.borderLeftStyle+" "+b.css.borderLeftColor+";white-space:nowrap;overflow:hidden;height:"+s+"px;max-height:"+s+"px;text-align:"+z+";margin:0px "+(b.arrowAlignRight?b.arrowWidth:0)+"px 0px "+(b.arrowAlignRight?0:b.arrowWidth)+"px;padding:"+b.css.paddingTop+"px "+b.css.paddingRight+"px "+b.css.paddingBottom+"px "+b.css.paddingLeft+'px;cursor:pointer;"></div>').css(b.css.patternZoneDisplay.basic),y=a('<div class="'+b.patternZoneArrow+'" style="position:absolute;'+z+":"+B+"px;top:0;width:"+b.arrowWidth+"px;height:"+b.height+"px;background:url("+b.arrowImg+') no-repeat 0 0;cursor:pointer;"></div>').css(b.css.patternZoneArrow.basic),v=a('<div class="'+b.patternZoneUl+'" style="margin:0;padding:0;list-style-type:none;cursor:pointer;width:'+b.width+"px;position:absolute;z-index:"+a.fn.yacSelect.data.posAbs+';"></div>').css(b.css.patternZoneUl.basic),u=a('<input type="hidden" name="yacSelectZoneHidden['+(typeof b.arrZoneHiddenName=="object"&&b.arrZoneHiddenName[G]?b.arrZoneHiddenName[G]:G)+']" value="" />'),A={curSelected:-1,curSelectedForce:-1,intNbOption:0};q=="select"?p.css({display:"inline","float":"left"}):p.css({display:"block",clear:"both"});p.data("visible",false).data("focused",false).data("intNbPlugCall",h).data("intNbZoneInPlug",G);p.append(u).append(H).append(y).append(v);a(this).after(p).hide();var t="";if(q=="select"&&a(this).children("optgroup").length!=0){a(this).children("optgroup").each(function(){t+='<div class="'+b.patternZoneDisabled+'" style="'+b.css.patternZoneDisabled.items.basic+'">'+this.label+"</div>";t+=l(this,G,A)})}else{t+=l(this,G,A)}v.html(t).hide();t=v.children();p.bind("focus",function(){a(this).data("focused",true);j(a(this)).css(b.css.patternZoneDisplay.focus);g(a(this)).css(b.css.patternZoneArrow.focus)}).bind("blur",function(){a(this).data("focused",false);a(this).mouseout()}).one("click",function(){if(!a(this).data("focused")){a(this).bind("click",function(){a(this).trigger("focus")})}}).bind("click",function(){i(a(this));return false}).bind("mouseover",function(){if(!a(this).data("focused")){j(a(this)).css(b.css.patternZoneDisplay.hover);g(a(this)).css(b.css.patternZoneArrow.hover)}}).bind("mouseout",function(){if(!a(this).data("focused")){j(a(this)).css(b.css.patternZoneDisplay.basic);g(a(this)).css(b.css.patternZoneArrow.basic)}}).bind("keydown",function(K){var J=K.which;switch(J){case 8:break;case 9:return true;case 27:if(a(this).data("visible")){i(a(this));return false}return true;case 13:case 32:i(a(this));return false;case 37:case 38:var L=true;case 39:case 40:f(a(this),a.fn.yacSelect.data.arrSelected[a(this).data("intNbPlugCall")][a(this).data("intNbZoneInPlug")]+(L?-1:1));return false;case 33:case 36:var r=true;case 34:case 35:var M=m(a(this)).not("."+b.patternZoneDisabled).length;M==0?j(a(this)).html(b.title):f(a(this),r?0:M-1);return false}}).one("focus",function(){var r=a(this).data("intNbPlugCall");m(a(this)).not("."+b.patternZoneDisabled).each(function(){k(a(this));a(this).click(function(){var K=d(a(this)),J=m(K).not("."+b.patternZoneDisabled);H=j(K),indexInUl=J.index(this);if(indexInUl!=a.fn.yacSelect.data.arrSelected[r][G]){b.func.patternZone.change(a(this));f(K,indexInUl)}i(K);return false}).bind("click",b.func.yacSelectZoneUl.click).hover(function(){a(this).css(b.css.patternZoneUl.hover);b.func.yacSelectZoneUl.hover.over()},function(){var J=d(a(this));if(e(J).children().not("."+b.patternZoneDisabled).index(a(this))==a.fn.yacSelect.data.arrSelected[J.data("intNbPlugCall")][J.data("intNbZoneInPlug")]){a(this).css(b.css.patternZoneUl.selected)}else{a(this).css(b.css.patternZoneUl.basic)}b.func.yacSelectZoneUl.hover.out()})})});a.fn.yacSelect.data.arrSelected[h][G]=A.curSelected;A.curSelected==-1?H.html(b.title):f(p,A.curSelected);k(j(H));a.fn.yacSelect.data.posAbs--}});function k(o){if(b.disabledFocusInZone){o.find("a").each(function(){a(this).attr("tabindex",-1)})}}function f(u,p){var t=m(u).not("."+b.patternZoneDisabled),s=j(u),r=t.eq(p),o=u.data("intNbPlugCall"),q=u.data("intNbZoneInPlug"),v=a.fn.yacSelect.data.arrSelected[o][q];if(r.length==1){if(v!=-1){t.eq(v).css(b.css.patternZoneUl.basic)}r.css({"background-color":"transparent"});s.html(r.clone().attr("style",b.css.patternZoneUl.items.selected));r.css(b.css.patternZoneUl.selected);s.prev().attr("value",c(s).prev().children(":eq("+p+")").attr("value"));a.fn.yacSelect.data.arrSelected[o][q]=p}}function j(o){return o.find("> div:eq(0)")}function g(o){return o.find("> div:eq(1)")}function e(o){return o.find("> div:eq(2)")}function m(o){return e(o).children()}function c(o){return o.parent()}function d(o){return o.parent().parent()}function l(o,q,t){var s="",r=t.curSelectedForce,v=t.curSelected;for(var p=0,u=o.children.length;p<u;p++,t.intNbOption++){var w=o.children[p];if(w.selected==true){v=t.intNbOption}if(b.selected!=undefined&&w.value==b.selected){r=t.intNbOption}s+='<div style="'+b.css.patternZoneUl.items.basic+'">'+w.innerHTML+"</div>"}if(r!=-1||b.selectedForce){v=r}t.curSelected=v;return s}function i(o){o.data("visible")?e(o).slideUp(b.slideSpeedUp):e(o).slideDown(b.slideSpeedDown);o.data("visible",!o.data("visible"))}};a.fn.yacSelect.data={posAbs:9999,arrSelected:[],intNbPlugCall:-1};a.fn.yacSelect.defaults={title:"",titleInLI:false,selected:undefined,selectedForce:false,patternZone:"yac-Select-Zone",patternZoneDisplay:"yac-Select-ZoneDisplay",patternZoneArrow:"yac-Select-ZoneArrow",patternZoneUl:"yac-Select-ZoneUl",patternZoneDisabled:"yac-Select-Disabled",arrZoneHiddenName:{},width:150,height:24,arrowWidth:23,arrowImg:"arrow-sprite2.png",arrowAlignRight:true,slideSpeedUp:"fast",slideSpeedDown:"fast",disabledFocusInZone:true,css:{borderTop:1,borderTopStyle:"solid",borderTopColor:"#ccc",borderRight:0,borderRightStyle:"solid",borderRightColor:"#ccc",borderBottom:1,borderBottomStyle:"solid",borderBottomColor:"#ccc",borderLeft:1,borderLeftStyle:"solid",borderLeftColor:"#ccc",paddingTop:2,paddingRight:2,paddingBottom:2,paddingLeft:2,patternZone:{basic:{font:"400 12px arial","background-color":"#fff"}},patternZoneDisplay:{basic:{font:"400 12px arial","background-color":"#fff"},hover:{"background-color":"#eee"},focus:{"background-color":"#ddf"}},patternZoneUl:{basic:{"background-color":"#fff"},hover:{"background-color":"#dfd"},selected:{"background-color":"#d4ffbf"},items:{basic:"padding:4px 2px;margin:0;position:relative;",selected:"padding:0;margin:0;"}},patternZoneArrow:{basic:{"background-position":"0 0%"},hover:{"background-position":"0 50%"},focus:{"background-position":"0 100%"}},patternZoneDisabled:{items:{basic:"padding:2px 1px;font-weight:700;"}}},func:{patternZone:{click:function(){},change:function(){}},yacSelectZoneUl:{click:function(){},hover:{over:function(){},out:function(){}}}}}})(jQuery);