/*---------------------------------- START lib/jquery.date-min.js ----------------------------------*/
Date.dayNames=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];Date.abbrDayNames=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];Date.monthNames=['January','February','March','April','May','June','July','August','September','October','November','December'];Date.abbrMonthNames=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];Date.firstDayOfWeek=1;Date.format='dd/mm/yyyy';(function(){function add(name,method){if(!Date.prototype[name]){Date.prototype[name]=method;}};add("isLeapYear",function(){var y=this.getFullYear();return(y%4==0&&y%100!=0)||y%400==0;});add("isWeekend",function(){return this.getDay()==0||this.getDay()==6;});add("isWeekDay",function(){return!this.isWeekend();});add("getDaysInMonth",function(){return[31,(this.isLeapYear()?29:28),31,30,31,30,31,31,30,31,30,31][this.getMonth()];});add("getDayName",function(abbreviated){return abbreviated?Date.abbrDayNames[this.getDay()]:Date.dayNames[this.getDay()];});add("getMonthName",function(abbreviated){return abbreviated?Date.abbrMonthNames[this.getMonth()]:Date.monthNames[this.getMonth()];});add("getDayOfYear",function(){var tmpdtm=new Date("1/1/"+this.getFullYear());return Math.floor((this.getTime()-tmpdtm.getTime())/86400000);});add("getWeekOfYear",function(){return Math.ceil(this.getDayOfYear()/7);});add("setDayOfYear",function(day){this.setMonth(0);this.setDate(day);return this;});add("addYears",function(num){this.setFullYear(this.getFullYear()+num);return this;});add("addMonths",function(num){var tmpdtm=this.getDate();this.setMonth(this.getMonth()+num);if(tmpdtm>this.getDate())this.addDays(-this.getDate());return this;});add("addDays",function(num){this.setDate(this.getDate()+num);return this;});add("addHours",function(num){this.setHours(this.getHours()+num);return this;});add("addMinutes",function(num){this.setMinutes(this.getMinutes()+num);return this;});add("addSeconds",function(num){this.setSeconds(this.getSeconds()+num);return this;});add("zeroTime",function(){this.setMilliseconds(0);this.setSeconds(0);this.setMinutes(0);this.setHours(0);return this;});add("asString",function(){var r=Date.format;return r.split('yyyy').join(this.getFullYear()).split('yy').join(this.getYear()).split('mmm').join(this.getMonthName(true)).split('mm').join(_zeroPad(this.getMonth()+1)).split('dd').join(_zeroPad(this.getDate()));});Date.fromString=function(s){var f=Date.format;if(f.length!=s.length){return false;}var d=new Date('01/01/1977');var iY=f.indexOf('yyyy');if(iY>-1){d.setFullYear(Number(s.substr(iY,4)));}else{d.setYear(Number(s.substr(f.indexOf('yy'),2)));}var iM=f.indexOf('mmm');if(iM>-1){var mStr=s.substr(iM,3);for(var i=0;i<Date.abbrMonthNames.length;i++){if(Date.abbrMonthNames[i]==mStr)break;}d.setMonth(i);}else{d.setMonth(Number(s.substr(f.indexOf('mm'),2))-1);}d.setDate(Number(s.substr(f.indexOf('dd'),2)));if(isNaN(d.getTime())){return false;}return d;};var _zeroPad=function(num){var s='0'+num;return s.substring(s.length-2)};})();
/*---------------------------------- END lib/jquery.date-min.js ----------------------------------*/

/*---------------------------------- START lib/jquery.browser-min.js ----------------------------------*/
(function(){var Private={'browser':'Unknown','version':{'number':undefined,'string':'Unknown'},'OS':'Unknown','aol':false,'camino':false,'firefox':false,'flock':false,'icab':false,'konqueror':false,'mozilla':false,'msie':false,'netscape':false,'opera':false,'safari':false,'linux':false,'mac':false,'win':false};for(var i=0,ua=navigator.userAgent,ve=navigator.vendor,data=[{'name':'Safari','browser':function(){return/Apple/.test(ve)}},{'name':'Opera','browser':function(){return window.opera!=undefined}},{'name':'iCab','browser':function(){return/iCab/.test(ve)}},{'name':'Konqueror','browser':function(){return/KDE/.test(ve)}},{'identifier':'aol','name':'AOL Explorer','browser':function(){return/America Online Browser/.test(ua)},'version':function(){return ua.match(/rev(\d+(?:\.\d+)+)/)}},{'name':'Flock','browser':function(){return/Flock/.test(ua)}},{'name':'Camino','browser':function(){return/Camino/.test(ve)}},{'name':'Firefox','browser':function(){return/Firefox/.test(ua)}},{'name':'Netscape','browser':function(){return/Netscape/.test(ua)}},{'identifier':'msie','name':'Internet Explorer','browser':function(){return/MSIE/.test(ua)},'version':function(){return ua.match(/MSIE (\d+(?:\.\d+)+(?:b\d*)?)/)}},{'name':'Mozilla','browser':function(){return/Gecko|Mozilla/.test(ua)},'version':function(){return ua.match(/rv:(\d+(?:\.\d+)+)/)}}];i<data.length;i++){if(data[i].browser()){var identifier=data[i].identifier?data[i].identifier:data[i].name.toLowerCase();Private[identifier]=true;Private.browser=data[i].name;var result;if(data[i].version!=undefined&&(result=data[i].version())){Private.version.string=result[1];Private.version.number=parseFloat(result[1]);}else
{var re=new RegExp(data[i].name+'(?:\\s|\\/)(\\d+(?:\\.\\d+)+(?:(?:a|b)\\d*)?)');result=ua.match(re);if(result!=undefined){Private.version.string=result[1];Private.version.number=parseFloat(result[1]);}}break;}};for(var i=0,pl=navigator.platform,data=[{'identifier':'win','name':'Windows','OS':function(){return/Win/.test(pl)}},{'name':'Mac','OS':function(){return/Mac/.test(pl)}},{'name':'Linux','OS':function(){return/Linux/.test(pl)}}];i<data.length;i++){if(data[i].OS()){var identifier=data[i].identifier?data[i].identifier:data[i].name.toLowerCase();Private[identifier]=true;Private.OS=data[i].name;break;}};var Public={'browser':Private.browser,'version':{'number':Private.version.number,'string':Private.version.string},'OS':Private.OS,'aol':Private.aol,'camino':Private.camino,'firefox':Private.firefox,'flock':Private.flock,'icab':Private.icab,'konqueror':Private.konqueror,'mozilla':Private.mozilla,'msie':Private.msie,'netscape':Private.netscape,'opera':Private.opera,'safari':Private.safari,'linux':Private.linux,'mac':Private.mac,'win':Private.win};$.browser=Public;})();
/*---------------------------------- END lib/jquery.browser-min.js ----------------------------------*/

/*---------------------------------- START lib/jquery.metadata-min.js ----------------------------------*/
/*(function($){$.meta={type:"class",name:"metadata",setType:function(type,name){this.type=type;this.name=name;},cre:/({.*})/,single:'metadata'};var setArray=$.fn.setArray;$.fn.setArray=function(arr){return setArray.apply(this,arguments).each(function(){if(this.nodeType==9||$.isXMLDoc(this)||this.metaDone)return;var data="{}";if($.meta.type=="class"){var m=$.meta.cre.exec(this.className);if(m){var elementRE=/([a-zA-Z][a-zA-Z0-9]+:')(.*?)('[,}])/g;var el=m[1].replace(elementRE,function(match,subPat1,subPat2,subPat3){var ret=match;if(subPat1&&subPat2&&subPat3){var s2=subPat2.replace(/[^\\]'/g,"\\\'");if(s2!=subPat2){ret=subPat1+s2+subPat3;}}return ret;});if(el!=''){m[1]=el;}data=m[1];}}else if($.meta.type=="elem"){if(!this.getElementsByTagName)return;var e=this.getElementsByTagName($.meta.name);if(e.length)data=$.trim(e[0].innerHTML);}else if(this.getAttribute!=undefined){var attr=this.getAttribute($.meta.name);if(attr)data=attr;}if(!/^{/.test(data))data="{"+data+"}";if($.meta.single)this[$.meta.single]=data;else
	$.extend(this,data);this.metaDone=true;});};$.fn.data=function(){eval("data = "+this[0][$.meta.single]);return data;};})(jQuery);*/
(function($) {

	$.extend({
		metadata : {
			defaults : {
				type: 'class',
				name: 'metadata',
				cre: /({.*})/,
				single: 'metadata'
			},
			setType: function( type, name ){
				this.defaults.type = type;
				this.defaults.name = name;
			},
			get: function( elem, opts ){
				var settings = $.extend({},this.defaults,opts);
				// check for empty string in single property
				if ( !settings.single.length ) settings.single = 'metadata';
				
				var data = $.data(elem, settings.single);
				// returned cached data if it already exists
				if ( data ) return data;
				
				data = "{}";
				
				if ( settings.type == "class" ) {
					var m = settings.cre.exec( elem.className );
					if ( m )
						data = m[1];
				} else if ( settings.type == "elem" ) {
					if( !elem.getElementsByTagName ) return;
					var e = elem.getElementsByTagName(settings.name);
					if ( e.length )
						data = $.trim(e[0].innerHTML);
				} else if ( elem.getAttribute != undefined ) {
					var attr = elem.getAttribute( settings.name );
					if ( attr )
						data = attr;
				}
				
				if ( data.indexOf( '{' ) <0 )
				data = "{" + data + "}";
				
				data = eval("(" + data + ")");
				
				$.data( elem, settings.single, data );
				return data;
			}
		}
	});

	/**
	 * Returns the metadata object for the first member of the jQuery object.
	 *
	 * @name metadata
	 * @descr Returns element's metadata object
	 * @param Object opts An object contianing settings to override the defaults
	 * @type jQuery
	 * @cat Plugins/Metadata
	 */
	$.fn.metadata = function( opts ){
		return $.metadata.get( this[0], opts );
	};

	})(jQuery);
/*---------------------------------- END lib/jquery.metadata-min.js ----------------------------------*/

/*---------------------------------- START lib/jquery.bgiframe.js ----------------------------------*/
(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};})(jQuery);
/*---------------------------------- END lib/jquery.bgiframe.js ----------------------------------*/

/*---------------------------------- START lib/ui/ui.datepicker-min.js ----------------------------------*/
;(function($){function Datepicker(){this.debug=false;this._nextId=0;this._inst=[];this._curInst=null;this._disabledInputs=[];this._datepickerShowing=false;this._inDialog=false;this.regional=[];this.regional['']={clearText:'Clear',clearStatus:'Erase the current date',closeText:'Close',closeStatus:'Close without change',prevText:'&#x3c;Prev',prevStatus:'Show the previous month',nextText:'Next&#x3e;',nextStatus:'Show the next month',currentText:'Today',currentStatus:'Show the current month',monthNames:['January','February','March','April','May','June','July','August','September','October','November','December'],monthNamesShort:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],monthStatus:'Show a different month',yearStatus:'Show a different year',weekHeader:'Wk',weekStatus:'Week of the year',dayNames:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],dayNamesShort:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],dayNamesMin:['Su','Mo','Tu','We','Th','Fr','Sa'],dayStatus:'Set DD as first week day',dateStatus:'Select DD, M d',dateFormat:'mm/dd/yy',firstDay:0,initStatus:'Select a date',isRTL:false};this._defaults={showOn:'focus',showAnim:'show',defaultDate:null,appendText:'',buttonText:'...',buttonImage:'',buttonImageOnly:false,closeAtTop:true,mandatory:false,hideIfNoPrevNext:false,changeMonth:true,changeYear:true,yearRange:'-10:+10',changeFirstDay:true,showOtherMonths:false,showWeeks:false,calculateWeek:this.iso8601Week,shortYearCutoff:'+10',showStatus:false,statusForDate:this.dateStatus,minDate:null,maxDate:null,speed:'normal',beforeShowDay:null,beforeShow:null,onSelect:null,onClose:null,numberOfMonths:1,stepMonths:1,rangeSelect:false,rangeSeparator:' - '};$.extend(this._defaults,this.regional['']);this._datepickerDiv=$('<div id="datepicker_div"></div>');}$.extend(Datepicker.prototype,{markerClassName:'hasDatepicker',log:function(){if(this.debug)console.log.apply('',arguments);},_register:function(inst){var id=this._nextId++;this._inst[id]=inst;return id;},_getInst:function(id){return this._inst[id]||id;},setDefaults:function(settings){extendRemove(this._defaults,settings||{});return this;},_attachDatepicker:function(target,settings){var inlineSettings=null;for(attrName in this._defaults){var attrValue=target.getAttribute('date:'+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue);}catch(err){inlineSettings[attrName]=attrValue;}}}var nodeName=target.nodeName.toLowerCase();var instSettings=(inlineSettings?$.extend(settings||{},inlineSettings||{}):settings);if(nodeName=='input'){var inst=(inst&&!inlineSettings?inst:new DatepickerInstance(instSettings,false));this._connectDatepicker(target,inst);}else if(nodeName=='div'||nodeName=='span'){var inst=new DatepickerInstance(instSettings,true);this._inlineDatepicker(target,inst);}},_destroyDatepicker:function(target){var nodeName=target.nodeName.toLowerCase();var calId=target._calId;target._calId=null;var $target=$(target);if(nodeName=='input'){$target.siblings('.datepicker_append').replaceWith('').end().siblings('.datepicker_trigger').replaceWith('').end().removeClass(this.markerClassName).unbind('focus',this._showDatepicker).unbind('keydown',this._doKeyDown).unbind('keypress',this._doKeyPress);var wrapper=$target.parents('.datepicker_wrap');if(wrapper)wrapper.replaceWith(wrapper.html());}else if(nodeName=='div'||nodeName=='span')$target.removeClass(this.markerClassName).empty();if($('input[_calId='+calId+']').length==0)this._inst[calId]=null;},_enableDatepicker:function(target){target.disabled=false;$(target).siblings('button.datepicker_trigger').each(function(){this.disabled=false;}).end().siblings('img.datepicker_trigger').css({opacity:'1.0',cursor:''});this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value);});},_disableDatepicker:function(target){target.disabled=true;$(target).siblings('button.datepicker_trigger').each(function(){this.disabled=true;}).end().siblings('img.datepicker_trigger').css({opacity:'0.5',cursor:'default'});this._disabledInputs=$.map($.datepicker._disabledInputs,function(value){return(value==target?null:value);});this._disabledInputs[$.datepicker._disabledInputs.length]=target;},_isDisabledDatepicker:function(target){if(!target)return false;for(var i=0;i<this._disabledInputs.length;i++){if(this._disabledInputs[i]==target)return true;}return false;},_changeDatepicker:function(target,name,value){var settings=name||{};if(typeof name=='string'){settings={};settings[name]=value;}if(inst=this._getInst(target._calId)){extendRemove(inst._settings,settings);this._updateDatepicker(inst);}},_setDateDatepicker:function(target,date,endDate){if(inst=this._getInst(target._calId)){inst._setDate(date,endDate);this._updateDatepicker(inst);}},_getDateDatepicker:function(target){var inst=this._getInst(target._calId);return(inst?inst._getDate():null);},_doKeyDown:function(e){var inst=$.datepicker._getInst(this._calId);if($.datepicker._datepickerShowing)switch(e.keyCode){case 9:$.datepicker._hideDatepicker(null,'');break;case 13:$.datepicker._selectDay(inst,inst._selectedMonth,inst._selectedYear,$('td.datepicker_daysCellOver',inst._datepickerDiv)[0]);return false;break;case 27:$.datepicker._hideDatepicker(null,inst._get('speed'));break;case 33:$.datepicker._adjustDate(inst,(e.ctrlKey?-1:-inst._get('stepMonths')),(e.ctrlKey?'Y':'M'));break;case 34:$.datepicker._adjustDate(inst,(e.ctrlKey?+1:+inst._get('stepMonths')),(e.ctrlKey?'Y':'M'));break;case 35:if(e.ctrlKey)$.datepicker._clearDate(inst);break;case 36:if(e.ctrlKey)$.datepicker._gotoToday(inst);break;case 37:if(e.ctrlKey)$.datepicker._adjustDate(inst,-1,'D');break;case 38:if(e.ctrlKey)$.datepicker._adjustDate(inst,-7,'D');break;case 39:if(e.ctrlKey)$.datepicker._adjustDate(inst,+1,'D');break;case 40:if(e.ctrlKey)$.datepicker._adjustDate(inst,+7,'D');break;}else if(e.keyCode==36&&e.ctrlKey)$.datepicker._showDatepicker(this);},_doKeyPress:function(e){var inst=$.datepicker._getInst(this._calId);var chars=$.datepicker._possibleChars(inst._get('dateFormat'));var chr=String.fromCharCode(e.charCode==undefined?e.keyCode:e.charCode);return e.ctrlKey||(chr<' '||!chars||chars.indexOf(chr)>-1);},_connectDatepicker:function(target,inst){var input=$(target);if(input.is('.'+this.markerClassName))return;var appendText=inst._get('appendText');var isRTL=inst._get('isRTL');if(appendText){if(isRTL)input.before('<span class="datepicker_append">'+appendText);else
	input.after('<span class="datepicker_append">'+appendText);}var showOn=inst._get('showOn');if(showOn=='focus'||showOn=='both')input.focus(this._showDatepicker);if(showOn=='button'||showOn=='both'){input.wrap('<span class="datepicker_wrap">');var buttonText=inst._get('buttonText');var buttonImage=inst._get('buttonImage');var trigger=$(inst._get('buttonImageOnly')?$('<img>').addClass('datepicker_trigger').attr({src:buttonImage,alt:buttonText,title:buttonText}):$('<button>').addClass('datepicker_trigger').attr({type:'button'}).html(buttonImage!=''?$('<img>').attr({src:buttonImage,alt:buttonText,title:buttonText}):buttonText));if(isRTL)input.before(trigger);else
	input.after(trigger);trigger.click(function(){if($.datepicker._datepickerShowing&&$.datepicker._lastInput==target)$.datepicker._hideDatepicker();else
	$.datepicker._showDatepicker(target);});}input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).bind("setData.datepicker",function(event,key,value){inst._settings[key]=value;}).bind("getData.datepicker",function(event,key){return inst._get(key);});input[0]._calId=inst._id;},_inlineDatepicker:function(target,inst){var input=$(target);if(input.is('.'+this.markerClassName))return;input.addClass(this.markerClassName).append(inst._datepickerDiv).bind("setData.datepicker",function(event,key,value){inst._settings[key]=value;}).bind("getData.datepicker",function(event,key){return inst._get(key);});input[0]._calId=inst._id;this._updateDatepicker(inst);},_inlineShow:function(inst){var numMonths=inst._getNumberOfMonths();inst._datepickerDiv.width(numMonths[1]*$('.datepicker',inst._datepickerDiv[0]).width());},_dialogDatepicker:function(input,dateText,onSelect,settings,pos){var inst=this._dialogInst;if(!inst){inst=this._dialogInst=new DatepickerInstance({},false);this._dialogInput=$('<input type="text" size="1" style="position: absolute; top: -100px;"/>');this._dialogInput.keydown(this._doKeyDown);$('body').append(this._dialogInput);this._dialogInput[0]._calId=inst._id;}extendRemove(inst._settings,settings||{});this._dialogInput.val(dateText);this._pos=(pos?(pos.length?pos:[pos.pageX,pos.pageY]):null);if(!this._pos){var browserWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;var browserHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[(browserWidth/2)-100+scrollX,(browserHeight/2)-150+scrollY];}this._dialogInput.css('left',this._pos[0]+'px').css('top',this._pos[1]+'px');inst._settings.onSelect=onSelect;this._inDialog=true;this._datepickerDiv.addClass('datepicker_dialog');this._showDatepicker(this._dialogInput[0]);if($.blockUI)$.blockUI(this._datepickerDiv);return this;},_showDatepicker:function(input){input=input.target||input;if(input.nodeName.toLowerCase()!='input')input=$('input',input.parentNode)[0];if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput==input)return;var inst=$.datepicker._getInst(input._calId);var beforeShow=inst._get('beforeShow');extendRemove(inst._settings,(beforeShow?beforeShow.apply(input,[input,inst]):{}));$.datepicker._hideDatepicker(null,'');$.datepicker._lastInput=input;inst._setDateFromField(input);if($.datepicker._inDialog)input.value='';if(!$.datepicker._pos){$.datepicker._pos=$.datepicker._findPos(input);$.datepicker._pos[1]+=input.offsetHeight;}var isFixed=false;$(input).parents().each(function(){isFixed|=$(this).css('position')=='fixed';});if(isFixed&&$.browser.opera){$.datepicker._pos[0]-=document.documentElement.scrollLeft;$.datepicker._pos[1]-=document.documentElement.scrollTop;}inst._datepickerDiv.css('position',($.datepicker._inDialog&&$.blockUI?'static':(isFixed?'fixed':'absolute'))).css({left:$.datepicker._pos[0]+'px',top:$.datepicker._pos[1]+'px'});$.datepicker._pos=null;inst._rangeStart=null;$.datepicker._updateDatepicker(inst);if(!inst._inline){var speed=inst._get('speed');var postProcess=function(){$.datepicker._datepickerShowing=true;$.datepicker._afterShow(inst);};var showAnim=inst._get('showAnim')||'show';inst._datepickerDiv[showAnim](speed,postProcess);if(speed=='')postProcess();if(inst._input[0].type!='hidden')inst._input[0].focus();$.datepicker._curInst=inst;}},_updateDatepicker:function(inst){inst._datepickerDiv.empty().append(inst._generateDatepicker());var numMonths=inst._getNumberOfMonths();if(numMonths[0]!=1||numMonths[1]!=1)inst._datepickerDiv.addClass('datepicker_multi');else
	inst._datepickerDiv.removeClass('datepicker_multi');if(inst._get('isRTL'))inst._datepickerDiv.addClass('datepicker_rtl');else
	inst._datepickerDiv.removeClass('datepicker_rtl');if(inst._input&&inst._input[0].type!='hidden')$(inst._input[0]).focus();},_afterShow:function(inst){var numMonths=inst._getNumberOfMonths();inst._datepickerDiv.width(numMonths[1]*$('.datepicker',inst._datepickerDiv[0])[0].offsetWidth);if($.browser.msie&&parseInt($.browser.version)<7){$('iframe.datepicker_cover').css({width:inst._datepickerDiv.width()+4,height:inst._datepickerDiv.height()+4});alert(parseInt($.browser.version));}var isFixed=inst._datepickerDiv.css('position')=='fixed';var pos=inst._input?$.datepicker._findPos(inst._input[0]):null;var browserWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;var browserHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;var scrollX=(isFixed?0:document.documentElement.scrollLeft||document.body.scrollLeft);var scrollY=(isFixed?0:document.documentElement.scrollTop||document.body.scrollTop);if((inst._datepickerDiv.offset().left+inst._datepickerDiv.width()-(isFixed&&$.browser.msie?document.documentElement.scrollLeft:0))>(browserWidth+scrollX)){inst._datepickerDiv.css('left',Math.max(scrollX,pos[0]+(inst._input?$(inst._input[0]).width():null)-inst._datepickerDiv.width()-(isFixed&&$.browser.opera?document.documentElement.scrollLeft:0))+'px');}if((inst._datepickerDiv.offset().top+inst._datepickerDiv.height()-(isFixed&&$.browser.msie?document.documentElement.scrollTop:0))>(browserHeight+scrollY)){inst._datepickerDiv.css('top',Math.max(scrollY,pos[1]-(this._inDialog?0:inst._datepickerDiv.height())-(isFixed&&$.browser.opera?document.documentElement.scrollTop:0))+'px');}},_findPos:function(obj){while(obj&&(obj.type=='hidden'||obj.nodeType!=1)){obj=obj.nextSibling;}var position=$(obj).offset();return[position.left,position.top];},_hideDatepicker:function(input,speed){var inst=this._curInst;if(!inst)return;var rangeSelect=inst._get('rangeSelect');if(rangeSelect&&this._stayOpen){this._selectDate(inst,inst._formatDate(inst._currentDay,inst._currentMonth,inst._currentYear));}this._stayOpen=false;if(this._datepickerShowing){speed=(speed!=null?speed:inst._get('speed'));var showAnim=inst._get('showAnim');inst._datepickerDiv[(showAnim=='slideDown'?'slideUp':(showAnim=='fadeIn'?'fadeOut':'hide'))](speed,function(){$.datepicker._tidyDialog(inst);});if(speed=='')this._tidyDialog(inst);var onClose=inst._get('onClose');if(onClose){onClose.apply((inst._input?inst._input[0]:null),[inst._getDate(),inst]);}this._datepickerShowing=false;this._lastInput=null;inst._settings.prompt=null;if(this._inDialog){this._dialogInput.css({position:'absolute',left:'0',top:'-100px'});if($.blockUI){$.unblockUI();$('body').append(this._datepickerDiv);}}this._inDialog=false;}this._curInst=null;},_tidyDialog:function(inst){inst._datepickerDiv.removeClass('datepicker_dialog').unbind('.datepicker');$('.datepicker_prompt',inst._datepickerDiv).remove();},_checkExternalClick:function(event){if(!$.datepicker._curInst)return;var $target=$(event.target);if(($target.parents("#datepicker_div").length==0)&&($target.attr('class')!='datepicker_trigger')&&$.datepicker._datepickerShowing&&!($.datepicker._inDialog&&$.blockUI)){$.datepicker._hideDatepicker(null,'');}},_adjustDate:function(id,offset,period){var inst=this._getInst(id);inst._adjustDate(offset,period);this._updateDatepicker(inst);},_gotoToday:function(id){var date=new Date();var inst=this._getInst(id);inst._selectedDay=date.getDate();inst._drawMonth=inst._selectedMonth=date.getMonth();inst._drawYear=inst._selectedYear=date.getFullYear();this._adjustDate(inst);},_selectMonthYear:function(id,select,period){var inst=this._getInst(id);inst._selectingMonthYear=false;inst[period=='M'?'_drawMonth':'_drawYear']=select.options[select.selectedIndex].value-0;this._adjustDate(inst);},_clickMonthYear:function(id){var inst=this._getInst(id);if(inst._input&&inst._selectingMonthYear&&!$.browser.msie)inst._input[0].focus();inst._selectingMonthYear=!inst._selectingMonthYear;},_changeFirstDay:function(id,day){var inst=this._getInst(id);inst._settings.firstDay=day;this._updateDatepicker(inst);},_selectDay:function(id,month,year,td){if($(td).is('.datepicker_unselectable'))return;var inst=this._getInst(id);var rangeSelect=inst._get('rangeSelect');if(rangeSelect){if(!this._stayOpen){$('.datepicker td').removeClass('datepicker_currentDay');$(td).addClass('datepicker_currentDay');}this._stayOpen=!this._stayOpen;}inst._selectedDay=inst._currentDay=$('a',td).html();inst._selectedMonth=inst._currentMonth=month;inst._selectedYear=inst._currentYear=year;this._selectDate(id,inst._formatDate(inst._currentDay,inst._currentMonth,inst._currentYear));if(this._stayOpen){inst._endDay=inst._endMonth=inst._endYear=null;inst._rangeStart=new Date(inst._currentYear,inst._currentMonth,inst._currentDay);this._updateDatepicker(inst);}else if(rangeSelect){inst._endDay=inst._currentDay;inst._endMonth=inst._currentMonth;inst._endYear=inst._currentYear;inst._selectedDay=inst._currentDay=inst._rangeStart.getDate();inst._selectedMonth=inst._currentMonth=inst._rangeStart.getMonth();inst._selectedYear=inst._currentYear=inst._rangeStart.getFullYear();inst._rangeStart=null;if(inst._inline)this._updateDatepicker(inst);}},_clearDate:function(id){var inst=this._getInst(id);if(inst._get('mandatory'))return;this._stayOpen=false;inst._endDay=inst._endMonth=inst._endYear=inst._rangeStart=null;this._selectDate(inst,'');},_selectDate:function(id,dateStr){var inst=this._getInst(id);dateStr=(dateStr!=null?dateStr:inst._formatDate());if(inst._rangeStart)dateStr=inst._formatDate(inst._rangeStart)+inst._get('rangeSeparator')+dateStr;if(inst._input)inst._input.val(dateStr);var onSelect=inst._get('onSelect');if(onSelect)onSelect.apply((inst._input?inst._input[0]:null),[dateStr,inst]);else if(inst._input)inst._input.trigger('change');if(inst._inline)this._updateDatepicker(inst);else if(!this._stayOpen){this._hideDatepicker(null,inst._get('speed'));this._lastInput=inst._input[0];if(typeof(inst._input[0])!='object')inst._input[0].focus();this._lastInput=null;}},noWeekends:function(date){var day=date.getDay();return[(day>0&&day<6),''];},iso8601Week:function(date){var checkDate=new Date(date.getFullYear(),date.getMonth(),date.getDate(),(date.getTimezoneOffset()/-60));var firstMon=new Date(checkDate.getFullYear(),1-1,4);var firstDay=firstMon.getDay()||7;firstMon.setDate(firstMon.getDate()+1-firstDay);if(firstDay<4&&checkDate<firstMon){checkDate.setDate(checkDate.getDate()-3);return $.datepicker.iso8601Week(checkDate);}else if(checkDate>new Date(checkDate.getFullYear(),12-1,28)){firstDay=new Date(checkDate.getFullYear()+1,1-1,4).getDay()||7;if(firstDay>4&&(checkDate.getDay()||7)<firstDay-3){checkDate.setDate(checkDate.getDate()+3);return $.datepicker.iso8601Week(checkDate);}}return Math.floor(((checkDate-firstMon)/86400000)/7)+1;},dateStatus:function(date,inst){return $.datepicker.formatDate(inst._get('dateStatus'),date,inst._getFormatConfig());},parseDate:function(format,value,settings){if(format==null||value==null)throw'Invalid arguments';value=(typeof value=='object'?value.toString():value+'');if(value=='')return null;var shortYearCutoff=(settings?settings.shortYearCutoff:null)||this._defaults.shortYearCutoff;var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var year=-1;var month=-1;var day=-1;var literal=false;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches)iFormat++;return matches;};var getNumber=function(match){lookAhead(match);var size=(match=='y'?4:2);var num=0;while(size>0&&iValue<value.length&&value.charAt(iValue)>='0'&&value.charAt(iValue)<='9'){num=num*10+(value.charAt(iValue++)-0);size--;}if(size==(match=='y'?4:2))throw'Missing number at position '+iValue;return num;};var getName=function(match,shortNames,longNames){var names=(lookAhead(match)?longNames:shortNames);var size=0;for(var j=0;j<names.length;j++)size=Math.max(size,names[j].length);var name='';var iInit=iValue;while(size>0&&iValue<value.length){name+=value.charAt(iValue++);for(var i=0;i<names.length;i++)if(name==names[i])return i+1;size--;}throw'Unknown name at position '+iInit;};var checkLiteral=function(){if(value.charAt(iValue)!=format.charAt(iFormat))throw'Unexpected literal at position '+iValue;iValue++;};var iValue=0;for(var iFormat=0;iFormat<format.length;iFormat++){if(literal)if(format.charAt(iFormat)=="'"&&!lookAhead("'"))literal=false;else
	checkLiteral();else
	switch(format.charAt(iFormat)){case'd':day=getNumber('d');break;case'D':getName('D',dayNamesShort,dayNames);break;case'm':month=getNumber('m');break;case'M':month=getName('M',monthNamesShort,monthNames);break;case'y':year=getNumber('y');break;case"'":if(lookAhead("'"))checkLiteral();else
	literal=true;break;default:checkLiteral();}}if(year<100){year+=new Date().getFullYear()-new Date().getFullYear()%100+(year<=shortYearCutoff?0:-100);}var date=new Date(year,month-1,day);if(date.getFullYear()!=year||date.getMonth()+1!=month||date.getDate()!=day){throw'Invalid date';}return date;},formatDate:function(format,date,settings){if(!date)return'';var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches)iFormat++;return matches;};var formatNumber=function(match,value){return(lookAhead(match)&&value<10?'0':'')+value;};var formatName=function(match,value,shortNames,longNames){return(lookAhead(match)?longNames[value]:shortNames[value]);};var output='';var literal=false;if(date){for(var iFormat=0;iFormat<format.length;iFormat++){if(literal)if(format.charAt(iFormat)=="'"&&!lookAhead("'"))literal=false;else
	output+=format.charAt(iFormat);else
	switch(format.charAt(iFormat)){case'd':output+=formatNumber('d',date.getDate());break;case'D':output+=formatName('D',date.getDay(),dayNamesShort,dayNames);break;case'm':output+=formatNumber('m',date.getMonth()+1);break;case'M':output+=formatName('M',date.getMonth(),monthNamesShort,monthNames);break;case'y':output+=(lookAhead('y')?date.getFullYear():(date.getYear()%100<10?'0':'')+date.getYear()%100);break;case"'":if(lookAhead("'"))output+="'";else
	literal=true;break;default:output+=format.charAt(iFormat);}}}return output;},_possibleChars:function(format){var chars='';var literal=false;for(var iFormat=0;iFormat<format.length;iFormat++)if(literal)if(format.charAt(iFormat)=="'"&&!lookAhead("'"))literal=false;else
	chars+=format.charAt(iFormat);else
	switch(format.charAt(iFormat)){case'd'||'m'||'y':chars+='0123456789';break;case'D'||'M':return null;case"'":if(lookAhead("'"))chars+="'";else
	literal=true;break;default:chars+=format.charAt(iFormat);}return chars;}});function DatepickerInstance(settings,inline){this._id=$.datepicker._register(this);this._selectedDay=0;this._selectedMonth=0;this._selectedYear=0;this._drawMonth=0;this._drawYear=0;this._input=null;this._inline=inline;this._datepickerDiv=(!inline?$.datepicker._datepickerDiv:$('<div id="datepicker_div_'+this._id+'" class="datepicker_inline">'));this._settings=extendRemove(settings||{});if(inline)this._setDate(this._getDefaultDate());}$.extend(DatepickerInstance.prototype,{_get:function(name){return this._settings[name]!==undefined?this._settings[name]:$.datepicker._defaults[name];},_setDateFromField:function(input){this._input=$(input);var dateFormat=this._get('dateFormat');var dates=this._input?this._input.val().split(this._get('rangeSeparator')):null;this._endDay=this._endMonth=this._endYear=null;var date=defaultDate=this._getDefaultDate();if(dates.length>0){var settings=this._getFormatConfig();if(dates.length>1){date=$.datepicker.parseDate(dateFormat,dates[1],settings)||defaultDate;this._endDay=date.getDate();this._endMonth=date.getMonth();this._endYear=date.getFullYear();}try{date=$.datepicker.parseDate(dateFormat,dates[0],settings)||defaultDate;}catch(e){$.datepicker.log(e);date=defaultDate;}}this._selectedDay=date.getDate();this._drawMonth=this._selectedMonth=date.getMonth();this._drawYear=this._selectedYear=date.getFullYear();this._currentDay=(dates[0]?date.getDate():0);this._currentMonth=(dates[0]?date.getMonth():0);this._currentYear=(dates[0]?date.getFullYear():0);this._adjustDate();},_getDefaultDate:function(){var date=this._determineDate('defaultDate',new Date());var minDate=this._getMinMaxDate('min',true);var maxDate=this._getMinMaxDate('max');date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);return date;},_determineDate:function(name,defaultDate){var offsetNumeric=function(offset){var date=new Date();date.setDate(date.getDate()+offset);return date;};var offsetString=function(offset,getDaysInMonth){var date=new Date();var matches=/^([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?$/.exec(offset);if(matches){var year=date.getFullYear();var month=date.getMonth();var day=date.getDate();switch(matches[2]||'d'){case'd':case'D':day+=(matches[1]-0);break;case'w':case'W':day+=(matches[1]*7);break;case'm':case'M':month+=(matches[1]-0);day=Math.min(day,getDaysInMonth(year,month));break;case'y':case'Y':year+=(matches[1]-0);day=Math.min(day,getDaysInMonth(year,month));break;}date=new Date(year,month,day);}return date;};var date=this._get(name);return(date==null?defaultDate:(typeof date=='string'?offsetString(date,this._getDaysInMonth):(typeof date=='number'?offsetNumeric(date):date)));},_setDate:function(date,endDate){this._selectedDay=this._currentDay=date.getDate();this._drawMonth=this._selectedMonth=this._currentMonth=date.getMonth();this._drawYear=this._selectedYear=this._currentYear=date.getFullYear();if(this._get('rangeSelect')){if(endDate){this._endDay=endDate.getDate();this._endMonth=endDate.getMonth();this._endYear=endDate.getFullYear();}else{this._endDay=this._currentDay;this._endMonth=this._currentMonth;this._endYear=this._currentYear;}}this._adjustDate();},_getDate:function(){var startDate=(!this._currentYear||(this._input&&this._input.val()=='')?null:new Date(this._currentYear,this._currentMonth,this._currentDay));if(this._get('rangeSelect')){return[startDate,(!this._endYear?null:new Date(this._endYear,this._endMonth,this._endDay))];}else
	return startDate;},_generateDatepicker:function(){var today=new Date();today=new Date(today.getFullYear(),today.getMonth(),today.getDate());var showStatus=this._get('showStatus');var isRTL=this._get('isRTL');var clear=(this._get('mandatory')?'':'<div class="datepicker_clear"><a onclick="jQuery.datepicker._clearDate('+this._id+');"'+(showStatus?this._addStatus(this._get('clearStatus')||'&#xa0;'):'')+'>'+this._get('clearText')+'</a></div>');var controls='<div class="datepicker_control">'+(isRTL?'':clear)+'<div class="datepicker_close"><a onclick="jQuery.datepicker._hideDatepicker();"'+(showStatus?this._addStatus(this._get('closeStatus')||'&#xa0;'):'')+'>'+this._get('closeText')+'</a></div>'+(isRTL?clear:'')+'</div>';var prompt=this._get('prompt');var closeAtTop=this._get('closeAtTop');var hideIfNoPrevNext=this._get('hideIfNoPrevNext');var numMonths=this._getNumberOfMonths();var stepMonths=this._get('stepMonths');var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);var minDate=this._getMinMaxDate('min',true);var maxDate=this._getMinMaxDate('max');var drawMonth=this._drawMonth;var drawYear=this._drawYear;if(maxDate){var maxDraw=new Date(maxDate.getFullYear(),maxDate.getMonth()-numMonths[1]+1,maxDate.getDate());maxDraw=(minDate&&maxDraw<minDate?minDate:maxDraw);while(new Date(drawYear,drawMonth,1)>maxDraw){drawMonth--;if(drawMonth<0){drawMonth=11;drawYear--;}}}var prev='<div class="datepicker_prev">'+(this._canAdjustMonth(-1,drawYear,drawMonth)?'<a onclick="jQuery.datepicker._adjustDate('+this._id+', -'+stepMonths+', \'M\');"'+(showStatus?this._addStatus(this._get('prevStatus')||'&#xa0;'):'')+'>'+this._get('prevText')+'</a>':(hideIfNoPrevNext?'':'<label>'+this._get('prevText')+'</label>'))+'</div>';var next='<div class="datepicker_next">'+(this._canAdjustMonth(+1,drawYear,drawMonth)?'<a onclick="jQuery.datepicker._adjustDate('+this._id+', +'+stepMonths+', \'M\');"'+(showStatus?this._addStatus(this._get('nextStatus')||'&#xa0;'):'')+'>'+this._get('nextText')+'</a>':(hideIfNoPrevNext?'>':'<label>'+this._get('nextText')+'</label>'))+'</div>';var html=(prompt?'<div class="datepicker_prompt">'+prompt+'</div>':'')+(closeAtTop&&!this._inline?controls:'')+'<div class="datepicker_links">'+(isRTL?next:prev)+(this._isInRange(today)?'<div class="datepicker_current">'+'<a onclick="jQuery.datepicker._gotoToday('+this._id+');"'+(showStatus?this._addStatus(this._get('currentStatus')||'&#xa0;'):'')+'>'+this._get('currentText')+'</a></div>':'')+(isRTL?prev:next)+'</div>';var showWeeks=this._get('showWeeks');for(var row=0;row<numMonths[0];row++)for(var col=0;col<numMonths[1];col++){var selectedDate=new Date(drawYear,drawMonth,this._selectedDay);html+='<div class="datepicker_oneMonth'+(col==0?' datepicker_newRow':'')+'">'+this._generateMonthYearHeader(drawMonth,drawYear,minDate,maxDate,selectedDate,row>0||col>0)+'<table class="datepicker" cellpadding="0" cellspacing="0"><thead>'+'<tr class="datepicker_titleRow">'+(showWeeks?'<td>'+this._get('weekHeader')+'</td>':'');var firstDay=this._get('firstDay');var changeFirstDay=this._get('changeFirstDay');var dayNames=this._get('dayNames');var dayNamesShort=this._get('dayNamesShort');var dayNamesMin=this._get('dayNamesMin');for(var dow=0;dow<7;dow++){var day=(dow+firstDay)%7;var status=this._get('dayStatus')||'&#xa0;';status=(status.indexOf('DD')>-1?status.replace(/DD/,dayNames[day]):status.replace(/D/,dayNamesShort[day]));html+='<td'+((dow+firstDay+6)%7>=5?' class="datepicker_weekEndCell"':'')+'>'+(!changeFirstDay?'<span':'<a onclick="jQuery.datepicker._changeFirstDay('+this._id+', '+day+');"')+(showStatus?this._addStatus(status):'')+' title="'+dayNames[day]+'">'+dayNamesMin[day]+(changeFirstDay?'</a>':'</span>')+'</td>';}html+='</tr></thead><tbody>';var daysInMonth=this._getDaysInMonth(drawYear,drawMonth);if(drawYear==this._selectedYear&&drawMonth==this._selectedMonth){this._selectedDay=Math.min(this._selectedDay,daysInMonth);}var leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7;var currentDate=(!this._currentDay?new Date(9999,9,9):new Date(this._currentYear,this._currentMonth,this._currentDay));var endDate=this._endDay?new Date(this._endYear,this._endMonth,this._endDay):currentDate;var printDate=new Date(drawYear,drawMonth,1-leadDays);var numRows=(isMultiMonth?6:Math.ceil((leadDays+daysInMonth)/7));var beforeShowDay=this._get('beforeShowDay');var showOtherMonths=this._get('showOtherMonths');var calculateWeek=this._get('calculateWeek')||$.datepicker.iso8601Week;var dateStatus=this._get('statusForDate')||$.datepicker.dateStatus;for(var dRow=0;dRow<numRows;dRow++){html+='<tr class="datepicker_daysRow">'+(showWeeks?'<td class="datepicker_weekCol">'+calculateWeek(printDate)+'</td>':'');for(var dow=0;dow<7;dow++){var daySettings=(beforeShowDay?beforeShowDay.apply((this._input?this._input[0]:null),[printDate]):[true,'']);var otherMonth=(printDate.getMonth()!=drawMonth);var unselectable=otherMonth||!daySettings[0]||(minDate&&printDate<minDate)||(maxDate&&printDate>maxDate);html+='<td class="datepicker_daysCell'+((dow+firstDay+6)%7>=5?' datepicker_weekEndCell':'')+(otherMonth?' datepicker_otherMonth':'')+(printDate.getTime()==selectedDate.getTime()&&drawMonth==this._selectedMonth?' datepicker_daysCellOver':'')+(unselectable?' datepicker_unselectable':'')+(otherMonth&&!showOtherMonths?'':' '+daySettings[1]+(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?' datepicker_currentDay':'')+(printDate.getTime()==today.getTime()?' datepicker_today':''))+'"'+(unselectable?'':' onmouseover="jQuery(this).addClass(\'datepicker_daysCellOver\');'+(!showStatus||(otherMonth&&!showOtherMonths)?'':'jQuery(\'#datepicker_status_'+this._id+'\').html(\''+(dateStatus.apply((this._input?this._input[0]:null),[printDate,this])||'&#xa0;')+'\');')+'"'+' onmouseout="jQuery(this).removeClass(\'datepicker_daysCellOver\');'+(!showStatus||(otherMonth&&!showOtherMonths)?'':'jQuery(\'#datepicker_status_'+this._id+'\').html(\'&#xa0;\');')+'" onclick="jQuery.datepicker._selectDay('+this._id+','+drawMonth+','+drawYear+', this);"')+'>'+(otherMonth?(showOtherMonths?printDate.getDate():'&#xa0;'):(unselectable?printDate.getDate():'<a>'+printDate.getDate()+'</a>'))+'</td>';printDate.setDate(printDate.getDate()+1);}html+='</tr>';}drawMonth++;if(drawMonth>11){drawMonth=0;drawYear++;}html+='</tbody></table></div>';}html+=(showStatus?'<div style="clear: both;"></div><div id="datepicker_status_'+this._id+'" class="datepicker_status">'+(this._get('initStatus')||'&#xa0;')+'</div>':'')+(!closeAtTop&&!this._inline?controls:'')+'<div style="clear: both;"></div>'+($.browser.msie&&parseInt($.browser.version)<7&&!this._inline?'<iframe src="javascript:false;" class="datepicker_cover"></iframe>':'');return html;},_generateMonthYearHeader:function(drawMonth,drawYear,minDate,maxDate,selectedDate,secondary){minDate=(this._rangeStart&&minDate&&selectedDate<minDate?selectedDate:minDate);var showStatus=this._get('showStatus');var html='<div class="datepicker_header">';var monthNames=this._get('monthNames');if(secondary||!this._get('changeMonth'))html+=monthNames[drawMonth]+'&#xa0;';else{var inMinYear=(minDate&&minDate.getFullYear()==drawYear);var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);html+='<select class="datepicker_newMonth" '+'onchange="jQuery.datepicker._selectMonthYear('+this._id+', this, \'M\');" '+'onclick="jQuery.datepicker._clickMonthYear('+this._id+');"'+(showStatus?this._addStatus(this._get('monthStatus')||'&#xa0;'):'')+'>';for(var month=0;month<12;month++){if((!inMinYear||month>=minDate.getMonth())&&(!inMaxYear||month<=maxDate.getMonth())){html+='<option value="'+month+'"'+(month==drawMonth?' selected="selected"':'')+'>'+monthNames[month]+'</option>';}}html+='</select>';}if(secondary||!this._get('changeYear'))html+=drawYear;else{var years=this._get('yearRange').split(':');var year=0;var endYear=0;if(years.length!=2){year=drawYear-10;endYear=drawYear+10;}else if(years[0].charAt(0)=='+'||years[0].charAt(0)=='-'){year=drawYear+parseInt(years[0],10);endYear=drawYear+parseInt(years[1],10);}else{year=parseInt(years[0],10);endYear=parseInt(years[1],10);}year=(minDate?Math.max(year,minDate.getFullYear()):year);endYear=(maxDate?Math.min(endYear,maxDate.getFullYear()):endYear);html+='<select class="datepicker_newYear" '+'onchange="jQuery.datepicker._selectMonthYear('+this._id+', this, \'Y\');" '+'onclick="jQuery.datepicker._clickMonthYear('+this._id+');"'+(showStatus?this._addStatus(this._get('yearStatus')||'&#xa0;'):'')+'>';for(;year<=endYear;year++){html+='<option value="'+year+'"'+(year==drawYear?' selected="selected"':'')+'>'+year+'</option>';}html+='</select>';}html+='</div>';return html;},_addStatus:function(text){return' onmouseover="jQuery(\'#datepicker_status_'+this._id+'\').html(\''+text+'\');" '+'onmouseout="jQuery(\'#datepicker_status_'+this._id+'\').html(\'&#xa0;\');"';},_adjustDate:function(offset,period){var year=this._drawYear+(period=='Y'?offset:0);var month=this._drawMonth+(period=='M'?offset:0);var day=Math.min(this._selectedDay,this._getDaysInMonth(year,month))+(period=='D'?offset:0);var date=new Date(year,month,day);var minDate=this._getMinMaxDate('min',true);var maxDate=this._getMinMaxDate('max');date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);this._selectedDay=date.getDate();this._drawMonth=this._selectedMonth=date.getMonth();this._drawYear=this._selectedYear=date.getFullYear();},_getNumberOfMonths:function(){var numMonths=this._get('numberOfMonths');return(numMonths==null?[1,1]:(typeof numMonths=='number'?[1,numMonths]:numMonths));},_getMinMaxDate:function(minMax,checkRange){var date=this._determineDate(minMax+'Date',null);if(date){date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0);}return date||(checkRange?this._rangeStart:null);},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate();},_getFirstDayOfMonth:function(year,month){return new Date(year,month,1).getDay();},_canAdjustMonth:function(offset,curYear,curMonth){var numMonths=this._getNumberOfMonths();var date=new Date(curYear,curMonth+(offset<0?offset:numMonths[1]),1);if(offset<0)date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth()));return this._isInRange(date);},_isInRange:function(date){var newMinDate=(!this._rangeStart?null:new Date(this._selectedYear,this._selectedMonth,this._selectedDay));newMinDate=(newMinDate&&this._rangeStart<newMinDate?this._rangeStart:newMinDate);var minDate=newMinDate||this._getMinMaxDate('min');var maxDate=this._getMinMaxDate('max');return((!minDate||date>=minDate)&&(!maxDate||date<=maxDate));},_getFormatConfig:function(){var shortYearCutoff=this._get('shortYearCutoff');shortYearCutoff=(typeof shortYearCutoff!='string'?shortYearCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));return{shortYearCutoff:shortYearCutoff,dayNamesShort:this._get('dayNamesShort'),dayNames:this._get('dayNames'),monthNamesShort:this._get('monthNamesShort'),monthNames:this._get('monthNames')};},_formatDate:function(day,month,year){if(!day){this._currentDay=this._selectedDay;this._currentMonth=this._selectedMonth;this._currentYear=this._selectedYear;}var date=(day?(typeof day=='object'?day:new Date(year,month,day)):new Date(this._currentYear,this._currentMonth,this._currentDay));return $.datepicker.formatDate(this._get('dateFormat'),date,this._getFormatConfig());}});function extendRemove(target,props){$.extend(target,props);for(var name in props)if(props[name]==null)target[name]=null;return target;};$.fn.datepicker=function(options){var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options=='string'&&(options=='isDisabled'||options=='getDate')){return $.datepicker['_'+options+'Datepicker'].apply($.datepicker,[this[0]].concat(otherArgs));}return this.each(function(){typeof options=='string'?$.datepicker['_'+options+'Datepicker'].apply($.datepicker,[this].concat(otherArgs)):$.datepicker._attachDatepicker(this,options);});};$.datepicker=new Datepicker();$(document).ready(function(){$(document.body).append($.datepicker._datepickerDiv).mousedown($.datepicker._checkExternalClick);});})(jQuery);
/*---------------------------------- END lib/ui/ui.datepicker-min.js ----------------------------------*/

/*---------------------------------- START lib/ui/ui.core-min.js ----------------------------------*/
;(function($){$.ui={plugin:{add:function(module,option,set){var proto=$.ui[module].prototype;for(var i in set){proto.plugins[i]=proto.plugins[i]||[];proto.plugins[i].push([option,set[i]]);}},call:function(instance,name,args){var set=instance.plugins[name];if(!set){return;}for(var i=0;i<set.length;i++){if(instance.options[set[i][0]]){set[i][1].apply(instance.element,args);}}}},cssCache:{},css:function(name){if($.ui.cssCache[name]){return $.ui.cssCache[name];}var tmp=$('<div class="ui-resizable-gen">').addClass(name).css({position:'absolute',top:'-5000px',left:'-5000px',display:'block'}).appendTo('body');$.ui.cssCache[name]=!!((!(/auto|default/).test(tmp.css('cursor'))||(/^[1-9]/).test(tmp.css('height'))||(/^[1-9]/).test(tmp.css('width'))||!(/none/).test(tmp.css('backgroundImage'))||!(/transparent|rgba\(0, 0, 0, 0\)/).test(tmp.css('backgroundColor'))));try{$('body').get(0).removeChild(tmp.get(0));}catch(e){}return $.ui.cssCache[name];},disableSelection:function(e){e.unselectable="on";e.onselectstart=function(){return false;};if(e.style){e.style.MozUserSelect="none";}},enableSelection:function(e){e.unselectable="off";e.onselectstart=function(){return true;};if(e.style){e.style.MozUserSelect="";}},hasScroll:function(e,a){var scroll=/top/.test(a||"top")?'scrollTop':'scrollLeft',has=false;if(e[scroll]>0)return true;e[scroll]=1;has=e[scroll]>0?true:false;e[scroll]=0;return has;}};var _remove=$.fn.remove;$.fn.remove=function(){$("*",this).add(this).trigger("remove");return _remove.apply(this,arguments);};function getter(namespace,plugin,method){var methods=$[namespace][plugin].getter||[];methods=(typeof methods=="string"?methods.split(/,?\s+/):methods);return($.inArray(method,methods)!=-1);};var widgetPrototype={init:function(){},destroy:function(){},getData:function(e,key){return this.options[key];},setData:function(e,key,value){this.options[key]=value;},enable:function(){this.setData(null,'disabled',false);},disable:function(){this.setData(null,'disabled',true);}};$.widget=function(name,prototype){var namespace=name.split(".")[0];name=name.split(".")[1];$.fn[name]=function(options,data){var isMethodCall=(typeof options=='string'),args=arguments;if(isMethodCall&&getter(namespace,name,options)){var instance=$.data(this[0],name);return(instance?instance[options](data):undefined);}return this.each(function(){var instance=$.data(this,name);if(!instance){$.data(this,name,new $[namespace][name](this,options));}else if(isMethodCall){instance[options].apply(instance,$.makeArray(args).slice(1));}});};$[namespace][name]=function(element,options){var self=this;this.options=$.extend({},$[namespace][name].defaults,options);this.element=$(element).bind('setData.'+name,function(e,key,value){return self.setData(e,key,value);}).bind('getData.'+name,function(e,key){return self.getData(e,key);}).bind('remove',function(){return self.destroy();});this.init();};$[namespace][name].prototype=$.extend({},widgetPrototype,prototype);};$.widget("ui.mouse",{init:function(){var self=this;this.element.bind('mousedown.mouse',function(){return self.click.apply(self,arguments);}).bind('mouseup.mouse',function(){(self.timer&&clearInterval(self.timer));}).bind('click.mouse',function(){if(self.initialized){self.initialized=false;return false;}});if($.browser.msie){this.unselectable=this.element.attr('unselectable');this.element.attr('unselectable','on');}},destroy:function(){this.element.unbind('.mouse').removeData("mouse");($.browser.msie&&this.element.attr('unselectable',this.unselectable));},trigger:function(){return this.click.apply(this,arguments);},click:function(e){if(e.which!=1||$.inArray(e.target.nodeName.toLowerCase(),this.options.dragPrevention||[])!=-1||(this.options.condition&&!this.options.condition.apply(this.options.executor||this,[e,this.element]))){return true;}var self=this;this.initialized=false;var initialize=function(){self._MP={left:e.pageX,top:e.pageY};$(document).bind('mouseup.mouse',function(){return self.stop.apply(self,arguments);});$(document).bind('mousemove.mouse',function(){return self.drag.apply(self,arguments);});if(!self.initalized&&Math.abs(self._MP.left-e.pageX)>=self.options.distance||Math.abs(self._MP.top-e.pageY)>=self.options.distance){(self.options.start&&self.options.start.call(self.options.executor||self,e,self.element));(self.options.drag&&self.options.drag.call(self.options.executor||self,e,this.element));self.initialized=true;}};if(this.options.delay){if(this.timer){clearInterval(this.timer);}this.timer=setTimeout(initialize,this.options.delay);}else{initialize();}return false;},stop:function(e){if(!this.initialized){return $(document).unbind('mouseup.mouse').unbind('mousemove.mouse');}(this.options.stop&&this.options.stop.call(this.options.executor||this,e,this.element));$(document).unbind('mouseup.mouse').unbind('mousemove.mouse');return false;},drag:function(e){var o=this.options;if($.browser.msie&&!e.button){return this.stop.call(this,e);}if(!this.initialized&&(Math.abs(this._MP.left-e.pageX)>=o.distance||Math.abs(this._MP.top-e.pageY)>=o.distance)){(o.start&&o.start.call(o.executor||this,e,this.element));this.initialized=true;}else{if(!this.initialized){return false;}}(o.drag&&o.drag.call(this.options.executor||this,e,this.element));return false;}});})(jQuery);
/*---------------------------------- END lib/ui/ui.core-min.js ----------------------------------*/

/*---------------------------------- START lib/jquery.scrollTo-min.js ----------------------------------*/
;(function($){$.scrollTo=function(a,b,c){$($.browser.safari?'body':'html').scrollTo(a,b,c)};$.scrollTo.defaults={axis:'y',duration:1};$.fn.scrollTo=function(c,d,f){if(typeof d=='object'){f=d;d=0}f=$.extend({},$.scrollTo.defaults,f);if(!d)d=f.speed||f.duration;f.queue=f.queue&&f.axis.length==2;if(f.queue)d=Math.ceil(d/2);if(typeof f.offset=='number')f.offset={left:f.offset,top:f.offset};return this.each(function(){var e=this,$e=$(e),t=c,toff,j={},w=$e.is('html,body');switch(typeof t){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(t)){t={top:t,left:t};break}t=$(t,this);case'object':if(t.is||t.style)toff=(t=$(t)).offset()}$.each(f.axis.split(''),parse);animate(f.onAfter);function parse(i,a){var P=a=='x'?'Left':'Top',p=P.toLowerCase(),k='scroll'+P,u=e[k];if(toff){j[k]=toff[p]+(w?0:u-$e.offset()[p]);if(f.margin){j[k]-=parseInt(t.css('margin'+P))||0;j[k]-=parseInt(t.css('border'+P+'Width'))||0}if(f.offset&&f.offset[p])j[k]+=f.offset[p]}else{j[k]=t[p]}if(/^\d+$/.test(j[k]))j[k]=j[k]<=0?0:Math.min(j[k],max(a));if(!i&&f.queue){if(u!=j[k])animate(f.onAfterFirst);delete j[k]}};function animate(a){$e.animate(j,d,f.easing,function(){if(a)a.call(this,$e,j,t)})};function max(a){var b=w?$.browser.opera?document.body:document.documentElement:e,D=a=='x'?'Width':'Height';return b['scroll'+D]-b['client'+D]}})}})(jQuery);
/*---------------------------------- END lib/jquery.scrollTo-min.js ----------------------------------*/

/*---------------------------------- START lib/jquery.timers.js ----------------------------------*/
/**
 * jQuery.timers - Timer abstractions for jQuery
 * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
 * Date: 2009/10/16
 *
 * @author Blair Mitchelmore
 * @version 1.2
 *
 **/
jQuery.fn.extend({
	everyTime: function(interval, label, fn, times) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, times);
		});
	},
	oneTime: function(interval, label, fn) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, 1);
		});
	},
	stopTime: function(label, fn) {
		return this.each(function() {
			jQuery.timer.remove(this, label, fn);
		});
	}
});

jQuery.extend({
	timer: {
		global: [],
		guid: 1,
		dataKey: "jQuery.timer",
		regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
		powers: {
			// Yeah this is major overkill...
			'ms': 1,
			'cs': 10,
			'ds': 100,
			's': 1000,
			'das': 10000,
			'hs': 100000,
			'ks': 1000000
		},
		timeParse: function(value) {
			if (value == undefined || value == null)
				return null;
			var result = this.regex.exec(jQuery.trim(value.toString()));
			if (result[2]) {
				var num = parseFloat(result[1]);
				var mult = this.powers[result[2]] || 1;
				return num * mult;
			} else {
				return value;
			}
		},
		add: function(element, interval, label, fn, times) {
			var counter = 0;
			
			if (jQuery.isFunction(label)) {
				if (!times) 
					times = fn;
				fn = label;
				label = interval;
			}
			
			interval = jQuery.timer.timeParse(interval);

			if (typeof interval != 'number' || isNaN(interval) || interval < 0)
				return;

			if (typeof times != 'number' || isNaN(times) || times < 0) 
				times = 0;
			
			times = times || 0;
			
			var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
			
			if (!timers[label])
				timers[label] = {};
			
			fn.timerID = fn.timerID || this.guid++;
			
			var handler = function() {
				if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
					jQuery.timer.remove(element, label, fn);
			};
			
			handler.timerID = fn.timerID;
			
			if (!timers[label][fn.timerID])
				timers[label][fn.timerID] = window.setInterval(handler,interval);
			
			this.global.push( element );
			
		},
		remove: function(element, label, fn) {
			var timers = jQuery.data(element, this.dataKey), ret;
			
			if ( timers ) {
				
				if (!label) {
					for ( label in timers )
						this.remove(element, label, fn);
				} else if ( timers[label] ) {
					if ( fn ) {
						if ( fn.timerID ) {
							window.clearInterval(timers[label][fn.timerID]);
							delete timers[label][fn.timerID];
						}
					} else {
						for ( var fn in timers[label] ) {
							window.clearInterval(timers[label][fn]);
							delete timers[label][fn];
						}
					}
					
					for ( ret in timers[label] ) break;
					if ( !ret ) {
						ret = null;
						delete timers[label];
					}
				}
				
				for ( ret in timers ) break;
				if ( !ret ) 
					jQuery.removeData(element, this.dataKey);
			}
		}
	}
});

jQuery(window).bind("unload", function() {
	jQuery.each(jQuery.timer.global, function(index, item) {
		jQuery.timer.remove(item);
	});
});
/*---------------------------------- END lib/jquery.timers.js ----------------------------------*/

/*---------------------------------- START lib/mediaplayer/swfobject.js ----------------------------------*/
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
/*---------------------------------- END lib/mediaplayer/swfobject.js ----------------------------------*/

/*---------------------------------- START hepler.js ----------------------------------*/
var helper = {
	defaults: {
		className: 'tm-help'
	},
	container: '#tmHelperContainer',
	init: function()
	{
		if ($(helper.container).length <= 0) {
			$('body').append('<div id="tmHelperContainer"></div>');
		}
		$('.' + helper.defaults.className).each(function() {
			$(this).bind('mouseenter', helper.helperMouseOver).bind('mouseleave', helper.helperMouseOut).bind('click', function() { return false; });
		});
	},
	helperMouseOver: function(e)
	{
		var
			$this = $.browser.msie ? $(e.target) : $(e.currentTarget),
			_html = $this.find('.tm-help-text-container').html(),
			top = e.clientY + document.documentElement.scrollTop,
			left = e.clientX + document.documentElement.scrollLeft + $this.width() + 10
		;
		e.stopPropagation();
		e.preventDefault();
		if (_html.length > 0) {
			helper.helperShow(_html, top, left);
		}
	},
	helperMouseOut: function(e)
	{
		e.stopPropagation();
		e.preventDefault();
		helper.helperHide();
	},
	helperShow: function(_html, top, left)
	{
		$(helper.container).css({
			maxWidth: $('body').width()/3,
			top: top,
			left: left
		});
		$(helper.container).html(_html).show();
	},
	helperHide: function()
	{
		$(helper.container).hide();
	}
};

$(helper.init);

/*jQuery.fn.extend({
	tmHelper: function() {
		function enterHelp(e) {
			e.preventDefault();
			e.stopPropagation();
			alert('Enter');
		}
		function leaveHelp(e) {
			e.preventDefault();
			e.stopPropagation();
			alert('Leave');
		}
		
		return this.each(function() {
			var $this = $(this);
			$this.bind('mouseenter', enterHelp).bind('mouseleave', leaveHelp);
		});
	}
});*/
/*---------------------------------- END hepler.js ----------------------------------*/

/*---------------------------------- START search-cookie.js ----------------------------------*/
$(function() {
	if ($('div.form_search_outer').attr('id') == 'hotel_search_outer') {
		var expiresDate = new Date();
		expiresDate += 1000*60*60;
		var baloonWidth = $('#cnt-top .char-chief .tip .tcnt').width();
		var baloonWidthNew = 360;
		var searchFormMoreShow = function() {
			$('.more-less-controls .more').hide();
			$('.hotel_search_more').show();
			$('#adults-list').show();
			$('.more-less-controls .less').css('display', 'block');
			$('#input-hotelname').focus();
			if ($('#searchFormOpenedStatus').length > 0) {
				$('#cnt-top .char-chief .tip .tcnt').width(baloonWidth);
				$('#search-more-text').remove();
			}
		};
		var searchFormMoreHide = function() {
			$('.more-less-controls .less').hide();
			$('.hotel_search_more').hide();
			$('#adults-list').hide();
			$('.more-less-controls .more').css('display', 'block');
			if ($('#searchFormOpenedStatus').length > 0) {
				setCookie('searchFormOpened', false, expiresDate);
				$('#cnt-top .char-chief .tip .tcnt').width(baloonWidthNew);
				$('#search-more-text').remove();
				$('#chief-baloon').after('<p id="search-more-text"><b>' + 'USE_ADVANCED_SEARCH'.translate() + '</b></p>');
			}
		};
		$('.more-less-controls .more').click(searchFormMoreShow);
		$('.more-less-controls .less').click(searchFormMoreHide);
		if ($('#searchFormOpenedStatus').length > 0) {
			var currentSearchFormOpened = getCookie('searchFormOpened');	
			var setSearchFormOpenedCookie = function() {
				if (currentSearchFormOpened == null) {
					setCookie('searchFormOpened', true, expiresDate);
				}
			};
			$('.navigation li').not('.disabled').find('a').click(setSearchFormOpenedCookie);
			$('.pager li').not('.active').find('a').click(setSearchFormOpenedCookie);

			searchFormMoreHide();
			if (currentSearchFormOpened == 'true'/* && $('#adults-list').is(':hidden')*/) {
				searchFormMoreShow();
			} else if (currentSearchFormOpened == 'false' && $('#adults-list').is(':visible')) {
				searchFormMoreHide();
			}
			
			if (location.href.match(/&page=/)) {
				searchFormMoreShow();
			}

		}
	}
});
/*---------------------------------- END search-cookie.js ----------------------------------*/

/*---------------------------------- START base.config.js ----------------------------------*/
tm.Config = {};
tm.Config.imgsPath = '/i/';
tm.Config.behavioursPath = '/misc/';
tm.Config.SearchFormsTimeout = 1000;
tm.Config.Review = { maxPhotos: 10,    minReviewWords: 50, allowedExtensions: ['jpg','jpeg','gif','png'], maxDuration: 365 };
tm.Config.formCYS = { maxFlights: 3 };
/* possible date formats: 'dd/mm/yyyy', 'mm/dd/yyyy', 'yyyy-mm-dd',
 * 'dd mmm yy' by other words: day -- 'dd', month -- mm (numeric)
 * or mmm (short name from three letters), 'yy' and 'yyyy' -- year (short and long)
 */
tm.Config.dateFormat = "dd.mm.yyyy";
tm.Config.searchResultsTimeout = 60000;
tm.Config.BaseDomain = 'http://tmua.serega.dev.mrise.ru';
/*---------------------------------- END base.config.js ----------------------------------*/

/*---------------------------------- START selector.js ----------------------------------*/
$(function() {
    $('.selector').change(function() {
        function doSelectorRequest(s, m) {
            var t = $(m.target), p = {id: s.val()};
            if (m.params !== undefined) {
            	for (var param in m.params) {
            		p[param] = m.params[param];
            	}
            }
            t.html('<option value="">Загрузка...</option>');
            t.attr('disabled', 'disabled');
            $.get(m.url, p, function (data) {
                t.attr('disabled', '');
                var h = '';
                h += '<option value="' + m.defValue + '" selected="selected" class="first">' + m.defText + '</option>';
                t.html(h + data);
                t.val(m.defValue);
            });
        }

        var s = $(this); var m = s.metadata();

        if (m.targets !== undefined) {
            for (var i = 0, l = m.targets.length; i < l; i++) {
                doSelectorRequest(s, m.targets[i]);
            };
        } else {
            doSelectorRequest(s, m);
        }

    });
});
/*---------------------------------- END selector.js ----------------------------------*/

/*---------------------------------- START skypecheck-min.js ----------------------------------*/
var activex=((navigator.userAgent.indexOf('Win')!=-1)&&(navigator.userAgent.indexOf('MSIE')!=-1)&&(parseInt(navigator.appVersion)>=4));var CantDetect=((navigator.userAgent.indexOf('Safari')!=-1)||(navigator.userAgent.indexOf('Opera')!=-1));function oopsPopup(){if((navigator.language&&navigator.language.indexOf("ja")!=-1)||(navigator.systemLanguage&&navigator.systemLanguage.indexOf("ja")!=-1)||(navigator.userLanguage&&navigator.userLanguage.indexOf("ja")!=-1)){var URLtoOpen="http://download.skype.com/share/skypebuttons/oops/oops_ja.html";}else{var URLtoOpen="http://download.skype.com/share/skypebuttons/oops/oops.html";}
var windowName="oops";var popW=540,popH=305;var scrollB='no';w=screen.availWidth;h=screen.availHeight;var leftPos=(w-popW)/2,topPos=(h-popH)/2;oopswindow=window.open(URLtoOpen,windowName,'width='+popW+',height='+popH+',scrollbars='+scrollB+',screenx='+leftPos+',screeny='+topPos+',top='+topPos+',left='+leftPos);return false;}
if(typeof(detected)=="undefined"&&activex){document.write(['<script language="VBscript">','Function isSkypeInstalled()','on error resume next','Set oSkype = CreateObject("Skype.Detection")','isSkypeInstalled = IsObject(oSkype)','Set oSkype = nothing','End Function','</script>'].join("\n"));}
function skypeCheck(){if(CantDetect){return true;}else if(!activex){var skypeMime=navigator.mimeTypes["application/x-skype"];detected=true;if(typeof(skypeMime)=="object"){return true;}else{return oopsPopup();}}else{if(isSkypeInstalled()){detected=true;return true;}}
detected=true;return oopsPopup();}
function loadDetection(){if(document.getElementById&&document.getElementsByTagName){if(window.addEventListener)window.addEventListener('load',addDetection,false);else if(window.attachEvent)window.attachEvent('onload',addDetection);}}
function addDetection(){var pageLinks=document.getElementsByTagName("a");for(var i=0;i<pageLinks.length;i++){if(pageLinks[i].childNodes[0]&&pageLinks[i].childNodes[0].src){if((pageLinks[i].childNodes[0].src.indexOf('download.skype.com\/share\/skypebuttons')!=-1||pageLinks[i].childNodes[0].src.indexOf('mystatus.skype.com')!=-1)&&(typeof(pageLinks[i].onclick)=="undefined"||pageLinks[i].onclick==null)){pageLinks[i].onclick=function sChk(){return skypeCheck();}}}}}
loadDetection();
/*---------------------------------- END skypecheck-min.js ----------------------------------*/

/*---------------------------------- START search.js ----------------------------------*/
(function($) {
    $(function(event) {

		var ordinals = new Array(
			'ORDINAL_FIRST'.translate(),
			'ORDINAL_SECOND'.translate(),
			'ORDINAL_THIRD'.translate(),
			'ORDINAL_FOURTH'.translate(),
			'ORDINAL_FIFTH'.translate(),
			'ORDINAL_SIXTH'.translate(),
			'ORDINAL_SEVENTH'.translate(),
			'ORDINAL_EIGHTH'.translate(),
			'ORDINAL_NINETH'.translate(),
			'ORDINAL_TENTH'.translate()
		);
		
		var firstCitiesData;
		
		var pVal = $('#tourists-number').val();
		
		var agesMass = [];
		var agesMassMax = 0;
		$('#adults-list li:first .custom-select .custom-select-body-i ul li').each(function() {
			agesMass.push($(this).find('a').metadata().value);
		});
		agesMassMax = Math.max.apply(Math, agesMass);
		function showAdvancedSearch() {
			$('.search_controls a.more').hide();
			$('.search_controls a.less').css('display', 'block');
			$('.hotel_search_more').show();
			$('#adults-list').show();
		}
		$.urlParam = function(name){
			var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
			if (!results) { return 0; }
			return results[1] || 0;
		}
		function loadGeoLocations() {
		   var geolocid = $.urlParam('gl');
		   var cityctrl = document.getElementById('ct');
		   if (cityctrl != null) {
		       var cityid = cityctrl.value;
		       if (cityid == 0 || cityid == '' || cityid == null) return;

		       var geoctrl = document.getElementById('geo-location');
		       if (geoctrl == null) return;
		       geoctrl.length = 0;

		       geoctrl.options[geoctrl.options.length] = new Option('GEO_LOCATION_LOADING'.translate(), 0);

		       $.getJSON("/a_ajax/location.getGeoLocations?cityid=" + cityid,
			   function(data) {
				geoctrl.length = 0;

				if (data.locations != null) {
				   geoctrl.options[geoctrl.options.length] = new Option('GEO_LOCATION_NOLOCATION'.translate(), 0);

				   var category = "";
				
				   $.each(data.locations, function(i,location) {
					if (location.category != category) {
						if (category != "") {
							geoctrl.options[geoctrl.options.length] = new Option("", 0);
						}
						
						category = location.category;
						if (category != '0CNTR')		// No category for Center location
							geoctrl.options[geoctrl.options.length] = new Option(('GEO_LOCATION_' + category).translate(), 0);
					}
					
					if (location.category == '0CNTR') {
						geoctrl.options[geoctrl.options.length] = new Option('GEO_LOCATION_0CNTR'.translate(), location.id);
					} else {

						geoctrl.options[geoctrl.options.length] = new Option("  " + location.name, location.id);
					}
					if (geolocid == location.id) {
						geoctrl.selectedIndex = geoctrl.options.length-1;
					}

				   });
				} else {
				   geoctrl.options[geoctrl.options.length] = new Option('GEO_LOCATION_NOITEMS'.translate(), 0);
				}
			   }
		       );
		   }
		}

		if ($('#adults > input[type="hidden"]').val() > 0 ||
			$('#babies > input[type="hidden"]').val() > 0 ||
			$('#rooms > input[type="hidden"]').val() > 1 ||
			$('#price-from').val() != '' ||
			$('#price-to').val() != '' ||
			$('#nutrition-type > input[type="hidden"]').val() != '' ||
			$('#input-hotelname').val() != '' ||
			$('#chk-onlyavail').attr('checked') == true ||
			pVal != 2 ||
			($('#price-markup').length > 0 && !$('#price-markup').is(':checked'))
			||
			$('#systemCurrencyCode').val() != $('#outputCurrency').val()
		)
		{
			$('#cnt-top .char-chief .tip .tcnt').width(160);
			$('#search-more-text').remove();
			showAdvancedSearch();
		}

		for (var i = 1; i <= pVal; i++) {
			var liNth = $('#adults-list li:nth-child(' + i + ')');
			if (!$('#frm-air').length > 0) {
				liNth.find('label').text(ordinals[i-1] + ' ' + 'TOURIST'.translate() + ':');
			}
			liNth.show();
			
			if (!liNth.find('input[type="hidden"]').length > 0) {
				liNth.find('.custom-select').prepend('<input class="js-added" type="hidden" name="p[]" value="0" />');
			}
			if (liNth.find('.custom-select input[type="hidden"]').val() != agesMassMax) {
				showAdvancedSearch();
			}
		}
		
		var span = $('#city-selector .custom-select-header div');
		var spanHeader = $('#city-selector .custom-select-header');
		var spanEnd = $('#city-end-selector .custom-select-header div');
		var spanEndHeader = $('#city-end-selector .custom-select-header');
		var countryValInput = $('#selector-country > input[type="hidden"]');
		var locationTr = $('#location').parents('tr');
		//var supplier = $('#selector-supplier');
		showCustomSelectVar = false;
		var citySelHeightIE = function() {
			if ($.browser.msie && $.browser.version.number < 7) {
				var csb = $('#city-selector div.custom-select-body');
				var csbh = csb.height();
				csb.css({height: 'auto'});
				if (csbh >= 443) {
					csb.css({height: '443px'});
				}
			}
		};
		citySelHeightIE();
		var hideThis = function(elm) {
			if (!$.browser.msie) {
				elm.slideUp('fast');
			} else {
				elm.hide();
			}
		};
		$(document).bind('keypress', function(event) {
			switch(event.keyCode) {
				case 27:
					$('.custom-select-header > div').removeClass('sel-active');
					hideThis($('.custom-select-body'));
					showCustomSelectVar = false;
					tm.Popup.popupClose();
					break;
			}
		});
		var countrySelectorDisable = function() {
			$('#selector-country .custom-select-header div').addClass('disabled');
			$('#selector-country .custom-select-header').unbind('mousedown', cSelectClick);
		};
		var countrySelectorEnable = function() {
			if ($('#selector-country .custom-select-header div').hasClass('disabled')) {
				$('#selector-country .custom-select-header div').removeClass('disabled');
				$('#selector-country .custom-select-header').bind('mousedown', cSelectClick);
			}
		};
		var citySelectorDisable = function() {
			span.addClass('disabled');
			spanHeader.unbind('mousedown', custSelectClick);
			spanEnd.addClass('disabled');
			spanEndHeader.unbind('mousedown', custSelectClick);
		};
		if (countryValInput.val() == '') {
			citySelectorDisable();
		}
		var citySelectorEnable = function() {
			if (span.hasClass('disabled')) {
				span.removeClass('disabled');
				spanHeader.bind('mousedown', custSelectClick);
				spanEnd.removeClass('disabled');
				spanEndHeader.bind('mousedown', custSelectClick);
			}
		};
		var citySelectorSetWait = function() {
			span.find('span').css({background: 'url(/i/free-site-wizard/ajax-loader.gif) 0 0 no-repeat', textIndent: '-999em'});
			spanEnd.find('span').css({background: 'url(/i/free-site-wizard/ajax-loader.gif) 0 0 no-repeat', textIndent: '-999em'});
		};
		var citySelectorRemoveWait = function() {
			span.find('span').css({background: 'none', textIndent: 0});
			spanEnd.find('span').css({background: 'none', textIndent: 0});
		};
		/*var supplierSelectorSetWait = function() {
			supplier.find('span').css({background: 'url(/i/free-site-wizard/ajax-loader.gif) 0 0 no-repeat', textIndent: '-999em'});
		}
		var supplierSelectorRemoveWait = function() {
			supplier.find('span').css({background: 'none', textIndent: 0});
		}
		var companySelectorDisable = function() {
			$('#selector-supplier .custom-select-header div').addClass('disabled');
			$('#selector-supplier .custom-select-header').unbind('mousedown', cSelectClick);
		}
		var companySelectorEnable = function() {
			$('#selector-supplier .custom-select-header div').removeClass('disabled');
			$('#selector-supplier .custom-select-header').bind('mousedown', cSelectClick);
		}*/
		var countriesArray = [];
		$('#selector-country .custom-select-body-i a').mousedown(function() {
			var $this = $(this);
			if (span.is(':hidden')) {
				span.next('.ct-error').remove();
				span.show();
			}
			if (locationTr.is(':visible')) {
				locationTr.hide();
			}
			$this.parents('ul').find('li.active').removeClass('active');
			$this.parent(0).addClass('active');
			$('#city-selector .custom-select-body-i').html('<table></table>');
			var temp = $('#city-selector .custom-select-header span');
			temp.text(temp.metadata().defText);
			if ($('#city-end-selector').length > 0) {
				$('#city-end-selector .custom-select-header span').text($('#city-end-selector .custom-select-header span').metadata().defText);
			}
			span.html(span.metadata().defText);
			spanEnd.html(span.metadata().defText);
			var citySelectorInp = $('#city-selector input[type="hidden"], #city-end-selector input[type="hidden"]');
			if (citySelectorInp.val() != '') {
				citySelectorInp.val('');
			}
			countryValInput.val($this.metadata().value);
			$('#selector-country .custom-select-header span').text($this.text());
			citySelectorDisable();
			citySelectorSetWait();
			countrySelectorDisable();
			bodyClickCSelectHide();
			var countryVal = countryValInput.val();
			if ($('#' + countryVal).length <= 0) {
				//$.getJSON("/a_ajax/location.getCitiesData?id=" + encodeURIComponent($('#selector-country input[type="hidden"]').val()), firstResponse);
				var nocache = '';
				if (location.href.match(/nocache=/i)) {
					nocache = '&nocache=1';
				}
				var getCitiesUrl = "/a_ajax/location.getCitiesData";
				if ($this.parents('form').is('#frm-car-search')) {
					getCitiesUrl = "/a_ajax/location.getCarCitiesData";
				}
				$.ajax({
					url: getCitiesUrl + "?id=" + encodeURIComponent(countryValInput.val()) + nocache,
					type: "GET",
					dataType : "json",
					timeout: 10000,
					success: firstResponse,
					error: firstRequestError
				});
			} else {
				citySelectorRemoveWait();
				countrySelectorEnable();
				citySetContentFromHTML();
				citySelectorEnable();
			}
			hideThis($this.parents('.custom-select-body'));
		});
		var citySetContentFromHTML = function() {
			//$('#city-selector .custom-select-body-i').html($('#' + countryValInput.val()).html());
			firstResponse(countriesArray[countryValInput.val()]);
		};
		var firstRequestError = function() {
			var nocache = '';
			if (location.href.match(/nocache=/i)) {
				nocache = '&nocache=1';
			}
			var getCitiesUrl = "/a_ajax/location.getCitiesData";
			if ($(this).parents('form').is('#frm-car-search')) {
				getCitiesUrl = "/a_ajax/location.getCarCitiesData";
			}
			$.ajax({
				url: getCitiesUrl + "?id=" + encodeURIComponent(countryValInput.val()) + nocache,
				type: "GET",
				dataType : "json",
				timeout: 10000,
				success: firstResponse,
				error: secondRequestError
			});
		};
		var secondRequestError = function() {
			$('#ajax-loader').remove();
			if (countryValInput.val() != '') {
				countrySelectorEnable();
				citySelectorRemoveWait();
			} else {
				alert('ERROR'.translate());
			}
			span.find('span').text('NO_CITY'.translate());
		};
		var custSelectClick = function(event) {
			event.preventDefault();
			event.stopPropagation();
			$('.custom-select .custom-select-header div').removeClass('sel-active');
			hideThis($('.custom-select .custom-select-body'));
			!showCustomSelectVar ? showCustomSelect(this) : hideCustomSelect(this);
		};
		spanHeader.bind('mousedown', custSelectClick);
		spanEndHeader.bind('mousedown', custSelectClick);
		var bodyClickCSelectHide = function() {
			$('body').bind('mousedown', function() {
				if ($('.custom-select-body').length > 0) {
					$('.custom-select .custom-select-header div').removeClass('sel-active');
					hideThis($('.custom-select-body').not(':hidden'));
					showCustomSelectVar = false;
				}
			});
		};
		var bodyUnbindClick = function() {
			$('body').unbind('mousedown');
		};
		$('.custom-select').mouseover(bodyUnbindClick);
		$('.custom-select').mouseout(bodyClickCSelectHide);
		
		var hideSubCities = function() {
			$('#city-selector .custom-select-body .cities-block td.hasSub').removeClass('hasSubActive');
			$('#city-selector .custom-select-body tr.subActive').hide();
		};
		var selectCityBind = function(cities) {
			$('#city-selector .custom-select-body .cities-block td').find('a').unbind('mousedown').bind('mousedown', {locations: cities}, selectCity);
			$('#city-end-selector .custom-select-body .cities-block td').find('a').unbind('mousedown').bind('mousedown', {locations: cities}, selectCity);
			$('#city-selector .custom-select-body .cities-block td.hasSub strong').unbind('mousedown').bind('mousedown', function() {
				var
					$this = $(this),
					td = $this.parents('td.hasSub'),
					num = parseInt($this.parents('td.hasSub').attr('name')),
					tr = $this.parents('tr.cities-block').nextAll('tr.subActive_' + num).eq(0)
				;
				if (td.hasClass('hasSubActive')) {
					$this.parents('table').find('td.hasSubActive').removeClass('hasSubActive');
					$this.parents('table').find('tr.subActive').hide();
					td.removeClass('hasSubActive');
					tr.hide();
				} else {
					$this.parents('table').find('td.hasSubActive').removeClass('hasSubActive');
					$this.parents('table').find('tr.subActive').hide();
					td.addClass('hasSubActive');
					tr.show();
					//$this.parents('div.custom-select-body').scrollTo($this, 800, {offset: -50});
				}
			});


		};
		/*
		var showCompany = function() {
			supplierSelectorSetWait();
			$.ajax({
				url: '/a_ajax/supplier/supplier.getSuppliers',
				type: 'GET',
				dataType: 'json',
				success: function(data) {
					companySelectorEnable();
					supplierSelectorRemoveWait();
					supplier.find('.custom-select-body-i ul').html('');
					for (var i = 0; i < data.length; i++) {
						supplier.find('.custom-select-body-i ul').append('<li class="simple-select-row"><a href="javascript:void(0)" class="{value: ' + "'" + data[i].code + "'" + '}">' + data[i].name + '</a></li>');
					}
				},
				error: function() {
					alert('ERROR'.translate());
				}
			});
		}
		*/
		var selectCity = function(arr) {
			bodyUnbindClick();
			var $this = $(this);
			if ($this.parent(0).hasClass('hasSubActive') || $this.parents('tr.subActive').length <= 0) {
				hideSubCities();
			}
			if (!$this.parents('.cities-block').hasClass('c-navigation')) {
				$this.parents('.custom-select').find('.custom-select-header span').text($this.text());
				$this.parents('.custom-select-body').find('.cities-block td.active').removeClass('active');
				$this.parent(0).addClass('active');
				hideCustomSelect(this);
				if ($this.hasClass('has_regions')) {
					for (var i = 0; i < arr.data.locations.length; i++) {
						for (var j = 0; j < arr.data.locations[i].l.length; j++) {
							$('#location .custom-select-body ul').append('<li class="simple-select-row"><a href="javascript:void(0)" class="{value: \'' + arr.data.locations[i].l + '\'}">' + arr.data.locations[i].l + '</a></li>');
						}
					}
					locationTr.show();
				}
				/*if ($this.parents('form').is('#frm-car-search')) {
					showCompany();
				}*/
			}
			$this.parents('.custom-select').find('input[type="hidden"]').val($this.attr('name'));
			if ($('#city-end-selector').length > 0 && $this.parents('.custom-select').attr('id') == 'city-selector' && $('#city-end-selector .custom-select-header span').text() == $('#city-end-selector .custom-select-header span').metadata().defText) {
				$('#city-end-selector .custom-select-header span').text($this.text());
				$('#city-end-selector input[name="ect"]').val($this.attr('name'));
				$('#city-end-selector .ul td').removeClass('active');
				$('#city-end-selector .ul a[name="' + $this.attr('name') + '"]').parent(0).addClass('active');
			}


			loadGeoLocations();
		};
		var scrollBody = function(elm) {
			var b = elm.parents('.custom-select').find('.custom-select-body'),
				a = b.find('.active');
			if (a.length > 0) {
				b.scrollTo(a, 100, {queue:true, offset:-80});
			}
		};
		var showCustomSelect = function(elm) {
			showCustomSelectVar = true;
			if (countryValInput.val() != '') {
				if ($(elm).parents('.custom-select').find('.custom-select-body-i').children().size() == 0) {
					$('#city-selector .custom-select-body-i').append('<img id="ajax-loader" src="/i/ajax-loader-white.gif" width="42" height="42" alt="' + 'LBL_LOADING'.translate() + '" />');
					if ($('#city-end-selector').length > 0) {
						$('#city-end-selector .custom-select-body-i').append('<img id="ajax-loader" src="/i/ajax-loader-white.gif" width="42" height="42" alt="' + 'LBL_LOADING'.translate() + '" />');
					}
					setTimeout(function() {
						//$.getJSON("/a_ajax/location.getCitiesData?id=" + $('#selector-country input[type="hidden"]').val(), firstResponse);
						var countryVal = countryValInput.val();
						if ($('#' + countryVal).length <= 0) {
							var nocache = '';
							if (location.href.match(/nocache=/i)) {
								nocache = '&nocache=1';
							}
							var cityLetter = '',
								currentCity = $('#city-selector .custom-select-header span'),
								currentCityText = $.trim(currentCity.text())
							;
							if (!currentCity.parent(0).hasClass('disabled') && currentCityText != currentCity.metadata().defText) {
								cityLetter = "&cityLetter=" + currentCityText.substring(0,1);
							}
							$.ajax({
								url: "/a_ajax/location.getCitiesData?id=" + countryValInput.val() + cityLetter + nocache,
								type     : "GET",
								dataType : "json",
								timeout: 10000,
								success: firstResponse,
								error: firstRequestError
							});
						} else {
							citySetContentFromHTML();
						}
					}, 1000);
				}
				bodyUnbindClick();
				$(elm).parents('.custom-select').find('.custom-select-header div').addClass('sel-active');
				
				var subActiveLinkActive = $(elm).parents('.custom-select').find('div.custom-select-body-i .subActive .active');
				if (subActiveLinkActive.length > 0) {
					
					subActiveLinkActive.parents('.subActive').show().prev(0).find('td.hasSub').addClass('hasSubActive');
				}
				if (!$.browser.msie) {
					$(elm).parents('.custom-select').find('.custom-select-body').slideDown('fast', function() {
						setTimeout(bodyClickCSelectHide, 500);
						scrollBody($(elm));
					});
				} else {
					$(elm).parents('.custom-select').find('.custom-select-body').show();
					scrollBody($(elm));
				}
			}
		};
		var hideCustomSelect = function(elm) {
			$(elm).parents('.custom-select').find('.custom-select-header div').removeClass('sel-active');
			hideThis($(elm).parents('.custom-select').find('.custom-select-body'));
			showCustomSelectVar = false;
		};
		var firstResponse = function(data) {
			if (data) {
				if (data.cities != undefined || data.cities.length > 0) {
					firstCitiesData = data;
					$('#ajax-loader').remove();
					if (countryValInput.val() != '') {
						countrySelectorEnable();
						citySelectorEnable();
						citySelectorRemoveWait();
					} else {
						//alert('ERROR'.translate());
					}
					linksArray = [];
					for (var ii = 0; ii < data.links.length; ii++) {
						linksArray.push(data.links[ii].url);
					}
					var links = data.links;
					
					responseEval(data, 0, undefined);
					
//					var blockContainersCount = $('#city-selector .custom-select-body-i tr.c-navigation').size();
					for (var t = 0; t < links.length; t++) {
//						var letter = (links[t].first != links[t].last) ? (links[t].first + ' - ' + links[t].last) : links[t].first;
						var letter = links[t].caption;
						var appendedBlock = '<tbody class="c-navigation-body"><tr class="c-navigation"><td colspan="4"><a href="javascript:void(0)" class="{linkNum: ' + (t + 1) + ', first: \'' + links[t].first + '\', last: \'' + links[t].last +'\', url: \'' + links[t].url + '\'}">' + letter + '</a></td></tr></tbody>';
						$('#city-selector .custom-select-body-i > table').append(appendedBlock);
					}

					$('#city-end-selector .custom-select-body-i table').html($('#city-selector .custom-select-body-i table').html());

					selectCityBind(data.cities);
					//$('#city-selector .custom-select-body .cities-block td').not('.hasSub').find('a, #city-end-selector .custom-select-body .cities-block a').unbind('mousedown').bind('mousedown', {locations: data.cities}, selectCity);
					
					$('#city-selector .custom-select-body-i .c-navigation a').unbind('mousedown').bind('mousedown', lettersCoose);
					$('#city-end-selector .custom-select-body-i .c-navigation a').unbind('mousedown').bind('mousedown', lettersCooseCityEnd);
					
					if ($('#' + countryValInput.val()).length <= 0) {
						$('body').append('<div id="' + countryValInput.val() + '" style="display:none;"></div>');
						countriesArray[countryValInput.val()] = data;
					}
					
					var citySpan = $('#city-selector .custom-select-header span');
					if (data.opened.length > 0 && $.trim(citySpan.text()).toLowerCase() != citySpan.metadata().defText.toLowerCase() && !citySpan.parent(0).hasClass('disabled')) {
						nextResponse(data.opened[0]);
						scrollBody(citySpan);
					}
					
					//$('#city-selector .custom-select-body-i')
				} else {
					span.find('span').text('NO_CITY'.translate());
					citySelectorDisable();
					citySelectorRemoveWait();
				}
				citySelHeightIE();
			} else {
				span.hide();
				$('#city-selector .custom-select-header').append('<strong class="ct-error">' + 'ERROR'.translate() + '</strong>');
			}
		};
		var responseEval = function(data, clickedNum, tBody) {
			dataOld = data;
			data = data.cities;
			var currentLetter = '';
			var blockSize = 0;
			var oneLetterCities = [];
			var colsCount = 4;
			var container = $('#city-selector .custom-select-body-i > table');
			var putCitiesInBlock = function(oneLetterCities, currentLetter) {
				if (oneLetterCities.length > 0) {
					if(currentLetter != '') {
						if (clickedNum > 0 && tBody != undefined) {
							tBody.append('<tr class="letter"><th colspan="4">' + currentLetter + '</th></tr>');
						} else {
							container.append('<tr class="letter"><th colspan="4">' + currentLetter + '</th></tr>');
						}
					}
					var blocksize = Math.ceil(oneLetterCities.length/colsCount);
					
					var setSubCities = function(subCities, trR, num) {
						var trAfter = $('<tr class="subActive subActive_' + num + '"></tr>');
						trAfter.append('<td colspan="4"><div class="subDiv"><table></table></div></td>');
						var blocksize = Math.ceil(subCities.length/colsCount);
						var container = trAfter.find('table');
						for (var a = 0; a < blocksize; a++) {
							var tr = $('<tr class="cities-block"></tr>');
							for (b = a; b < subCities.length; b += blocksize) {
								var city = subCities[b];
								if (city == undefined) {
									break;
								}
								var selectedCity = '';
								if (city.t.toLowerCase() == $('#city-selector .custom-select-header span').text().toLowerCase().replace(/(^\s+)|(\s+$)/g, "")) {
									selectedCity = ' class="active"';
								}
								var created = (city.r != undefined && city.r == 1 && false);
								insertedTd = $('<td' + selectedCity + '><a href="javascript:void(0)" name="' + city.n + '" title="' + city.t + '">' + (created ? '<b>' : '') + city.t + (created ? '</b>' : '') + '</a></td>');
								tr.append(insertedTd);
							}
							container.append(tr);
						}
						if (trR.next(0).hasClass('subActive')) {
							if (trR.next(1).hasClass('subActive')) {
								if (trR.next(2).hasClass('subActive')) {
									trR.next(2).after(trAfter);
								} else {
									trR.next(1).after(trAfter);
								}
							} else {
								trR.next(0).after(trAfter);
							}
						} else {
							trR.after(trAfter);
						}
					};
					
					for (var a = 0; a < blocksize; a++) {
						var tr = $('<tr class="cities-block"></tr>');
						var newCityN = '';
						var subcitiesArray = [];
						for (b = a; b < oneLetterCities.length; b += blocksize) {
							var city = oneLetterCities[b];
							if (city == undefined) {
								break;
							}
							var selectedCity = '';
							if (city.t.toLowerCase() == $('#city-selector .custom-select-header span').text().toLowerCase().replace(/(^\s+)|(\s+$)/g, "")) {
								selectedCity = 'active ';
							}
							var created = (city.r != undefined && city.r == 1 && false);
							var class_hasSub = '';
							var moreLink = '';
							if (firstCitiesData.subcities != undefined && firstCitiesData.subcities[city.n] != undefined) {
								newCityN = city.n;
								class_hasSub = 'hasSub';
								subCities = firstCitiesData.subcities[city.n];
								moreLink = '<strong>&darr;</strong> ';
							}
							var insertedTd = $('<td class="' + selectedCity + class_hasSub +'">' + moreLink + '<a href="javascript:void(0)" name="' + city.n + '" title="' + city.t + '">' + (created ? '<b>' : '') + city.t + (created ? '</b>' : '') + '</a>' + '</td>');
							tr.append(insertedTd);
							if (insertedTd.hasClass('hasSub')) {
								insertedTd.attr('name', insertedTd.prevAll('td.hasSub').length+1);
							}
						}
						if (clickedNum > 0 && tBody != undefined) {
							tBody.append(tr);
						} else {
							container.append(tr);
						}
						if (firstCitiesData.subcities != undefined && firstCitiesData.subcities[newCityN] != undefined) {
							tr.find('td.hasSub').each(function() {
								setSubCities(firstCitiesData.subcities[$(this).find('a').attr('name')], tr, parseInt($(this).attr('name')));
							});
						}
					}
					
					oneLetterCities = [];
				}
				return oneLetterCities;
			};
			
			if (clickedNum == 0 && dataOld.rated.length > 0) {
				var rCities = [];
				for (var h = 0; h < dataOld.rated.length; h++) {
					rCities.push(dataOld.rated[h]);
				}
				putCitiesInBlock(rCities, '<span>' + 'MOST_POPULAR_CITIES'.translate() + '</span>');
			}
			
			for (var i = 0; i < data.length; i++) {
				var newLetter = data[i].t.substr(0, 1).toUpperCase();
				if (i == 0 && clickedNum == 0) {
					container.find('tbody:first tr.cities-block a').addClass('popular');
				}
				if (currentLetter != newLetter) {
					oneLetterCities = putCitiesInBlock(oneLetterCities, currentLetter);
					currentLetter = newLetter;
				}
				oneLetterCities.push(data[i]);
			}
			
			oneLetterCities = putCitiesInBlock(oneLetterCities, currentLetter);

			if (tBody != undefined) {
				$('#city-selector div.custom-select-body').scrollTo($(tBody), 800, {offset:-80});
			}
			//$('#city-selector div.custom-select-body-i .num-container:first').css({paddingBottom: '0', marginBottom: '0'});
//			$('#city-selector div.custom-select-body-i .c-navigation:last').css({marginBottom: '0'});

			
		};
		var responseEvalCityEnd = function(data, clickedNum) {
			data = data.cities;
			var currentLetter = '';
			var blockSize = 0;
			var oneLetterCities = [];
			var colsCount = 4;
			var container = $('#city-end-selector .custom-select-body-i');
//			var blockContainer = $('<div class="num-container {num:' + clickedNum + '}"></div>');
			/*if(clickedNum == 0)	{
				container.append(blockContainer);
			} else {
				var insertAfter = $('#city-end-selector .custom-select-body-i div').filter(function() {
					var v = $(this).metadata().num;
					return (v != undefined && v == clickedNum);
				});
				blockContainer.insertAfter(insertAfter);
				container.children('div:last').css({marginBottom: 0, paddingBottom: 0});
			}*/
			var putCitiesInBlock = function(oneLetterCities, currentLetter) {
				if (oneLetterCities.length > 0) {
					if(currentLetter != '') {
						blockContainer.append('<div class="cities-block clear-after"><div class="letter">' + currentLetter + '</div></div>');
					}
					var blocksize = Math.floor(oneLetterCities.length/colsCount);
					var blocksizeRest = oneLetterCities.length - colsCount * blocksize;
					var iter = 0;
					for (var j = 0; j < colsCount; j++) {
						var ul = $('<div class="ul"></div>');
						var blockSizeIter = blocksize;
						if(blocksizeRest > 0) {
							--blocksizeRest;
							blockSizeIter++;
						}
						for (var k = 0; k < blockSizeIter; k++) {
							var city = oneLetterCities[iter++];
							if (city == undefined) {
								break;
							}
							var selectedCity = '';
							if (city.t.toLowerCase() == $('#city-end-selector .custom-select-header span').text().toLowerCase().replace(/(^\s+)|(\s+$)/g, "")) {
								selectedCity = ' class="active"';
							}
							var created = (city.r != undefined && city.r == 1);
							ul.append('<a' + selectedCity + ' href="javascript:void(0)" class="' + (city.l != undefined ? 'has_regions' : '') + '" name="' + city.n + '" title="' + city.t + '">' + (created ? '<b>' : '') + city.t + (created ? '</b>' : '') + '</a>');
						}
						blockContainer.find('.cities-block:last').append(ul);
					}
					oneLetterCities = [];
				}
				return oneLetterCities;
			};
			if (clickedNum == 0 && dataOld.rated.length > 0) {
				var rCities = [];
				for (var h = 0; h < dataOld.rated.length; h++) {
					rCities.push(dataOld.rated[h]);
				}
				putCitiesInBlock(rCities, '<span>' + 'MOST_POPULAR_CITIES'.translate() + '</span>');
			}
			for (var i = 0; i < data.length; i++) {
				var newLetter = data[i].t.substr(0, 1).toUpperCase();
				if (currentLetter != newLetter) {
					oneLetterCities = putCitiesInBlock(oneLetterCities, currentLetter);
					currentLetter = newLetter;
				}
				oneLetterCities.push(data[i]);
			}
			oneLetterCities = putCitiesInBlock(oneLetterCities, currentLetter);
			$('#city-end-selector div.custom-select-body').scrollTo(blockContainer, 800, {offset:-80});
			$('#city-end-selector div.custom-select-body-i .c-navigation:last').css({marginBottom: '0'});
		};
		var lettersCoose = function() {
			var $this = $(this);
			$.getJSON(linksArray[$this.metadata().linkNum - 1], nextResponse);
			lettersCooseWait(true);
		};
		var lettersCooseCityEnd = function() {
			var $this = $(this);
			$.getJSON(linksArray[$this.metadata().linkNum - 1], nextResponseCityEnd);
			lettersCooseWait(true);
		};
		var lettersCooseWait = function(bool) {
			var csb = $('#city-selector div.custom-select-body-i, #city-end-selector div.custom-select-body-i');
			if (bool) {
				csb.css({opacity: '0.3'});
				csb.find('a').attr('disabled', 'disabled');
			} else {
				csb.css({opacity: '1'});
				csb.find('a').removeAttr('disabled');
			}
		};
		var nextResponse = function(data) {
			citySelHeightIE();
			lettersCooseWait(false);
			var link = $('#city-selector .custom-select-body-i .c-navigation a').filter(function(i){
				var v = $(this).metadata().first;
				return (v != undefined && v == data.first);
			});
			var clickedNum = link.metadata().linkNum;
			responseEval(data, clickedNum, link.parents('tbody.c-navigation-body'));
			link.parents('tr.c-navigation').remove();
			//var nc = $('#city-selector div.custom-select-body-i .num-container');
			selectCityBind();
		};
		var nextResponseCityEnd = function(data) {
			citySelHeightIE();
			lettersCooseWait(false);
			var link = $('#city-end-selector .custom-select-body-i .c-navigation a').filter(function(i){
				var v = $(this).metadata().first;
				return (v != undefined && v == data.first);
			});
			var clickedNum = link.metadata().linkNum;
			responseEvalCityEnd(data, clickedNum);
			link.parents('tr.c-navigation').remove();
			selectCityBind();
		};

		if (undefined !== window.citiesJSON && null !== window.citiesJSON && typeof(citiesJSON) == 'object' && window.citiesJSON.cities.length > 0) {
			firstResponse(citiesJSON);
		}
		
		// Customizise all selects in the search form
		var cSelectClick = function() {
			var $this = $(this);
			var sBody = $this.next('.simple-select');
			$('.custom-select .custom-select-header div').removeClass('sel-active');
			if (sBody.is(':hidden')) {
				$('.custom-select .custom-select-body').not(this).hide();
				bodyUnbindClick();
				//$this.find('div').css({backgroundPosition: '100% 0', borderColor: '#D6C6BB'});
				$this.find('div').addClass('sel-active');
				if (!$.browser.msie) {
					$('.custom-select .custom-select-body').slideUp('fast');
					sBody.slideDown(function() {
						bodyClickCSelectHide();
						if ($this.find('span').text().replace(/(^\s+)|(\s+$)/g, "") != $this.find('span').metadata().defText && $this.attr('id') == 'selector-country') {
							sBody.scrollTo(sBody.find('.active'), 100, {offset: -20});
						}
						//sBody.scrollTo(sBody.find('.active'), 100, {offset: -20});
					});
				} else {
					$('.custom-select .custom-select-body').hide();
					sBody.show();
					if ($this.find('span').text().replace(/(^\s+)|(\s+$)/g, "") != $this.find('span').metadata().defText && $this.attr('id') == 'selector-country') {
						sBody.scrollTo(sBody.find('.active'), 100, {offset: -20});
					}
				}
			} else {
				$this.find('div').removeClass('sel-active');
				hideThis(sBody);
			}
			var tw = $this.width();
			var sbw = sBody.width();
			if (sbw < tw) {
				sBody.width(tw);
			} else {
				sBody.width(sbw);
			}
			sBody.find('ul a').unbind('');
			if ($this.parents('.custom-select').attr('id') != 'selector-country') {
				sBody.find('ul a').mousedown(function() {
					var aClicked = $(this);
					var aClickedText = aClicked.text().replace(/(^\s+)|(\s+$)/g, '');
					var newVal = (aClicked.metadata().value != undefined) ? aClicked.metadata().value : '';
					aClicked.parents('.custom-select').find('input[type="hidden"]').val(newVal);
					aClicked.parents('.custom-select').find('.custom-select-header span').text(aClickedText);
					aClicked.parent().parent().find('li').removeClass('active');
					aClicked.parent(0).addClass('active');
					hideThis(aClicked.parents('.simple-select'));
					$this.find('div').removeClass('sel-active');
				});
			}
			
			//$this.next('.simple-select').scrollTo($this.next('.simple-select').find('ul li.active'), 100, {queue:true});
		};
		$('.custom-select').not('#city-selector').find('.custom-select-header').bind('mousedown', cSelectClick);
		
		/*if (supplier.find('input[type="hidden"]').val() == 0) {
			companySelectorDisable();
		}*/

		var showPassengerAges = function(val, clicked) {
			var aVal;
			aVal = clicked ? $(val).metadata().value : $(val).metadata().value;
			var chlist = $('#adults-list');
			var isAir = false;
			if ($(val).parents('form').attr('id') == 'frm-air') {
				isAir = true;
			}
			$('#adults-list>li').hide();
			if (aVal > 0) {
				if (isAir) {
					$('.extended-search').show();
				} else {
					chlist.show();
					$('.hotel_search_more').show();
				}
				$('.more-less-controls a.more').hide();
				$('.more-less-controls a.less').css('display', 'block');
			} else {
				chlist.hide();
				$('.hotel_search_more .extended-search').hide();
				$('.more-less-controls a.more').css('display', 'block');
				$('.more-less-controls a.less').hide();
			}
			if (clicked) {
				$('#adults-list li input[type="hidden"]').remove();
			}
			for (var i = 1; i <= aVal; i++) {
				var iChild = '#adults-list li:nth-child(' + i + ')';
				if (isAir == false) {
					$(iChild + ' label').text(ordinals[i-1] + ' ' + 'TOURIST'.translate() + ':');
				}
				$(iChild).css('display', 'block');
				if (clicked && !$('#adults-list li:nth-child(' + i + ') input[type="hidden"]').length > 0) {
					var t = $(iChild + ' .custom-select-header div span');
					var n = t.metadata().defVal;
					$(iChild + ' .custom-select').prepend('<input class="js-added" type="hidden" name="p[]" value="' + n + '" />');
					$(iChild + ' .custom-select .custom-select-body-i li').removeClass('active');
					$(iChild + ' .custom-select .custom-select-body-i li:first').addClass('active');
					t.text($(iChild + ' .custom-select .custom-select-body-i li:first a').text());
				}
			}
		};
		/*
		if ($('#tourists-number').val() > 0) {
			showPassengerAges($('#tourists-number').val(), false);
		}
		*/

		$('#adults .custom-select-body-i ul li a').bind('mousedown', function() {showPassengerAges(this, true);});

		$('#frm-hotel-search').submit(frmSubmit);

		function frmSubmit() {
			var arrName = [], arrVal = [];
			$('#frm-hotel-search input[type="text"], #frm-hotel-search input[type="hidden"]').each(function() {
				if ($(this).attr('name') != undefined && $(this).val() != undefined) {
					arrName.push($(this).attr('name'));
					arrVal.push($(this).val());
				}
			});
			$('#frm-hotel-search input[type="checkbox"]').each(function() {
				if ($(this).attr('checked') == true) {
					arrName.push($(this).attr('name'));
					arrVal.push($(this).val());
				}
			});
			var u = '';
			u += arrName[0] + '=' + arrVal[0];
			for (var i = 1; i < arrName.length; i++) {
				u += '&' + arrName[i] + '=' + arrVal[i];
			}
			var e = document.domain + '' + $(this).attr('action');
			setTimeout(function() {searchWaitRedirect(e, u);}, tm.Config.searchResultsTimeout);
		}
		function searchWaitRedirect(e, u) {
			var domain = e + '?' + u;
			window.location = 'http://' + domain;
		}


		loadGeoLocations();

		$("a.hotelmap").colorbox(
			{
				href:"#outer_map_canvas", 
				width: "900px", 
				height: "540px", 
				inline:true 
			}
		);


		/**
		 * Tours
		 */
		$(function() {
	
			var tourControls = {
				hotels				: {
					list				: $('#tourFormHotelsList'),
					listEmpty			: $('#tourFormHotelsList').find('.tourFormListEmpty'),
					listNotEmpty		: $('#tourFormHotelsList').find('.tourFormListNotEmpty'),
					listLoading			: $('#tourFormHotelsList').find('.tourFormListLoading'),
					subList				: $('#tourFormHotelsSubList'),
					hotelName			: $('#tourFormHotelName'),
					linkShow			: $('#tourFormHotelLinkShow'),
					linkHide			: $('#tourFormHotelLinkHide'),
					getList				: function(){
						return tourControls.hotels.subList.find('.tourFormListLine');
					},
					isAllChecked		: function(){
						var list = tourControls.hotels.getList();
						return list.size() == list.find('input[type="checkbox"]:checked').size();
					},
					filtrationActive	: false,
					filter				: function(){
						if(tourControls.hotels.filtrationActive)
						{
							return;
						}
						tourControls.hotels.filtrationActive = true;
						var v = tourControls.hotels.hotelName.val().replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, '').toLowerCase();
						if(v == loadedByData.hotelName)
						{
							tourControls.hotels.filtrationActive = false;
							return;
						}
						var list = tourControls.hotels.subList.find('.tourFormListLine');
						if(v.length == 0)
						{
							list.show();
							tourControls.hotels.listEmpty.hide();
							tourControls.hotels.listNotEmpty.fadeIn();
						}
						else
						{
							var hiddenCount = 0;
							var unhiddenCount = 0;
							list.each(function(){
								if($(this).find('a:last').text().toLowerCase().replace(/\s+/g, ' ').indexOf(v) >= 0)
								{
									$(this).show();
									unhiddenCount++;
								}
								else
								{
									$(this).hide();
									unmarkListItem($(this));
									hiddenCount++;
								}
							});
							if(unhiddenCount == 0)
							{
								tourControls.hotels.listNotEmpty.hide();
								tourControls.hotels.listEmpty.fadeIn();
							}
							else
							{
								tourControls.hotels.listEmpty.hide();
								tourControls.hotels.listNotEmpty.fadeIn();
							}
						}
						loadedByData.hotelName = v;
						tourControls.hotels.filtrationActive = false;
					},
					checkAll			: function(){
						tourControls.hotels.subList.find('.tourFormListLine').not(':hidden').each(function(i, v){
							markListItem($(this));
						});
					},
					uncheckAll			: function(){
						tourControls.hotels.subList.find('.tourFormListLine').not(':hidden').each(function(i, v){
							unmarkListItem($(this));
						});
					}
				},
				regions				: {
					list				: $('#tourFormRegionsList'),
					listEmpty			: $('#tourFormRegionsList').find('.tourFormListEmpty'),
					listNotEmpty		: $('#tourFormRegionsList').find('.tourFormListNotEmpty'),
					listLoading			: $('#tourFormRegionsList').find('.tourFormListLoading'),
//					all					: $('#tourFormRegionAll'),
//					allLink				: $('#tourFormRegionlAll a.link'),
					subList				: $('#tourFormRegionsSubList')
				},
				listLineTemplate	: $('#tourFormListLineTemplate'),
				dropDowns			: $('#tourForm .custom-select .custom-select-header'),
				locationTo			: $('#tourFormToLocationControl .custom-select-header div'),
				grade				: $('#tourFormGrade').parent().find('.custom-select-header div')				
			}
			
			var getCheckedRegionIds = function(){
				var cityIds = [];
				tourControls.regions.subList.find('input[type="checkbox"]:checked').each(function(i, v){
					cityIds.push($(this).val());
				});
				return cityIds;
			}
			
			var loadedByData = {
				arrivalCountry	: $('#tourFormToLocation').val(),
				arrivalRegions	: getCheckedRegionIds(),
				grade			: $('#tourFormGrade').val(),
				hotelName		: tourControls.hotels.hotelName.val()
			};
			
			
			var markListItem = function(item){
				item.find('input[type="checkbox"]').attr('checked', 'checked').removeAttr('disabled');
				item.find('img').addClass('checked');
				item.addClass('checked');
			}
			
			var unmarkListItem = function(item){
				item.find('input[type="checkbox"]').removeAttr('checked').removeAttr('disabled');
				item.find('img').removeClass('checked');
				item.removeClass('checked');
			}
			
			var lockControls = function(){
				tourControls.dropDowns.unbind('mousedown', cSelectClick);
				tourControls.locationTo.addClass('disabled');
				tourControls.grade.addClass('disabled');
				
				tourControls.regions.listNotEmpty.hide();
				tourControls.regions.listEmpty.hide();
				tourControls.regions.listLoading.show();
				
				tourControls.hotels.list.css('height', '58px');
				tourControls.hotels.listNotEmpty.hide();
				tourControls.hotels.listEmpty.hide();
				tourControls.hotels.listLoading.show();
			}
			
			var unlockControls = function(){
				tourControls.regions.listLoading.hide();
				if(tourControls.regions.subList.find('.tourFormListLine').size() > 0)
				{
					tourControls.regions.listNotEmpty.fadeIn();
				}
				else
				{
					tourControls.regions.listEmpty.fadeIn();
				}
				
				tourControls.hotels.listLoading.hide();
				if(tourControls.hotels.subList.find('.tourFormListLine').size() > 0)
				{
					tourControls.hotels.listNotEmpty.fadeIn();
				}
				else
				{
					tourControls.hotels.listEmpty.fadeIn();
				}
				
				tourControls.dropDowns.unbind('mousedown').bind('mousedown', cSelectClick);
				tourControls.locationTo.removeClass('disabled');
				tourControls.grade.removeClass('disabled');
			}
			
			/**
			 * Hotels show/hide link
			 */
			tourControls.hotels.linkShow.bind('click', function(){
				$(this).hide();
				$('#tourFormHotelsBlock').fadeIn('slow', function(){
					tourControls.hotels.linkHide.fadeIn();			
				});
			});
			
			tourControls.hotels.linkHide.bind('click', function(){
				$(this).hide();
				$('#tourFormHotelsBlock').fadeOut('fast', function(){
					tourControls.hotels.linkShow.fadeIn();			
				});
			});
			
			$('#tourFormHotelsCheckAll').bind('click', tourControls.hotels.checkAll);
			$('#tourFormHotelsUncheckAll').bind('click', tourControls.hotels.uncheckAll);
			
			/**
			 * Hotels list
			 */
			var stopHotelNameFiltering = function(){
				tourControls.hotels.hotelName.stopTime('hotelNameTimer');
				tourControls.hotels.filter();
			}
			tourControls.hotels.hotelName.bind('focus', function(){
				$(this).everyTime(300, 'hotelNameTimer', tourControls.hotels.filter);
			});
			tourControls.hotels.hotelName.bind('blur', stopHotelNameFiltering);

			/**
			 * Init hotels
			 */
			var initHotelsList = function(){
				lockControls();
				
				var list = tourControls.hotels.getList();
				var onHotelClick = function(){
					var isChb = $(this).is('input[type="checkbox"]');
					var p = $(this).parents('.tourFormListLine');
					var chbChecked = p.find('input[type="checkbox"]').attr('checked');
					if((isChb && chbChecked) || (!isChb && !chbChecked))
					{
						markListItem(p);
					}
					else
					{
						unmarkListItem(p);
					}
				}
				list.find('a.link').unbind('click').bind('click', onHotelClick);
				list.find('.tm-checkbox').unbind('click').bind('click', onHotelClick);
				
				if(!tourControls.hotels.isAllChecked())
				{
					var checkedCount = 0;
					var uncheckedCount = 0;
					list.each(function(){
						if($(this).find('input[type="checkbox"]').attr('checked'))
						{
							markListItem($(this));
							checkedCount++;
						}
						else
						{
							unmarkListItem($(this));
							uncheckedCount++;
						}
					});
					if(checkedCount > 0 && uncheckedCount > 0)
					{
						tourControls.hotels.linkShow.click();
					}
				}
				
				unlockControls();
				var c = list.size();
				if(c > 0)
				{
					if(c > 20)
					{
						c = 20;
					}
					tourControls.hotels.list.animate({ height : (Math.ceil(c / 2) * 23 + 15) + 'px'}, function(){
						tourControls.hotels.list.scrollTo(tourControls.hotels.subList.find('.tourFormListLine.checked:first'));
					});
				}
				
			}
			initHotelsList();
			
			/**
			 * Init regions
			 */
			var initRegionsList = function(){
				lockControls();
				var sl = tourControls.regions.subList.find('.tourFormListLine a.link');
				var onRegionClick = function(){
					tourControls.regions.subList.find('.tourFormListLine').each(function(){
						unmarkListItem($(this));
					});
					markListItem($(this).parents('.tourFormListLine'));
					loadTargetRegionHotelsList();
				}
				sl.unbind('click').bind('click', onRegionClick);
				tourControls.regions.subList.find('.tm-checkbox').unbind('click').bind('click', onRegionClick);
				var slp = sl.parents('.tourFormListLine');
				var slChbChecked = slp.find('input[type="checkbox"]:checked');
				if(slChbChecked.size() !=  slp.find('input[type="checkbox"]').size())
				{
					slChbChecked.parents('.tourFormListLine').each(function(){
						markListItem($(this));
					});
				}
				tourControls.regions.subList.find('.tourFormListLine').each(function(){
					if($(this).find('input[type="checkbox"]').attr('checked'))
					{
						markListItem($(this));
					}
					else
					{
						unmarkListItem($(this));
					}
				});
				unlockControls();
				tourControls.regions.list.scrollTo(tourControls.regions.subList.find('.tourFormListLine.checked:first'));				
			}
			initRegionsList();
			
			/**
			 * Load target country regions list
			 */
			var loadTargetCountryRegionsList = function(){
				lockControls();
				
				var finishRegionsListRequest = function(){
                    initRegionsList();
				}
				
				var countryCode = $('#tourFormToLocation').val();
				var diffs = false;
				if(loadedByData.arrivalCountry != countryCode)
				{
					diffs = true;
				}
				if(!diffs)
				{
					finishRegionsListRequest();
					return;
				}
				loadedByData.arrivalCountry = countryCode;

				tourControls.regions.subList.children('.tourFormListLine').remove();
				var nocache = '';
				if (location.href.match(/nocache=/i)) {
					nocache = '?nocache=1';
				}
				$.ajax({
					async: true,
					timeout: 20000,
					type: 'POST',
					url: '/a_search/tour.getTargetCountryRegions' + nocache,
					dataType: 'json',
					data: {
						countryCode: countryCode
					},
					success: function(resp) {
						$(resp).each(function(i, v){
							var chbc = tourControls.listLineTemplate.clone().removeAttr('id');
							chbc.find('a.tm-checkbox').remove();
							chbc.find('a.link').attr('href', 'javascript:void(0)').attr('title', v.name).text(v.name);
							chbc.appendTo(tourControls.regions.subList);
							tm.FormControls.replaceCheckbox($('<input>').attr('type', 'checkbox').attr('name', 'aci[]').val(v.code).prependTo(chbc.find('.checkboxBlock')));
							chbc.show();
						});
						finishRegionsListRequest();
					},
					error:function (xhr, ajaxOptions, thrownError){
//	                    alert(xhr.status);
//	                    alert(thrownError);
						finishRegionsListRequest();
	                }
				});
			};

			/**
			 * Load target region hotels list
			 */
	
			var loadTargetRegionHotelsList = function(){
				lockControls();

				var finishHotelsListRequest = function(){
					initHotelsList();
				}

				var diffs = false;
				if(loadedByData.grade != $('#tourFormGrade').val())
				{
					diffs = true;
				}
				var cityIds = [];
				tourControls.regions.subList.find('input[type="checkbox"]:checked').each(function(i, v){
					cityIds.push($(this).val());
					if(!diffs && loadedByData.arrivalRegions.indexOf($(this).val()) < 0)
					{
						diffs = true;
					}
				});
				if(!diffs)
				{
					finishHotelsListRequest();
					return;
				}
				loadedByData.arrivalRegions = cityIds;
				loadedByData.grade = $('#tourFormGrade').val();
				
				tourControls.hotels.subList.children('.tourFormListLine').remove();
				
				if(cityIds.length == 0)
				{
					finishHotelsListRequest();
					return;
				}
				
				var nocache = '';
				if (location.href.match(/nocache=/i)) {
					nocache = '?nocache=1';
				}
				$.ajax({
					async: true,
					timeout: 20000,
					type: 'POST',
					cache: false,
					url: '/a_search/tour.getTargetRegionHotels' + nocache,
					dataType: 'json',
					data: {
						cityIds: cityIds,
						grade: $('#tourFormGrade').val()
					},
					success: function(resp) {
						$(resp).each(function(i, v){
							var chbc = tourControls.listLineTemplate.clone().removeAttr('id');
							chbc.find('a.tm-checkbox').remove();
							chbc.find('a.link').attr('href', 'javascript:void(0)').attr('title', v.name).text(v.name);
							chbc.prependTo(tourControls.hotels.subList);
							tm.FormControls.replaceCheckbox($('<input>').attr('type', 'checkbox').attr('name', 'htl[]').val(v.code).prependTo(chbc.find('.checkboxBlock')));
							chbc.show();
						});
						finishHotelsListRequest();
					},
					error:function (xhr, ajaxOptions, thrownError){
//	                    alert(xhr.status);
//	                    alert(thrownError);
						finishHotelsListRequest();
	                }
				});
			};
			
			/**
			 * Target country control
			 */
			$('#tourFormToLocationControl a').bind('mousedown', function() {
				$('#tourFormToLocation').val($(this).metadata().value);
				loadTargetCountryRegionsList();
				loadTargetRegionHotelsList();
			});
			
			/**
			 * Grade control
			 */
			$('#tourFormGrade').parent().find('a').bind('click', function() {
				$('#tourFormGrade').val($(this).metadata().value);
				loadTargetCountryRegionsList();
				loadTargetRegionHotelsList();
			});
			
			/**
			 * Passengers
			 */
			$('#tourFormPassengerAgesLink').bind('click', function(){
				if($('#tourFormPassengerAgesBlock').is(':hidden'))
				{
					$(this).hide();
					$('#tourFormPassengerAgesBlock').fadeIn();
				}
				else
				{
					$('#tourFormPassengerAgesBlock').fadeOut();
					$(this).fadeIn();
				}
			});
			$('#tourFormPassengerAgesLinkHide').bind('click', function(){
				$('#tourFormPassengerAgesBlock').fadeOut();
				$('#tourFormPassengerAgesLink').fadeIn();
			});
			
			$('#tourFormPassengersCountControl a').mousedown(function() {
				var v = $(this).metadata().value;
				if(v != $('#tourFormPassengersCount').val())
				{
					$('#tourFormPassengersCount').val(v);
					var il = $('#tourFormPassengerAgesBlock').find('input[type="hidden"]');
					il.removeAttr('name').parent().parent().show().filter(':gt(' + (v - 1) + ')').hide();
					il.filter(':lt(' + v + ')').attr('name', 'pa[]');
					$('#tourFormPassengerAgesLink').fadeOut();
					$('#tourFormPassengerAgesBlock').fadeIn();
				}
			});
			
			var showAgesBlock = false;
			if($('#tourFormPassengersCount').val() != 2)
			{
				showAgesBlock = true;
			}
			if(!showAgesBlock)
			{
				$('#tourFormPassengerAgesBlock .custom-select input[type="hidden"]').each(function(){
					if($(this).val() != 19)
					{
						showAgesBlock = true;
					}
				});
			}
			if(showAgesBlock)
			{
				$('#tourFormPassengerAgesLink').click();
			}
			
			
		});
		
		/**
		 * Check-in date 
		 */
		var defaultCheckInDatesInterval = 7;
		
		var dateAddDays = function(oldDate, daysCount){
			if(daysCount != 0)
			{
				return new Date(oldDate.valueOf() + daysCount * 24*60*60*1000);
			}
			return oldDate;
		}
		
		var datePickerMakeString = function(newDate, addDays){
			var d = dateAddDays(newDate, addDays);
			d = [d.getDate(), d.getMonth() + 1, d.getFullYear()];
			for(var i=0; i<d.length; i++)
			{
				d[i] = d[i].toString()
				if(d[i].length == 1)
				{
					d[i] = '0' + d[i];
				}
			}
			return d.join('.');
		}
		
		/**
		 * Check-in date "from" control
		 */
		$('#tourFormCheckInFrom').bind('change', function() {
			var checkInFromDate = Date.fromString($(this).val());
			var minDate = dateAddDays(new Date(), 1);
			if(checkInFromDate < minDate)
			{
				checkInFromDate = minDate;
				$(this).val(datePickerMakeString(checkInFromDate, 0));
			}
			var checkInToDate = Date.fromString($('#tourFormCheckInTo').val());
			if(checkInToDate < checkInFromDate)
			{
				$('#tourFormCheckInTo').val(datePickerMakeString(checkInFromDate, defaultCheckInDatesInterval));
			}
		});
		
		/**
		 * Check-in date "to" control
		 */
		$('#tourFormCheckInTo').bind('change', function() {
			var checkInFromDate = Date.fromString($('#tourFormCheckInFrom').val());
			var checkInToDate = Date.fromString($(this).val());
			// var minDate = dateAddDays(new Date(), defaultCheckInDatesInterval);
			var minDate = dateAddDays(new Date(), 1);
			if(checkInToDate < minDate)
			{
				checkInToDate = minDate;
				$(this).val(datePickerMakeString(checkInToDate, 0));
			}
			if(checkInToDate < checkInFromDate)
			{
				checkInFromDate = dateAddDays(checkInToDate, -defaultCheckInDatesInterval);
				if(checkInFromDate < minDate)
				{
					checkInFromDate = minDate;
				}
				$('#tourFormCheckInFrom').val(datePickerMakeString(checkInFromDate, 0));
			}
		});
		
		/**
		 *	/TOURS
		 */
		
    });
})(jQuery);
/*---------------------------------- END search.js ----------------------------------*/