

/************************************************************************
*************************************************************************
@Name :       	jRating - jQuery Plugin
@Revison :    	2.1
@Date : 		26/01/2011
@Author:     	 Surrel Mickael (www.myjqueryplugins.com - www.msconcept.fr)
@License :		 Open Source - MIT License : http://www.opensource.org/licenses/mit-license.php

**************************************************************************
*************************************************************************/
(function($) {
	$.fn.jRating = function(op) {
		var defaults = {
			/** String vars **/
			bigStarsPath : 'jquery/icons/stars.png', // path of the icon stars.png
			smallStarsPath : 'jquery/icons/small.png', // path of the icon small.png
			phpPath : 'php/jRating.php', // path of the php file jRating.php
			type : 'big', // can be set to 'small' or 'big'

			/** Boolean vars **/
			step:false, // if true,  mouseover binded star by star,
			isDisabled:false,
			showRateInfo: true,

			/** Integer vars **/
			length:5, // number of star to display
			decimalLength : 0, // number of decimals.. Max 3, but you can complete the function 'getNote'
			rateMax : 20, // maximal rate - integer from 0 to 9999 (or more)
			rateInfosX : -45, // relative position in X axis of the info box when mouseover
			rateInfosY : 5, // relative position in Y axis of the info box when mouseover

			/** Functions **/
			onSuccess : null,
			onError : null
		};

		if(this.length>0)
		return this.each(function() {
			var opts = $.extend(defaults, op),
			newWidth = 0,
			starWidth = 0,
			starHeight = 0,
			bgPath = '';

			if($(this).hasClass('jDisabled') || opts.isDisabled)
				var jDisabled = true;
			else
				var jDisabled = false;

			getStarWidth();
			$(this).height(starHeight);

			var average = parseFloat($(this).attr('data').split('_')[0]),
			idBox = parseInt($(this).attr('data').split('_')[1]), // get the id of the box
			widthRatingContainer = starWidth*opts.length, // Width of the Container
			widthColor = average/opts.rateMax*widthRatingContainer, // Width of the color Container

			quotient =
			$('<div>',
			{
				'class' : 'jRatingColor',
				css:{
					width:widthColor
				}
			}).appendTo($(this)),

			average =
			$('<div>',
			{
				'class' : 'jRatingAverage',
				css:{
					width:0,
					top:- starHeight
				}
			}).appendTo($(this)),

			 jstar =
			$('<div>',
			{
				'class' : 'jStar',
				css:{
					width:widthRatingContainer,
					height:starHeight,
					top:- (starHeight*2),
					background: 'url('+bgPath+') repeat-x'
				}
			}).appendTo($(this));

			$(this).css({width: widthRatingContainer,overflow:'hidden',zIndex:1,position:'relative'});

			if(!jDisabled)
			$(this).bind({
				mouseenter : function(e){
					var realOffsetLeft = findRealLeft(this);
					var relativeX = e.pageX - realOffsetLeft;
					if (opts.showRateInfo)
					var tooltip =
					$('<p>',{
						'class' : 'jRatingInfos',
						html : getNote(relativeX)+' <span class="maxRate">/ '+opts.rateMax+'</span>',
						css : {
							top: (e.pageY + opts.rateInfosY),
							left: (e.pageX + opts.rateInfosX)
						}
					}).appendTo('body').show();
				},
				mouseover : function(e){
					$(this).css('cursor','pointer');
				},
				mouseout : function(){
					$(this).css('cursor','default');
					average.width(0);
				},
				mousemove : function(e){
					var realOffsetLeft = findRealLeft(this);
					var relativeX = e.pageX - realOffsetLeft;
					if(opts.step) newWidth = Math.floor(relativeX/starWidth)*starWidth + starWidth;
					else newWidth = relativeX;
					average.width(newWidth);
					if (opts.showRateInfo)
					$("p.jRatingInfos")
					.css({
						left: (e.pageX + opts.rateInfosX)
					})
					.html(getNote(newWidth) +' <span class="maxRate">/ '+opts.rateMax+'</span>');
				},
				mouseleave : function(){
					$("p.jRatingInfos").remove();
				},
				click : function(e){
					$(this).unbind().css('cursor','default').addClass('jDisabled');
					if (opts.showRateInfo) $("p.jRatingInfos").fadeOut('fast',function(){$(this).remove();});
					e.preventDefault();
					var rate = getNote(newWidth);
					average.width(newWidth);

					/** ONLY FOR THE DEMO, YOU CAN REMOVE THIS CODE **/
						$('.datasSent p').html('<strong>idBox : </strong>'+idBox+'<br /><strong>rate : </strong>'+rate+'<br /><strong>action :</strong> rating');
						$('.serverResponse p').html('<strong>Loading...</strong>');
					/** END ONLY FOR THE DEMO **/

					$.post(opts.phpPath,{
							idBox : idBox,
							rate : rate,
							action : 'rating',
							id: $('#rate_pic_id').attr('value')
						},
						function(data) {
							if(!data.error)
							{
								/** ONLY FOR THE DEMO, YOU CAN REMOVE THIS CODE **/
									$('.serverResponse p').html(data.server);
								/** END ONLY FOR THE DEMO **/


								/** Here you can display an alert box,
									or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify
									exemple :	*/
								if(opts.onSuccess) opts.onSuccess(data);
							}
							else
							{

								/** ONLY FOR THE DEMO, YOU CAN REMOVE THIS CODE **/
									$('.serverResponse p').html(data.server);
								/** END ONLY FOR THE DEMO **/

								/** Here you can display an alert box,
									or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify
									exemple :	*/
								if(opts.onError) opts.onError(data);
							}
						},
						'json'
					);
				}
			});

			function getNote(relativeX) {
				var noteBrut = parseFloat((relativeX*100/widthRatingContainer)*opts.rateMax/100);
				switch(opts.decimalLength) {
					case 1 :
						var note = Math.round(noteBrut*10)/10;
						break;
					case 2 :
						var note = Math.round(noteBrut*100)/100;
						break;
					case 3 :
						var note = Math.round(noteBrut*1000)/1000;
						break;
					default :
						var note = Math.round(noteBrut*1)/1;
				}
				return note;
			};

			function getStarWidth(){
				switch(opts.type) {
					case 'small' :
						starWidth = 12; // width of the picture small.png
						starHeight = 10; // height of the picture small.png
						bgPath = opts.smallStarsPath;
					break;
					default :
						starWidth = 23; // width of the picture stars.png
						starHeight = 20; // height of the picture stars.png
						bgPath = opts.bigStarsPath;
				}
			};

			function findRealLeft(obj) {
			  if( !obj ) return 0;
			  return obj.offsetLeft + findRealLeft( obj.offsetParent );
			};
		});

	}
})(jQuery);


/*
 * SimpleModal 1.4.1 - jQuery Plugin
 * http://www.ericmmartin.com/projects/simplemodal/
 * Copyright (c) 2010 Eric Martin (http://twitter.com/ericmmartin)
 * Dual licensed under the MIT and GPL licenses
 * Revision: $Id: jquery.simplemodal.js 261 2010-11-05 21:16:20Z emartin24 $
 */
(function(d){var k=d.browser.msie&&parseInt(d.browser.version)===6&&typeof window.XMLHttpRequest!=="object",m=d.browser.msie&&parseInt(d.browser.version)===7,l=null,f=[];d.modal=function(a,b){return d.modal.impl.init(a,b)};d.modal.close=function(){d.modal.impl.close()};d.modal.focus=function(a){d.modal.impl.focus(a)};d.modal.setContainerDimensions=function(){d.modal.impl.setContainerDimensions()};d.modal.setPosition=function(){d.modal.impl.setPosition()};d.modal.update=function(a,b){d.modal.impl.update(a,
b)};d.fn.modal=function(a){return d.modal.impl.init(this,a)};d.modal.defaults={appendTo:"body",focus:true,opacity:50,overlayId:"simplemodal-overlay",overlayCss:{},containerId:"simplemodal-container",containerCss:{},dataId:"simplemodal-data",dataCss:{},minHeight:null,minWidth:null,maxHeight:null,maxWidth:null,autoResize:false,autoPosition:true,zIndex:1E3,close:true,closeHTML:'<a class="modalCloseImg" title="Close"></a>',closeClass:"simplemodal-close",escClose:true,overlayClose:false,position:null,
persist:false,modal:true,onOpen:null,onShow:null,onClose:null};d.modal.impl={d:{},init:function(a,b){var c=this;if(c.d.data)return false;l=d.browser.msie&&!d.boxModel;c.o=d.extend({},d.modal.defaults,b);c.zIndex=c.o.zIndex;c.occb=false;if(typeof a==="object"){a=a instanceof jQuery?a:d(a);c.d.placeholder=false;if(a.parent().parent().size()>0){a.before(d("<span></span>").attr("id","simplemodal-placeholder").css({display:"none"}));c.d.placeholder=true;c.display=a.css("display");if(!c.o.persist)c.d.orig=
a.clone(true)}}else if(typeof a==="string"||typeof a==="number")a=d("<div></div>").html(a);else{alert("SimpleModal Error: Unsupported data type: "+typeof a);return c}c.create(a);c.open();d.isFunction(c.o.onShow)&&c.o.onShow.apply(c,[c.d]);return c},create:function(a){var b=this;f=b.getDimensions();if(b.o.modal&&k)b.d.iframe=d('<iframe src="javascript:false;"></iframe>').css(d.extend(b.o.iframeCss,{display:"none",opacity:0,position:"fixed",height:f[0],width:f[1],zIndex:b.o.zIndex,top:0,left:0})).appendTo(b.o.appendTo);
b.d.overlay=d("<div></div>").attr("id",b.o.overlayId).addClass("simplemodal-overlay").css(d.extend(b.o.overlayCss,{display:"none",opacity:b.o.opacity/100,height:b.o.modal?f[0]:0,width:b.o.modal?f[1]:0,position:"fixed",left:0,top:0,zIndex:b.o.zIndex+1})).appendTo(b.o.appendTo);b.d.container=d("<div></div>").attr("id",b.o.containerId).addClass("simplemodal-container").css(d.extend(b.o.containerCss,{display:"none",position:"fixed",zIndex:b.o.zIndex+2})).append(b.o.close&&b.o.closeHTML?d(b.o.closeHTML).addClass(b.o.closeClass):
"").appendTo(b.o.appendTo);b.d.wrap=d("<div></div>").attr("tabIndex",-1).addClass("simplemodal-wrap").css({height:"100%",outline:0,width:"100%"}).appendTo(b.d.container);b.d.data=a.attr("id",a.attr("id")||b.o.dataId).addClass("simplemodal-data").css(d.extend(b.o.dataCss,{display:"none"})).appendTo("body");b.setContainerDimensions();b.d.data.appendTo(b.d.wrap);if(k||l)b.fixIE()},bindEvents:function(){var a=this;d("."+a.o.closeClass).bind("click.simplemodal",function(b){b.preventDefault();a.close()});
a.o.modal&&a.o.close&&a.o.overlayClose&&a.d.overlay.bind("click.simplemodal",function(b){b.preventDefault();a.close()});d(document).bind("keydown.simplemodal",function(b){if(a.o.modal&&b.keyCode===9)a.watchTab(b);else if(a.o.close&&a.o.escClose&&b.keyCode===27){b.preventDefault();a.close()}});d(window).bind("resize.simplemodal",function(){f=a.getDimensions();a.o.autoResize?a.setContainerDimensions():a.o.autoPosition&&a.setPosition();if(k||l)a.fixIE();else if(a.o.modal){a.d.iframe&&a.d.iframe.css({height:f[0],
width:f[1]});a.d.overlay.css({height:f[0],width:f[1]})}})},unbindEvents:function(){d("."+this.o.closeClass).unbind("click.simplemodal");d(document).unbind("keydown.simplemodal");d(window).unbind("resize.simplemodal");this.d.overlay.unbind("click.simplemodal")},fixIE:function(){var a=this,b=a.o.position;d.each([a.d.iframe||null,!a.o.modal?null:a.d.overlay,a.d.container],function(c,h){if(h){var g=h[0].style;g.position="absolute";if(c<2){g.removeExpression("height");g.removeExpression("width");g.setExpression("height",
'document.body.scrollHeight > document.body.clientHeight ? document.body.scrollHeight : document.body.clientHeight + "px"');g.setExpression("width",'document.body.scrollWidth > document.body.clientWidth ? document.body.scrollWidth : document.body.clientWidth + "px"')}else{var e;if(b&&b.constructor===Array){c=b[0]?typeof b[0]==="number"?b[0].toString():b[0].replace(/px/,""):h.css("top").replace(/px/,"");c=c.indexOf("%")===-1?c+' + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"':
parseInt(c.replace(/%/,""))+' * ((document.documentElement.clientHeight || document.body.clientHeight) / 100) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"';if(b[1]){e=typeof b[1]==="number"?b[1].toString():b[1].replace(/px/,"");e=e.indexOf("%")===-1?e+' + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"':parseInt(e.replace(/%/,""))+' * ((document.documentElement.clientWidth || document.body.clientWidth) / 100) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"'}}else{c=
'(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"';e='(document.documentElement.clientWidth || document.body.clientWidth) / 2 - (this.offsetWidth / 2) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"'}g.removeExpression("top");g.removeExpression("left");g.setExpression("top",
c);g.setExpression("left",e)}}})},focus:function(a){var b=this;a=a&&d.inArray(a,["first","last"])!==-1?a:"first";var c=d(":input:enabled:visible:"+a,b.d.wrap);setTimeout(function(){c.length>0?c.focus():b.d.wrap.focus()},10)},getDimensions:function(){var a=d(window);return[d.browser.opera&&d.browser.version>"9.5"&&d.fn.jquery<"1.3"||d.browser.opera&&d.browser.version<"9.5"&&d.fn.jquery>"1.2.6"?a[0].innerHeight:a.height(),a.width()]},getVal:function(a,b){return a?typeof a==="number"?a:a==="auto"?0:
a.indexOf("%")>0?parseInt(a.replace(/%/,""))/100*(b==="h"?f[0]:f[1]):parseInt(a.replace(/px/,"")):null},update:function(a,b){var c=this;if(!c.d.data)return false;c.d.origHeight=c.getVal(a,"h");c.d.origWidth=c.getVal(b,"w");c.d.data.hide();a&&c.d.container.css("height",a);b&&c.d.container.css("width",b);c.setContainerDimensions();c.d.data.show();c.o.focus&&c.focus();c.unbindEvents();c.bindEvents()},setContainerDimensions:function(){var a=this,b=k||m,c=a.d.origHeight?a.d.origHeight:d.browser.opera?
a.d.container.height():a.getVal(b?a.d.container[0].currentStyle.height:a.d.container.css("height"),"h");b=a.d.origWidth?a.d.origWidth:d.browser.opera?a.d.container.width():a.getVal(b?a.d.container[0].currentStyle.width:a.d.container.css("width"),"w");var h=a.d.data.outerHeight(true),g=a.d.data.outerWidth(true);a.d.origHeight=a.d.origHeight||c;a.d.origWidth=a.d.origWidth||b;var e=a.o.maxHeight?a.getVal(a.o.maxHeight,"h"):null,i=a.o.maxWidth?a.getVal(a.o.maxWidth,"w"):null;e=e&&e<f[0]?e:f[0];i=i&&i<
f[1]?i:f[1];var j=a.o.minHeight?a.getVal(a.o.minHeight,"h"):"auto";c=c?a.o.autoResize&&c>e?e:c<j?j:c:h?h>e?e:a.o.minHeight&&j!=="auto"&&h<j?j:h:j;e=a.o.minWidth?a.getVal(a.o.minWidth,"w"):"auto";b=b?a.o.autoResize&&b>i?i:b<e?e:b:g?g>i?i:a.o.minWidth&&e!=="auto"&&g<e?e:g:e;a.d.container.css({height:c,width:b});a.d.wrap.css({overflow:h>c||g>b?"auto":"visible"});a.o.autoPosition&&a.setPosition()},setPosition:function(){var a=this,b,c;b=f[0]/2-a.d.container.outerHeight(true)/2;c=f[1]/2-a.d.container.outerWidth(true)/
2;if(a.o.position&&Object.prototype.toString.call(a.o.position)==="[object Array]"){b=a.o.position[0]||b;c=a.o.position[1]||c}else{b=b;c=c}a.d.container.css({left:c,top:b})},watchTab:function(a){var b=this;if(d(a.target).parents(".simplemodal-container").length>0){b.inputs=d(":input:enabled:visible:first, :input:enabled:visible:last",b.d.data[0]);if(!a.shiftKey&&a.target===b.inputs[b.inputs.length-1]||a.shiftKey&&a.target===b.inputs[0]||b.inputs.length===0){a.preventDefault();b.focus(a.shiftKey?"last":
"first")}}else{a.preventDefault();b.focus()}},open:function(){var a=this;a.d.iframe&&a.d.iframe.show();if(d.isFunction(a.o.onOpen))a.o.onOpen.apply(a,[a.d]);else{a.d.overlay.show();a.d.container.show();a.d.data.show()}a.o.focus&&a.focus();a.bindEvents()},close:function(){var a=this;if(!a.d.data)return false;a.unbindEvents();if(d.isFunction(a.o.onClose)&&!a.occb){a.occb=true;a.o.onClose.apply(a,[a.d])}else{if(a.d.placeholder){var b=d("#simplemodal-placeholder");if(a.o.persist)b.replaceWith(a.d.data.removeClass("simplemodal-data").css("display",
a.display));else{a.d.data.hide().remove();b.replaceWith(a.d.orig)}}else a.d.data.hide().remove();a.d.container.hide().remove();a.d.overlay.hide();a.d.iframe&&a.d.iframe.hide().remove();setTimeout(function(){a.d.overlay.remove();a.d={}},10)}}}})(jQuery);


/**
 *  Ajax Autocomplete for jQuery, version 1.1.3
 *  (c) 2010 Tomas Kirda
 *
 *  Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
 *  For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/
 *
 *  Last Review: 04/19/2010
 */

/*jslint onevar: true, evil: true, nomen: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */
/*global window: true, document: true, clearInterval: true, setInterval: true, jQuery: true */

(function($) {

	var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');

		function fnFormatResult(value, data, currentValue) {
			var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
			if (value)
	{
		return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
	}
		}

		function Autocomplete(el, options) {
			this.el = $(el);
			this.el.attr('autocomplete', 'off');
			this.suggestions = [];
			this.data = [];
			this.images = [];
			this.badQueries = [];
			this.selectedIndex = -1;
			this.currentValue = this.el.val();
			this.intervalId = 0;
			this.cachedResponse = [];
			this.onChangeInterval = null;
			this.ignoreValueChange = false;
			this.serviceUrl = options.serviceUrl;
			this.isLocal = false;
			this.options = {
				autoSubmit: false,
				minChars: 1,
				maxHeight: 300,
				deferRequestBy: 0,
				width: 0,
				highlight: true,
				params: {},
				fnFormatResult: fnFormatResult,
				delimiter: null,
				zIndex: 9999
			};
			this.initialize();
			this.setOptions(options);
		}

		$.fn.autocomplete = function(options) {
			return new Autocomplete(this.get(0)||$('<input />'), options);
		};


		Autocomplete.prototype = {

			killerFn: null,

			initialize: function() {

				var me, uid, autocompleteElId;
				me = this;
				uid = Math.floor(Math.random()*0x100000).toString(16);
				autocompleteElId = 'Autocomplete_' + uid;

				this.killerFn = function(e) {
					if ($(e.target).parents('.autocomplete').size() === 0) {
						$('.inputbox').removeAttr("style");
						me.killSuggestions();
						me.disableKillerFn();
					}
				};

				if (!this.options.width) { this.options.width = this.el.width(); }
				this.mainContainerId = 'AutocompleteContainter_' + uid;

				$('<div id="' + this.mainContainerId + '" style="position:absolute;z-index:9999;"><div class="autocomplete-w1"><div class="autocomplete" id="' + autocompleteElId + '" style="display:none; width:300px;"></div></div></div>').appendTo('body');

				this.container = $('#' + autocompleteElId);
				this.fixPosition();
				if (window.opera) {
					this.el.keypress(function(e) { me.onKeyPress(e); });
				} else {
					this.el.keydown(function(e) { me.onKeyPress(e); });
				}
				this.el.keyup(function(e) { me.onKeyUp(e); });
				this.el.blur(function() { me.enableKillerFn(); });
				this.el.focus(function() { me.fixPosition(); });
			},

			setOptions: function(options){
							var o = this.options;
							$.extend(o, options);
							if(o.lookup){
								this.isLocal = true;
								if($.isArray(o.lookup)){ o.lookup = { suggestions:o.lookup, data:[] }; }
							}
							$('#'+this.mainContainerId).css({ zIndex:o.zIndex });
							this.container.css({ maxHeight: o.maxHeight + 'px', width:o.width });
						},

			clearCache: function(){
							this.cachedResponse = [];
							this.badQueries = [];
						},

			disable: function(){
						 this.disabled = true;
					 },

			enable: function(){
						this.disabled = false;
					},

			fixPosition: function() {
							 var offset = this.el.offset();
							 $('#' + this.mainContainerId).css({ top: (offset.top + this.el.innerHeight()) + 'px', left: offset.left + 'px' });
						 },

			enableKillerFn: function() {
								var me = this;
								$(document).bind('click', me.killerFn);
							},

			disableKillerFn: function() {
								 var me = this;
								 $(document).unbind('click', me.killerFn);
							 },

			killSuggestions: function() {
								 var me = this;
								 this.stopKillSuggestions();
								 this.intervalId = window.setInterval(function() { me.hide(); me.stopKillSuggestions(); }, 300);
							 },

			stopKillSuggestions: function() {
									 window.clearInterval(this.intervalId);
								 },

			onKeyPress: function(e) {
				var cssObj = {
      'background-image' : 'url("templates/japics/images/ajax-loader.gif")',
	  'background-repeat' : 'no-repeat',
      'background-position' : '135px'
    }
				$('.inputbox').css(cssObj);
							if (this.disabled || !this.enabled) { return; }
							// return will exit the function
							// and event will not be prevented
							switch (e.keyCode) {
								case 27: //KEY_ESC:
									this.el.val(this.currentValue);
									this.hide();
									break;
								case 9: //KEY_TAB:
								case 13: //KEY_RETURN:
									if (this.selectedIndex === -1) {
										this.hide();
										return;
									}
									this.select(this.selectedIndex);
									if(e.keyCode === 9){ return; }
									break;
								case 38: //KEY_UP:
									this.moveUp();
									break;
								case 40: //KEY_DOWN:
									this.moveDown();
									break;
								default:
									return;
							}
							e.stopImmediatePropagation();
							e.preventDefault();
						},

			onKeyUp: function(e) {
						 if(this.disabled){ return; }
						 switch (e.keyCode) {
							 case 38: //KEY_UP:
							 case 40: //KEY_DOWN:
								 return;
						 }
						 clearInterval(this.onChangeInterval);
						 if (this.currentValue !== this.el.val()) {
							 if (this.options.deferRequestBy > 0) {
								 // Defer lookup in case when value changes very quickly:
								 var me = this;
								 this.onChangeInterval = setInterval(function() { me.onValueChange(); }, this.options.deferRequestBy);
							 } else {
								 this.onValueChange();
							 }
						 }
					 },

			onValueChange: function() {
							   clearInterval(this.onChangeInterval);
							   this.currentValue = this.el.val();
							   var q = this.getQuery(this.currentValue);
							   this.selectedIndex = -1;
							   if (this.ignoreValueChange) {
								   this.ignoreValueChange = false;
								   return;
							   }
							   if (q === '' || q.length < this.options.minChars) {
								   this.hide();
							   } else {
								   this.getSuggestions(q);
							   }
						   },

			getQuery: function(val) {
						  var d, arr;
						  d = this.options.delimiter;
						  if (!d) { return $.trim(val); }
						  arr = val.split(d);
						  return $.trim(arr[arr.length - 1]);
					  },

			getSuggestionsLocal: function(q) {
									 var ret, arr, len, val, i;
									 arr = this.options.lookup;
									 len = arr.suggestions.length;
									 ret = { suggestions:[], data:[] };
									 q = q.toLowerCase();
									 for(i=0; i< len; i++){
										 val = arr.suggestions[i];
										 if(val.toLowerCase().indexOf(q) === 0){
											 ret.suggestions.push(val);
											 ret.data.push(arr.data[i]);
										 }
									 }
									 return ret;
								 },

			getSuggestions: function(q) {
								var cr, me;
								cr = this.isLocal ? this.getSuggestionsLocal(q) : this.cachedResponse[q];
								if (cr && $.isArray(cr.suggestions)) {
									this.suggestions = cr.suggestions;
									this.data = cr.data;
									this.images = cr.images;
									this.suggest();
								} else if (!this.isBadQuery(q)) {
									me = this;
									me.options.params.query = q;
									$.get(this.serviceUrl, me.options.params, function(txt) { me.processResponse(txt); }, 'text');
								}
							},

			isBadQuery: function(q) {
							var i = this.badQueries.length;
							while (i--) {
								if (q.indexOf(this.badQueries[i]) === 0) { return true; }
							}
							return false;
						},

			hide: function() {
					  this.enabled = false;
					  this.selectedIndex = -1;
					  this.container.hide();
				  },

			suggest: function() {
						 if (this.suggestions.length === 0) {
							 this.hide();
							 return;
						 }

						 var me, len, div, f, v, i, s, mOver, mClick;
						 me = this;
						 len = this.suggestions.length;
						 f = this.options.fnFormatResult;
						 v = this.getQuery(this.currentValue);
						 mOver = function(xi) { return function() { me.activate(xi); }; };
						 mClick = function(xi) { return function() { me.select(xi); }; };
						 this.container.hide().empty();
						 for (i = 0; i < len; i++) {
							 s = this.suggestions[i];
							 x = this.images[i];
							 $('.inputbox').removeAttr("style");
							 image = '<img width="50px" src="' + x + '" />';
							 text  = '<table><tr><td align="center" valign="middle">' + image + '</td><td valign="middle">' + f(s, this.data[i], v) + '</td></tr></table>';
							 div = $((me.selectedIndex === i ? '<div class="selected"' : '<div') + ' title="' + s + '">' +  text + '</div>');
							 div.mouseover(mOver(i));
							 div.click(mClick(i));
							 this.container.append(div);
						 }
						 this.enabled = true;
						 this.container.show();
					 },

			processResponse: function(text) {
								 var response;
								 try {
									 response = eval('(' + text + ')');
								 } catch (err) { return; }
								 if (!$.isArray(response.data)) { response.data = []; }
								 if(!this.options.noCache){
									 this.cachedResponse[response.query] = response;
									 if (response.suggestions.length === 0) { this.badQueries.push(response.query); }
								 }
								 if (response.query === this.getQuery(this.currentValue)) {
									 this.suggestions = response.suggestions;
									 this.data = response.data;
									 this.images = response.images;
									 this.suggest();
								 }
							 },

			activate: function(index) {
						  var divs, activeItem;
						  divs = this.container.children();
						  // Clear previous selection:
						  if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) {
							  $(divs.get(this.selectedIndex)).removeClass();
						  }
						  this.selectedIndex = index;
						  if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) {
							  activeItem = divs.get(this.selectedIndex);
							  $(activeItem).addClass('selected');
						  }
						  return activeItem;
					  },

			deactivate: function(div, index) {
							div.className = '';
							if (this.selectedIndex === index) { this.selectedIndex = -1; }
						},

			select: function(i) {
						var selectedValue, f;
						selectedValue = this.suggestions[i];
						if (selectedValue) {
							this.el.val(selectedValue);
							if (this.options.autoSubmit) {
								f = this.el.parents('form');
								if (f.length > 0) { f.get(0).submit(); }
							}
							this.ignoreValueChange = true;
							this.hide();
							this.onSelect(i);
						}
					},

			moveUp: function() {
						if (this.selectedIndex === -1) { return; }
						if (this.selectedIndex === 0) {
							this.container.children().get(0).className = '';
							this.selectedIndex = -1;
							this.el.val(this.currentValue);
							return;
						}
						this.adjustScroll(this.selectedIndex - 1);
					},

			moveDown: function() {
						  if (this.selectedIndex === (this.suggestions.length - 1)) { return; }
						  this.adjustScroll(this.selectedIndex + 1);
					  },

			adjustScroll: function(i) {
							  var activeItem, offsetTop, upperBound, lowerBound;
							  activeItem = this.activate(i);
							  offsetTop = activeItem.offsetTop;
							  upperBound = this.container.scrollTop();
							  lowerBound = upperBound + this.options.maxHeight - 25;
							  if (offsetTop < upperBound) {
								  this.container.scrollTop(offsetTop);
							  } else if (offsetTop > lowerBound) {
								  this.container.scrollTop(offsetTop - this.options.maxHeight + 25);
							  }
							  this.el.val(this.getValue(this.suggestions[i]));
						  },

			onSelect: function(i) {
						  var me, fn, s, d;
						  me = this;
						  fn = me.options.onSelect;
						  s = me.suggestions[i];
						  d = me.data[i];
						  me.el.val(me.getValue(s));
						  if ($.isFunction(fn)) { fn(s, d, me.el); }
					  },

			getValue: function(value){
						  var del, currVal, arr, me;
						  me = this;
						  del = me.options.delimiter;
						  if (!del) { return value; }
						  currVal = me.currentValue;
						  arr = currVal.split(del);
						  if (arr.length === 1) { return value; }
						  return currVal.substr(0, currVal.length - arr[arr.length - 1].length) + value;
					  }

		};

}(jQuery));


/**
* jQuery Cookie plugin
*
* Copyright (c) 2010 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
jQuery.cookie = function (key, value, options) {

    // key and at least value given, set cookie...
    if (arguments.length > 1 && String(value) !== "[object Object]") {
        options = jQuery.extend({}, options);

        if (value === null || value === undefined) {
            options.expires = -1;
        }

        if (typeof options.expires === 'number') {
            var days = options.expires, t = options.expires = new Date();
            t.setDate(t.getDate() + days);
        }

        value = String(value);

        return (document.cookie = [
            encodeURIComponent(key), '=',
            options.raw ? value : encodeURIComponent(value),
            options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
            options.path ? '; path=' + options.path : '',
            options.domain ? '; domain=' + options.domain : '',
            options.secure ? '; secure' : ''
        ].join(''));
    }

    // key and possibly options given, get cookie...
    options = value || {};
    var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
};

// captcha reload count
var captcha_reload_count = 0;
var captcha_image_url    = "{url_captcha_image}";
function new_captcha_image()
{
	if (captcha_image_url.indexOf('?') == -1)
	{
		document.getElementById('captcha_image').src= captcha_image_url+'?c='+captcha_reload_count;
	}
	else
	{
		document.getElementById('captcha_image').src= captcha_image_url+'&c='+captcha_reload_count;
	}
    document.getElementById('captcha_input').value = "";
    document.getElementById('captcha_input').focus();
    captcha_reload_count++;
}
$(document).ready(function(){
	var pos = $.cookie("ausrichtung");
	$("#"+pos).attr("checked", "checked"); 

	
	if ($.browser == 'msie' && ($.browser.version == '6.0' || $.browser.version == '7.0'))
	{
		$('#menu li').mouseover(function() {
			$(this).attr('class', $(this).attr('class') + ' iehover');
		});
		$('#menu li').mouseout(function() {
			$(this).attr('class', $(this).attr('class').replace(new RegExp(" iehover\\b"), ""));
		});
	}
	// 1. Rating star
	// active rating
	if ($('.active_rating').length > 0)
	{
		$('.active_rating').jRating({
			type: 'big',
			bigStarsPath: '/templates/japics/css/icons/stars.png',
			rateMax: 5,
			step: true,
			phpPath: '/rate_pic.php',
			onSuccess: function(data)
			{
				shownotify(data.message);
			},
			onError: function(data)
			{
	  			shownotify(data.message);
			}
		});
	}
	// disable rating
	if ($('.disabled_rating').length > 0)
	{
		$('.disabled_rating').jRating({
			type: 'big',
			bigStarsPath: '/templates/japics/css/icons/stars.png',
			rateMax: 5,
			isDisabled: true
		});
	}

	$('#mod_search_searchword').autocomplete({
	    serviceUrl: 'ajax_search.php',
	    minChars: 3,
	    delimiter: /(,|;)\s*/, // regex or character
	    width: '247px',
	    zIndex: 9999,
	    deferRequestBy: 0,
	    noCache: true,
    	onSelect: function(value, data)
		{
			if (value == 'zeige alle Ergebnisse')
			{
				window.location.href = 'search.html?search_keywords=' + data;
			}
			else
			{
				window.location.href = data;
			}
		}
	});

});

// 4. Light + Random
function lightbox_click(element)
{
	var element     = $(element);
	var action      = element.attr('action');
	var id          = element.attr('id');
	var next_action = action == 'addtolightbox' ? 'removefromlightbox' : 'addtolightbox';
	var next_image  = action == 'addtolightbox' ? 'lightbox_yes' : 'lightbox_no';
	var next_count  = action == 'addtolightbox' ? +1 : -1;
	$.ajax({
		type: 'post',
		url: 'ajax_lightbox_randombox.php',
		data: {
			action: action,
			id: id
		},
		success: function(data)
		{
			obj = $.parseJSON(data);
			if (obj.message)
			{
			shownotify(obj.message);	
;
			}
			if (obj.status)
			{
				element.attr('action', next_action);
				element.find('span').next().attr('class', 'smallicons ' +  next_image);
				var count = parseInt($('.bubble-big:eq(1)').text());
				$('.bubble-big:eq(1)').text(count+next_count);
			}
		}
	});
}

function randombox_click(element)
{
	var element     = $(element);
	var action      = element.attr('action');
	var id          = element.attr('id');
	var next_action = action == 'addtorandombox' ? 'removefromrandombox' : 'addtorandombox';
	var next_image  = action == 'addtorandombox' ? 'random_yes' : 'random_no';
	var next_count  = action == 'addtorandombox' ? +1 : -1;
	$.ajax({
		type: 'post',
		url: 'ajax_lightbox_randombox.php',
		data: {
			action: action,
			id: id
		},
		success: function(data)
		{
			obj = $.parseJSON(data);
			if (obj.message)
			{
				shownotify(obj.message);	

;			
			}
			if (obj.status)
			{
				element.attr('action', next_action);
				element.find('span').next().attr('class', 'smallicons ' +  next_image);
				var count = parseInt($('.bubble-big:eq(2)').text());
				$('.bubble-big:eq(2)').text(count+next_count);
			}
		}
	});
}

function bit_url(url)
{
var url=url;
var username="crazymodder";
var key="R_ff1ac4a78e5c337e64bccfc9a4da0ef8";
$.ajax({
url:"http://api.bit.ly/v3/shorten",
data:{longUrl:url,apiKey:key,login:username},
dataType:"jsonp",
success:function(v)
{
var shortUrl=v.data.url;
$('#share_url').attr('value', shortUrl);
$('#viral_message').html(image_name + "\n" + shortUrl);
}
});
}


// 2: Social Like Function

function open_social_like(image_id, image_name, image_link, thumbnail_image)
{
	$('#social_like_wrapper').load('/open_social.php').modal({
		onOpen: function (dialog)
		{
			dialog.overlay.fadeIn('slow', function () {
				dialog.data.hide();
				dialog.container.fadeIn('slow', function () {
					bit_url(image_link);
					$('#facebook_a').html('href', 'http://www.facebook.com/share.php?u='+image_link+'?t='+image_name);					
					$('#overlay_page_title').html(image_name);
					$('#overlay_page_title2').html(image_name);
					$('#image_id').val(image_id);
					$('#ecard_image').attr('src', thumbnail_image);
					$('#preview_image').attr('src', thumbnail_image);
					active_tabs();
					dialog.data.slideDown('slow');
				});
			});
		}
	});
}

function close_social_like()
{
	$.modal.close();
}

function open_ecard(image_id, image_name, image_link, thumbnail_image)
{
	$('#social_like_wrapper').load('/open_ecard.php').modal({
		onOpen: function (dialog)
		{
			dialog.overlay.fadeIn('slow', function () {
				dialog.data.hide();
				dialog.container.fadeIn('slow', function () {
					bit_url(image_link);
						
					$('#overlay_page_title').html(image_name);
					$('#overlay_page_title2').html(image_name);
					$('#image_id').val(image_id);
					$('#ecard_image').attr('src', thumbnail_image);
					$('#preview_image').attr('src', thumbnail_image);
					active_tabs();
					dialog.data.slideDown('slow');
				});
			});
		}
	});
}

function close_ecard()
{
	$.modal.close();
}

function remove_bbtags(a)
{
	var b = a.replace('[center]', '').replace('[/center]', '').replace('[left]', '').replace('[/left]', '').replace('[right]', '').replace('[/right]', '');
	
	return b;
}
function remove_htmltags(a)
{
	var b = a.replace('<center>', '').replace('</center>', '').replace('<left>', '').replace('</left>', '').replace('<right>', '').replace('</right>', '');
	
	return b;
}

function remove_tags()
{
	var fields = new Array();
	$("input[name=bbcode]").each(function() {
   fields.push($(this).val(remove_bbtags($(this).val())));
});
	var fields2 = new Array();
	$("input[name=htmlcode]").each(function() {
   fields2.push($(this).val(remove_htmltags($(this).val())));
});
$("#bbcode2").val($("#bbcode").val());
$("#htmlcode2").val($("#htmlcode").val());
}

function ausrichtung(e){
	remove_tags();
    var f = e;
    if (!(f == "left")) {
		var fields = new Array();
$("input[name=bbcode]").each(function() {
   fields.push($(this).val("[" + f + "]" + $(this).val() + "[/" + f + "]"));
});
		var fields2 = new Array();
$("input[name=htmlcode]").each(function() {
   fields2.push($(this).val("<" + f + ">" + $(this).val() + "</" + f + ">"));
});
        $("#bbcode2").val($("#bbcode").val());
        $("#htmlcode2").val($("#htmlcode").val());
    }
}

function save_ausrichtung(){
	 $.cookie("ausrichtung",$('input:radio[name=ausrichtung]:checked').val(),{expires: 365, path: '/', domain: 'ja-pics.net'});
	shownotify('<div class="successn messagen"><h3>Ausrichtung gespeichert</h3><p>Deine gew&auml;hlte Ausrichtung wurde gespeichert und ist jetzt automatisch f&uuml;r jedes Bild definiert. Du kannst die Einstellung jederzeit &auml;ndern oder zur&uuml;cksetzen.</p></div>');  
}

function active_tabs()
{
	$(".tab_content").hide();
	$("ul.tabs li:first").addClass("active").show();
	$(".tab_content:first").show();
	$("ul.tabs li").click(function() {
		$("ul.tabs li").removeClass("active");
		$(this).addClass("active");
		$(".tab_content").hide();
		var activeTab = $(this).find("a").attr("href");
		$(activeTab).fadeIn();
		return false;
	});
}

function shownotify(message) {
	var message = $(message);
	$("#notify").html(message)
    .fadeIn('slow')
    .animate({opacity: 1.0}, 2000)
    .fadeOut('slow', function() {
      $('.messagen').remove();
});
}


(function(){var a;a=function(){function a(){this.options_index=0,this.parsed=[]}return a.prototype.add_node=function(a){return a.nodeName==="OPTGROUP"?this.add_group(a):this.add_option(a)},a.prototype.add_group=function(a){var b,c,d,e,f,g;b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:a.label,children:0,disabled:a.disabled}),f=a.childNodes,g=[];for(d=0,e=f.length;d<e;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},a.prototype.add_option=function(a,b,c){if(a.nodeName==="OPTION")return a.text!==""?(b!=null&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1},a}(),a.select_to_array=function(b){var c,d,e,f,g;d=new a,g=b.childNodes;for(e=0,f=g.length;e<f;e++)c=g[e],d.add_node(c);return d.parsed},this.SelectParser=a}).call(this),function(){var a,b,c=function(a,b){return function(){return a.apply(b,arguments)}};b=this,a=function(){function a(a,b){this.form_field=a,this.options=b!=null?b:{},this.set_default_values(),this.is_multiple=this.form_field.multiple,this.default_text_default=this.is_multiple?"Select Some Options":"Select an Option",this.setup(),this.set_up_html(),this.register_observers(),this.finish_setup()}return a.prototype.set_default_values=function(){return this.click_test_action=c(function(a){return this.test_active_click(a)},this),this.activate_action=c(function(a){return this.activate_field(a)},this),this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.result_single_selected=null,this.allow_single_deselect=this.options.allow_single_deselect!=null&&this.form_field.options[0].text===""?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.choices=0,this.results_none_found=this.options.no_results_text||"No results match"},a.prototype.mouse_enter=function(){return this.mouse_on_container=!0},a.prototype.mouse_leave=function(){return this.mouse_on_container=!1},a.prototype.input_focus=function(a){if(!this.active_field)return setTimeout(c(function(){return this.container_mousedown()},this),50)},a.prototype.input_blur=function(a){if(!this.mouse_on_container)return this.active_field=!1,setTimeout(c(function(){return this.blur_test()},this),100)},a.prototype.result_add_option=function(a){var b,c;return a.disabled?"":(a.dom_id=this.container_id+"_o_"+a.array_index,b=a.selected&&this.is_multiple?[]:["active-result"],a.selected&&b.push("result-selected"),a.group_array_index!=null&&b.push("group-option"),a.classes!==""&&b.push(a.classes),c=a.style.cssText!==""?' style="'+a.style+'"':"",'<li id="'+a.dom_id+'" class="'+b.join(" ")+'"'+c+">"+a.html+"</li>")},a.prototype.results_update_field=function(){return this.result_clear_highlight(),this.result_single_selected=null,this.results_build()},a.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},a.prototype.results_search=function(a){return this.results_showing?this.winnow_results():this.results_show()},a.prototype.keyup_checker=function(a){var b,c;b=(c=a.which)!=null?c:a.keyCode,this.search_field_scale();switch(b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:a.preventDefault();if(this.results_showing)return this.result_select(a);break;case 27:if(this.results_showing)return this.results_hide();break;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},a.prototype.generate_field_id=function(){var a;return a=this.generate_random_id(),this.form_field.id=a,a},a.prototype.generate_random_char=function(){var a,b,c;return a="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ",c=Math.floor(Math.random()*a.length),b=a.substring(c,c+1)},a}(),b.AbstractChosen=a}.call(this),function(){var a,b,c,d,e=Object.prototype.hasOwnProperty,f=function(a,b){function d(){this.constructor=a}for(var c in b)e.call(b,c)&&(a[c]=b[c]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a},g=function(a,b){return function(){return a.apply(b,arguments)}};d=this,a=jQuery,a.fn.extend({chosen:function(c){return!a.browser.msie||a.browser.version!=="6.0"&&a.browser.version!=="7.0"?a(this).each(function(d){if(!a(this).hasClass("chzn-done"))return new b(this,c)}):this}}),b=function(){function b(){b.__super__.constructor.apply(this,arguments)}return f(b,AbstractChosen),b.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.is_rtl=this.form_field_jq.hasClass("chzn-rtl")},b.prototype.finish_setup=function(){return this.form_field_jq.addClass("chzn-done")},b.prototype.set_up_html=function(){var b,d,e,f;return this.container_id=this.form_field.id.length?this.form_field.id.replace(/(:|\.)/g,"_"):this.generate_field_id(),this.container_id+="_chzn",this.f_width=this.form_field_jq.outerWidth(),this.default_text=this.form_field_jq.data("placeholder")?this.form_field_jq.data("placeholder"):this.default_text_default,b=a("<div />",{id:this.container_id,"class":"chzn-container"+(this.is_rtl?" chzn-rtl":""),style:"width: "+this.f_width+"px;"}),this.is_multiple?b.html('<ul class="chzn-choices"><li class="search-field"><input type="text" value="'+this.default_text+'" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chzn-drop" style="left:-9000px;"><ul class="chzn-results"></ul></div>'):b.html('<a href="javascript:void(0)" class="chzn-single"><span>'+this.default_text+'</span><div><b></b></div></a><div class="chzn-drop" style="left:-9000px;"><div class="chzn-search"><input type="text" autocomplete="off" /></div><ul class="chzn-results"></ul></div>'),this.form_field_jq.hide().after(b),this.container=a("#"+this.container_id),this.container.addClass("chzn-container-"+(this.is_multiple?"multi":"single")),this.dropdown=this.container.find("div.chzn-drop").first(),d=this.container.height(),e=this.f_width-c(this.dropdown),this.dropdown.css({width:e+"px",top:d+"px"}),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chzn-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chzn-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chzn-search").first(),this.selected_item=this.container.find(".chzn-single").first(),f=e-c(this.search_container)-c(this.search_field),this.search_field.css({width:f+"px"})),this.results_build(),this.set_tab_index(),this.form_field_jq.trigger("liszt:ready",{chosen:this})},b.prototype.register_observers=function(){this.container.mousedown(g(function(a){return this.container_mousedown(a)},this)),this.container.mouseup(g(function(a){return this.container_mouseup(a)},this)),this.container.mouseenter(g(function(a){return this.mouse_enter(a)},this)),this.container.mouseleave(g(function(a){return this.mouse_leave(a)},this)),this.search_results.mouseup(g(function(a){return this.search_results_mouseup(a)},this)),this.search_results.mouseover(g(function(a){return this.search_results_mouseover(a)},this)),this.search_results.mouseout(g(function(a){return this.search_results_mouseout(a)},this)),this.form_field_jq.bind("liszt:updated",g(function(a){return this.results_update_field(a)},this)),this.search_field.blur(g(function(a){return this.input_blur(a)},this)),this.search_field.keyup(g(function(a){return this.keyup_checker(a)},this)),this.search_field.keydown(g(function(a){return this.keydown_checker(a)},this));if(this.is_multiple)return this.search_choices.click(g(function(a){return this.choices_click(a)},this)),this.search_field.focus(g(function(a){return this.input_focus(a)},this))},b.prototype.search_field_disabled=function(){this.is_disabled=this.form_field_jq[0].disabled;if(this.is_disabled)return this.container.addClass("chzn-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus",this.activate_action),this.close_field();this.container.removeClass("chzn-disabled"),this.search_field[0].disabled=!1;if(!this.is_multiple)return this.selected_item.bind("focus",this.activate_action)},b.prototype.container_mousedown=function(b){var c;if(!this.is_disabled)return c=b!=null?a(b.target).hasClass("search-choice-close"):!1,b&&b.type==="mousedown"&&b.stopPropagation(),!this.pending_destroy_click&&!c?(this.active_field?!this.is_multiple&&b&&(a(b.target)===this.selected_item||a(b.target).parents("a.chzn-single").length)&&(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(document).click(this.click_test_action),this.results_show()),this.activate_field()):this.pending_destroy_click=!1},b.prototype.container_mouseup=function(a){if(a.target.nodeName==="ABBR")return this.results_reset(a)},b.prototype.blur_test=function(a){if(!this.active_field&&this.container.hasClass("chzn-container-active"))return this.close_field()},b.prototype.close_field=function(){return a(document).unbind("click",this.click_test_action),this.is_multiple||(this.selected_item.attr("tabindex",this.search_field.attr("tabindex")),this.search_field.attr("tabindex",-1)),this.active_field=!1,this.results_hide(),this.container.removeClass("chzn-container-active"),this.winnow_results_clear(),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},b.prototype.activate_field=function(){return!this.is_multiple&&!this.active_field&&(this.search_field.attr("tabindex",this.selected_item.attr("tabindex")),this.selected_item.attr("tabindex",-1)),this.container.addClass("chzn-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},b.prototype.test_active_click=function(b){return a(b.target).parents("#"+this.container_id).length?this.active_field=!0:this.close_field()},b.prototype.results_build=function(){var a,b,c,e,f;this.parsing=!0,this.results_data=d.SelectParser.select_to_array(this.form_field),this.is_multiple&&this.choices>0?(this.search_choices.find("li.search-choice").remove(),this.choices=0):this.is_multiple||(this.selected_item.find("span").text(this.default_text),this.form_field.options.length>this.disable_search_threshold?this.container.removeClass("chzn-container-single-nosearch"):this.container.addClass("chzn-container-single-nosearch")),a="",f=this.results_data;for(c=0,e=f.length;c<e;c++)b=f[c],b.group?a+=this.result_add_group(b):b.empty||(a+=this.result_add_option(b),b.selected&&this.is_multiple?this.choice_build(b):b.selected&&!this.is_multiple&&(this.selected_item.find("span").text(b.text),this.allow_single_deselect&&this.single_deselect_control_build()));return this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.search_results.html(a),this.parsing=!1},b.prototype.result_add_group=function(b){return b.disabled?"":(b.dom_id=this.container_id+"_g_"+b.array_index,'<li id="'+b.dom_id+'" class="group-result">'+a("<div />").text(b.label).html()+"</li>")},b.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight();if(b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(c<f)return this.search_results.scrollTop(c)}},b.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},b.prototype.results_show=function(){var a;return this.is_multiple||(this.selected_item.addClass("chzn-single-with-drop"),this.result_single_selected&&this.result_do_highlight(this.result_single_selected)),a=this.is_multiple?this.container.height():this.container.height()-1,this.dropdown.css({top:a+"px",left:0}),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results()},b.prototype.results_hide=function(){return this.is_multiple||this.selected_item.removeClass("chzn-single-with-drop"),this.result_clear_highlight(),this.dropdown.css({left:"-9000px"}),this.results_showing=!1},b.prototype.set_tab_index=function(a){var b;if(this.form_field_jq.attr("tabindex"))return b=this.form_field_jq.attr("tabindex"),this.form_field_jq.attr("tabindex",-1),this.is_multiple?this.search_field.attr("tabindex",b):(this.selected_item.attr("tabindex",b),this.search_field.attr("tabindex",-1))},b.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},b.prototype.search_results_mouseup=function(b){var c;c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first();if(c.length)return this.result_highlight=c,this.result_select(b)},b.prototype.search_results_mouseover=function(b){var c;c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first();if(c)return this.result_do_highlight(c)},b.prototype.search_results_mouseout=function(b){if(a(b.target).hasClass("active-result"))return this.result_clear_highlight()},b.prototype.choices_click=function(b){b.preventDefault();if(this.active_field&&!a(b.target).hasClass("search-choice")&&!this.results_showing)return this.results_show()},b.prototype.choice_build=function(b){var c,d;return c=this.container_id+"_c_"+b.array_index,this.choices+=1,this.search_container.before('<li class="search-choice" id="'+c+'"><span>'+b.html+'</span><a href="javascript:void(0)" class="search-choice-close" rel="'+b.array_index+'"></a></li>'),d=a("#"+c).find("a").first(),d.click(g(function(a){return this.choice_destroy_link_click(a)},this))},b.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),this.is_disabled?b.stopPropagation:(this.pending_destroy_click=!0,this.choice_destroy(a(b.target)))},b.prototype.choice_destroy=function(a){return this.choices-=1,this.show_search_field_default(),this.is_multiple&&this.choices>0&&this.search_field.val().length<1&&this.results_hide(),this.result_deselect(a.attr("rel")),a.parents("li").first().remove()},b.prototype.results_reset=function(b){this.form_field.options[0].selected=!0,this.selected_item.find("span").text(this.default_text),this.show_search_field_default(),a(b.target).remove(),this.form_field_jq.trigger("change");if(this.active_field)return this.results_hide()},b.prototype.result_select=function(a){var b,c,d,e;if(this.result_highlight)return b=this.result_highlight,c=b.attr("id"),this.result_clear_highlight(),this.is_multiple?this.result_deactivate(b):(this.search_results.find(".result-selected").removeClass("result-selected"),this.result_single_selected=b),b.addClass("result-selected"),e=c.substr(c.lastIndexOf("_")+1),d=this.results_data[e],d.selected=!0,this.form_field.options[d.options_index].selected=!0,this.is_multiple?this.choice_build(d):(this.selected_item.find("span").first().text(d.text),this.allow_single_deselect&&this.single_deselect_control_build()),(!a.metaKey||!this.is_multiple)&&this.results_hide(),this.search_field.val(""),this.form_field_jq.trigger("change"),this.search_field_scale()},b.prototype.result_activate=function(a){return a.addClass("active-result")},b.prototype.result_deactivate=function(a){return a.removeClass("active-result")},b.prototype.result_deselect=function(b){var c,d;return d=this.results_data[b],d.selected=!1,this.form_field.options[d.options_index].selected=!1,c=a("#"+this.container_id+"_o_"+b),c.removeClass("result-selected").addClass("active-result").show(),this.result_clear_highlight(),this.winnow_results(),this.form_field_jq.trigger("change"),this.search_field_scale()},b.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect&&this.selected_item.find("abbr").length<1)return this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>')},b.prototype.winnow_results=function(){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;this.no_results_clear(),i=0,j=this.search_field.val()===this.default_text?"":a("<div/>").text(a.trim(this.search_field.val())).html(),f=new RegExp("^"+j.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i"),m=new RegExp(j.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i"),r=this.results_data;for(n=0,p=r.length;n<p;n++){c=r[n];if(!c.disabled&&!c.empty)if(c.group)a("#"+c.dom_id).css("display","none");else if(!this.is_multiple||!c.selected){b=!1,h=c.dom_id,g=a("#"+h);if(f.test(c.html))b=!0,i+=1;else if(c.html.indexOf(" ")>=0||c.html.indexOf("[")===0){e=c.html.replace(/\[|\]/g,"").split(" ");if(e.length)for(o=0,q=e.length;o<q;o++)d=e[o],f.test(d)&&(b=!0,i+=1)}b?(j.length?(k=c.html.search(m),l=c.html.substr(0,k+j.length)+"</em>"+c.html.substr(k+j.length),l=l.substr(0,k)+"<em>"+l.substr(k)):l=c.html,g.html(l),this.result_activate(g),c.group_array_index!=null&&a("#"+this.results_data[c.group_array_index].dom_id).css("display","auto")):(this.result_highlight&&h===this.result_highlight.attr("id")&&this.result_clear_highlight(),this.result_deactivate(g))}}return i<1&&j.length?this.no_results(j):this.winnow_results_set_highlight()},b.prototype.winnow_results_clear=function(){var b,c,d,e,f;this.search_field.val(""),c=this.search_results.find("li"),f=[];for(d=0,e=c.length;d<e;d++)b=c[d],b=a(b),f.push(b.hasClass("group-result")?b.css("display","auto"):!this.is_multiple||!b.hasClass("result-selected")?this.result_activate(b):void 0);return f},b.prototype.winnow_results_set_highlight=function(){var a,b;if(!this.result_highlight){b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),a=b.length?b.first():this.search_results.find(".active-result").first();if(a!=null)return this.result_do_highlight(a)}},b.prototype.no_results=function(b){var c;return c=a('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>'),c.find("span").first().html(b),this.search_results.append(c)},b.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},b.prototype.keydown_arrow=function(){var b,c;this.result_highlight?this.results_showing&&(c=this.result_highlight.nextAll("li.active-result").first(),c&&this.result_do_highlight(c)):(b=this.search_results.find("li.active-result").first(),b&&this.result_do_highlight(a(b)));if(!this.results_showing)return this.results_show()},b.prototype.keyup_arrow=function(){var a;if(!this.results_showing&&!this.is_multiple)return this.results_show();if(this.result_highlight)return a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices>0&&this.results_hide(),this.result_clear_highlight())},b.prototype.keydown_backstroke=function(){return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(this.pending_backstroke=this.search_container.siblings("li.search-choice").last(),this.pending_backstroke.addClass("search-choice-focus"))},b.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},b.prototype.keydown_checker=function(a){var b,c;b=(c=a.which)!=null?c:a.keyCode,this.search_field_scale(),b!==8&&this.pending_backstroke&&this.clear_backstroke();switch(b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:this.keydown_arrow()}},b.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"];for(i=0,j=g.length;i<j;i++)e=g[i],f+=e+":"+this.search_field.css(e)+";";return c=a("<div />",{style:f}),c.text(this.search_field.val()),a("body").append(c),h=c.width()+25,c.remove(),h>this.f_width-10&&(h=this.f_width-10),this.search_field.css({width:h+"px"}),b=this.container.height(),this.dropdown.css({top:b+"px"})}},b.prototype.generate_random_id=function(){var b;b="sel"+this.generate_random_char()+this.generate_random_char()+this.generate_random_char();while(a("#"+b).length>0)b+=this.generate_random_char();return b},b}(),c=function(a){var b;return b=a.outerWidth()-a.width()},d.get_side_border_padding=c}.call(this)
