/*
* jQuery FlexBox $Version: 0.9.1 $
*
* Copyright (c) 2008 Noah Heldman and Fairway Technologies (http://www.fairwaytech.com/flexbox)
* Licensed under Ms-PL (http://www.codeplex.com/flexbox/license)
*
* $Date: 2010/07/21 14:15:09 $
* $Rev: 0.9.1.0 $
*/
(function(a){a.flexbox=function(I,E){var G=false,m=[],F=[],e=0,i="\u25CA",K=false,w=E.paging.pageSize,A=a(I).css("position","relative").css("z-index",0);var J=a(document.createElement("input")).attr("type","hidden").attr("id",A.attr("id")+"_hidden").attr("name",A.attr("id")).val(E.initialHiddenValue).appendTo(A);var y=a(document.createElement("input")).attr("id",A.attr("id")+"_input").attr("autocomplete","off").addClass(E.inputClass).css("width",E.width.toString().indexOf("%")==-1?E.width+"px":E.width).appendTo(A).click(function(o){if(E.watermark!==""&&this.value===E.watermark){this.value=""}else{this.select()}}).focus(function(M){var o=a(this);if(o.hasClass("watermark")){o.val("").removeClass("watermark")}}).blur(function(o){setTimeout(function(){if(!M.data("active")){b()}else{M.focus()}},200);var M=a(this);if(!M.val()&&!M.data("active")){M.val(E.watermark).addClass("watermark")}});if(E.showResultsOnType){y.keypress(C)}else{y.keypress(function(){b()})}var B={};if(E.initialValue!==""){y.val(E.initialValue).removeClass("watermark")}else{if(E.watermark!==""){y.addClass("watermark").val(E.watermark)}}if(a.browser.msie&&E.showResultsOnType){y.keydown(C)}var f=0;if(E.showArrow&&E.showResults){var h=a(document.createElement("span")).attr("id",A.attr("id")+"_arrow").addClass(E.arrowClass).addClass("out").hover(function(){a(this).removeClass("out").addClass("over")},function(){a(this).removeClass("over").addClass("out")}).mousedown(function(){a(this).removeClass("over").addClass("active")}).mouseup(function(){a(this).removeClass("active").addClass("over")}).click(function(o){if(n.is(":visible")){b()}else{y.focus();if(E.watermark!==""&&y.val()===E.watermark){y.val("")}else{y.select()}if(G){clearTimeout(G)}G=setTimeout(function(){D(1,true,E.arrowQuery)},E.queryDelay)}}).appendTo(A);f=h.outerWidth();if(E.width.toString().indexOf("%")==-1){var q=E.width}else{q=y.width()}var s=(y.outerWidth()-y.width())+(h.outerWidth()-h.width())+1;y.css("width",(q-h.width()-s)+"px")}if(E.width.toString().indexOf("%")!=-1&&E.showArrow){a(window).resize(function(){y.css("width",E.width.toString().indexOf("%")==-1?E.width+"px":E.width);if(E.width.toString().indexOf("%")==-1){var o=E.width}else{o=y.width()}var M=(y.outerWidth()-y.width())+(h.outerWidth()-h.width())+1;y.css("width",(o-h.width()-M)+"px")})}var n=a(document.createElement("div")).attr("id",A.attr("id")+"_ctr").css("float","left").css("position","absolute").css("z-index","5").css("top",y.offset().top+y.outerHeight()).css("left",y.offset().left).css("min-width",Math.max(y.outerWidth()+f-2,0)).addClass(E.containerClass).appendTo(a("body")).hide();var c=a(document.createElement("div")).addClass(E.contentClass).css("float","left").css("position","relative").appendTo(n).scroll(function(){K=true});var t=a(document.createElement("div")).appendTo(n);function C(O){var M=0;if(typeof(O.ctrlKey)!=="undefined"){if(O.ctrlKey){M|=1}if(O.shiftKey){M|=2}}else{if(O.modifiers&Event.CONTROL_MASK){M|=1}if(O.modifiers&Event.SHIFT_MASK){M|=2}}if(/16$|17$/.test(O.keyCode)){return}var N=O.keyCode===9;var o=O.keyCode===9&&M>0;if(N){if(j()){v()}}if((/27$|38$/.test(O.keyCode)&&n.is(":visible"))||(/13$|40$/.test(O.keyCode))){if(O.preventDefault){O.preventDefault()}if(O.stopPropagation){O.stopPropagation()}O.cancelBubble=true;O.returnValue=false;switch(O.keyCode){case 38:H();break;case 40:if(n.is(":visible")){r()}else{u(true)}break;case 13:if(j()){v()}else{u(true)}break;case 27:b();break}}else{if(!N&&!o){u(false)}}}function u(o){if(G){clearTimeout(G)}G=setTimeout(function(){D(1,o,"")},E.queryDelay)}function D(P,M,O){var N=O&&O.length>0?O:a.trim(y.val());if(N.length>=E.minChars||M){c.html("").attr("scrollTop",0);var o=l(N,P);if(o){z(o.data,N);d(P,o.t)}else{w=w===undefined?0:w;var Q={q:N,p:P,s:w,contentType:"application/json; charset=utf-8"};var R=function(T){var S=z(T,N);totalResults=parseInt(T[E.totalProperty]);L(N,P,w,totalResults,T,S);d(P,totalResults)};if(typeof(B.abort)=="function"){B.abort()}if(E.method.toUpperCase()=="POST"){B=a.post(E.source,Q,R,"json")}else{if(typeof E.source=="string"){B=a.getJSON(E.source,Q,R)}else{R(E.source)}}}}else{b()}}function d(O,M){t.html("").removeClass(E.paging.cssClass);c.css("height","auto");if(E.showResults&&E.paging&&M>w){var o=M/w,N=M%w;if(N>0){o=parseInt(++o)}g(o,O,M)}}function p(N,M,o){if(/^13$|^39$|^37$/.test(N.keyCode)){if(N.preventDefault){N.preventDefault()}if(N.stopPropagation){N.stopPropagation()}N.cancelBubble=true;N.returnValue=false;switch(N.keyCode){case 13:if(/^\d+$/.test(M)&&M<=o){D(M,true)}else{alert("Please enter a page number less than or equal to "+o)}break;case 39:a("#"+A.attr("id")+"n").click();break;case 37:a("#"+A.attr("id")+"p").click();break}}}function x(o){y.data("active",true);D(parseInt(a(this).attr("page")),true,y.attr("pq"));return false}function g(ad,Z,R){var O="&lt;&lt;",W="&lt;",X="&gt;",Q="&gt;&gt;",N="...";t.addClass(E.paging.cssClass);var U=a(document.createElement("a")).attr("href","#").addClass("page").click(x),ac=a(document.createElement("span")).addClass("page"),P=A.attr("id");if(Z>1){U.clone(true).attr("id",P+"f").attr("page",1).html(O).appendTo(t);U.clone(true).attr("id",P+"p").attr("page",Z-1).html(W).appendTo(t)}else{ac.clone(true).html(O).appendTo(t);ac.clone(true).html(W).appendTo(t)}if(E.paging.style==="links"){var o=E.paging.maxPageLinks;if(ad<=o){for(var aa=1;aa<=ad;aa++){if(aa===Z){ac.clone(true).html(Z).appendTo(t)}else{U.clone(true).attr("page",aa).html(aa).appendTo(t)}}}else{if((Z+parseInt(o/2))>ad){startPage=ad-o+1}else{startPage=Z-parseInt(o/2)}if(startPage>1){U.clone(true).attr("page",startPage-1).html(N).appendTo(t)}else{startPage=1}for(var aa=startPage;aa<startPage+o;aa++){if(aa===Z){ac.clone(true).html(aa).appendTo(t)}else{U.clone(true).attr("page",aa).html(aa).appendTo(t)}}if(ad>(startPage+o)){U.clone(true).attr("page",aa).html(N).appendTo(t)}}}else{if(E.paging.style==="input"){var Y=a(document.createElement("input")).addClass("box").click(function(ae){y.data("active",true);this.select()}).keypress(function(ae){return p(ae,this.value,ad)}).val(Z).appendTo(t)}}if(Z<ad){var M=U.clone(true).attr("id",P+"n").attr("page",+Z+1).html(X).appendTo(t);U.clone(true).attr("id",P+"l").attr("page",ad).html(Q).appendTo(t);c.css("height",($row.outerHeight()*w)+"px")}else{ac.clone(true).html(X).appendTo(t);ac.clone(true).html(Q).appendTo(t);c.css("height","auto")}var T=(Z-1)*w+1;var V=(T>(R-w))?R:T+w-1;if(E.paging.showSummary){var ab={start:T,end:V,total:R,page:Z,pages:ad};var S=E.paging.summaryTemplate.applyTemplate(ab);a(document.createElement("span")).addClass(E.paging.summaryClass).html(S).appendTo(t)}}function l(N,O){var M=N+i+O;if(F[M]){for(var o=0;o<m.length;o++){if(m[o]===M){m.unshift(m.splice(o,1)[0]);return F[M]}}}return false}function L(R,S,P,N,Q,M){if(E.maxCacheBytes>0){while(m.length&&(e+M>E.maxCacheBytes)){var O=m.pop();e-=O.size}var o=R+i+S;F[o]={q:R,p:S,s:P,t:N,size:M,data:Q};m.push(o);e+=M}}function z(U,o){var W=0;if(!U){return}if(parseInt(U[E.totalProperty])===0&&E.noResultsText&&E.noResultsText.length>0){c.addClass(E.noResultsClass).html(E.noResultsText);n.css("top",y.offset().top+y.outerHeight()).css("left",y.offset().left).show();return}else{c.removeClass(E.noResultsClass).html("").attr("scrollTop",0)}n.css("top",y.offset().top+y.outerHeight()).css("left",y.offset().left);var N=false;for(var R=0;R<U[E.resultsProperty].length;R++){var P=U[E.resultsProperty][R],ab=E.resultTemplate.applyTemplate(P),Q=o===ab,M=false,Z=false,V=false;if(!Q&&E.highlightMatches&&o!==""){var T="("+o+")",S='<span class="'+E.matchClass+'">$1</span>';if(ab.match("<(.|\n)*?>")){Z=true;T="(>)([^<]*?)("+o+")((.|\n)*?)(<)";S='$1$2<span class="'+E.matchClass+'">$3</span>$4$6'}var Y=ab;ab=ab.replace(new RegExp(T,E.highlightMatchesRegExModifier),S);if(ab.length>Y.length){V=true}}else{if(Q&&o!==""){V=true}}if(E.autoCompleteFirstMatch&&!Z&&R===0){var aa=P[E.displayValue];if(o.length>0&&aa.indexOf(o)===0){y.attr("pq",o);y.val(aa);M=k(o.length,y.val().length)}}if(!E.showResults){return}$row=a(document.createElement("div")).attr("id",P[E.displayValue]).attr("val",P[E.hiddenValue]).addClass("row").css("min-width",(y.outerWidth()+f-2)).html((typeof(P.isSubItem)!="undefined"&&P.isSubItem?'<img src="/themes/theme_begonija_asu/img/symphony2/subitem.gif" alt=""/> ':"")+ab).click(function(ac){y.data("active",true)}).appendTo(c);if(V&&!N){N=$row}if((!E.paging||(E.paging&&w>U[E.totalProperty]))&&R===U[E.resultsProperty].length-1){$row.css("border-bottom","none")}if(Q||M){$row.addClass(E.selectClass)}W+=ab.length}if(W===0){b();return}n.parent().css("z-index",11000);n.mousedown(function(ac){y.data("active",true);setTimeout(function(){y.data("active",false)},500)}).show();c.children("div").mouseover(function(){c.children("div").removeClass(E.selectClass);a(this).addClass(E.selectClass)}).click(function(ac){ac.preventDefault();ac.stopPropagation();v()});if(E.maxVisibleRows>0){var X=Math.round($row.parent()[0].scrollHeight/U[E.totalProperty])*E.maxVisibleRows;var O=a(window).height()+a(window).scrollTop()-(y.height()+y.offset().top);c.css("maxHeight",O<X?O-4:X)}else{c.css("height","auto")}if(N){c.scrollTo(N)}return W}function k(N,M){var o=y[0];if(o.createTextRange){var O=o.createTextRange();O.moveStart("character",N);O.moveEnd("character",M-o.value.length);O.select()}else{if(o.setSelectionRange){o.setSelectionRange(N,M)}}o.focus();return true}String.prototype.applyTemplate=function(M){try{if(M===""){return this}return this.replace(/{([^{}]*)}/g,function(O,N){var R;if(N.indexOf(".")!==-1){var Q=N.split(".");var S=M;for(var P=0;P<Q.length;P++){S=S[Q[P]]}R=S}else{R=M[N]}if(typeof R==="string"||typeof R==="number"){return R}else{throw (O)}})}catch(o){alert("Invalid JSON property "+o+" found when trying to apply resultTemplate or paging.summaryTemplate.\nPlease check your spelling and try again.")}};function b(){y.data("active",false);A.css("z-index",0);n.hide()}function j(){if(!n.is(":visible")){return false}var o=c.children("div."+E.selectClass);if(!o.length){o=false}return o}function v(){$curr=j();if($curr){if(E.onBeforeSelect){y.attr("hiddenValue",J.val());$curr=E.onBeforeSelect.call(y[0],$curr)}y.val($curr.attr("id")).focus();J.val($curr.attr("val"));b();if(E.onSelect){y.attr("hiddenValue",J.val());E.onSelect.apply(y[0])}}}function r(){$curr=j();if($curr&&$curr.next().length>0){$curr.removeClass(E.selectClass).next().addClass(E.selectClass);var Q=c.attr("scrollTop"),P=$curr[0],O,M,o;if(a.browser.mozilla&&parseInt(a.browser.version)<=2){O=document.getBoxObjectFor(c[0]).y+c.attr("offsetHeight");M=document.getBoxObjectFor(P).y+$curr.attr("offsetHeight");o=document.getBoxObjectFor(P).height}else{O=c[0].getBoundingClientRect().bottom;var N=P.getBoundingClientRect();M=N.bottom;o=M-N.top}if(M>=O){c.attr("scrollTop",Q+o)}}else{if(!$curr){c.children("div:first-child").addClass(E.selectClass)}}}function H(){$curr=j();if($curr&&$curr.prev().length>0){$curr.removeClass(E.selectClass).prev().addClass(E.selectClass);var R=c.attr("scrollTop"),Q=$curr[0],M=$curr.parent()[0],O,P,o;if(a.browser.mozilla&&parseInt(a.browser.version)<=2){o=document.getBoxObjectFor(Q).height;O=document.getBoxObjectFor(c[0]).y-(o*2);P=document.getBoxObjectFor(Q).y-document.getBoxObjectFor(c[0]).y}else{O=M.getBoundingClientRect().top;var N=Q.getBoundingClientRect();P=N.top;o=N.bottom-P}if(P<=O){c.attr("scrollTop",R-o)}}else{if(!$curr){c.children("div:last-child").addClass(E.selectClass)}}}};a.fn.flexbox=function(d,b){if(!d){return}try{var e=a.fn.flexbox.defaults;var f=a.extend({},e,b);for(var g in f){if(e[g]===undefined){throw ("Invalid option specified: "+g+"\nPlease check your spelling and try again.")}}f.source=d;if(b){f.paging=(b.paging||b.paging==null)?a.extend({},e.paging,b.paging):false;for(var g in f.paging){if(e.paging[g]===undefined){throw ("Invalid option specified: "+g+"\nPlease check your spelling and try again.")}}if(b.displayValue&&!b.hiddenValue){f.hiddenValue=b.displayValue}}this.each(function(){new a.flexbox(this,f)});return this}catch(c){if(typeof c==="object"){alert(c.message)}else{alert(c)}}};a.fn.flexbox.defaults={method:"GET",queryDelay:200,containerClass:"ffb",contentClass:"content",selectClass:"ffb-sel",inputClass:"ffb-input",arrowClass:"ffb-arrow",matchClass:"ffb-match",noResultsText:"No matching results",noResultsClass:"ffb-no-results",showResults:true,showResultsOnType:true,autoCompleteFirstMatch:true,highlightMatches:true,highlightMatchesRegExModifier:"ig",minChars:1,showArrow:true,arrowQuery:"",onBeforeSelect:false,onSelect:false,maxCacheBytes:32768,resultTemplate:"{name}",displayValue:"name",hiddenValue:"id",initialValue:"",initialHiddenValue:"",watermark:"",width:200,resultsProperty:"results",totalProperty:"total",maxVisibleRows:0,paging:{style:"input",cssClass:"paging",pageSize:10,maxPageLinks:5,showSummary:true,summaryClass:"summary",summaryTemplate:"Displaying {start}-{end} of {total} results"}};a.fn.setValue=function(d,c){var e="#"+this.attr("id");var b=[];switch(c){case"input":b.push(e+"_input");break;case"hidden":b.push(e+"_hidden");default:b.push(e+"_hidden");b.push(e+"_input");break}a(b.join(",")).val(d).removeClass("watermark")}})(jQuery);
