
// <script type="text/javascript">
var docRoot = 'http://www.mynewhotel.com/';
var curLang = 'en';
var reFuGe = 'generalterms';
/*
 * jQuery 1.2.6 - New Wave Javascript
 *
 * Copyright (c) 2008 John Resig (jquery.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
 * $Rev: 5685 $
 */
(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else
for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&&notxml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();var mRCollect = null;
var __langData = null;

var __ = function(key) {
	for (var i = 0; i < __langData.length; i++) {
		var cur = typeof ( __langData[i] ) != 'undefined' ? __langData[i] : false;
		if ( cur !== false )
		{
			for(co in cur) {
				if (co == 'key' && cur[co] == key) {
					return cur['text'];
				}
			}
		}
	}
	
	return false;
}

var updateResultCounter = function() {
	if (mRCollect) mRCollect.update();
}

var resultsCollect = function(lang, pre, suf) {
	var rcObject = {
		savedValues : new Array(3),
		gConfig : {
			'urlPrefix' : '',
			'urlSuffix' : '',
			'language' : '',
			'fieldId' : 'resultsnum',
			'containerId' : 'searchresults',
			'initalizeComplete' : false
		}, pInit : function(lang, pre, suf) {
			this.gConfig.urlPrefix = pre; this.gConfig.urlSuffix = suf;
			this.gConfig.language = lang;
			
			return this;
		}, getValue : function(v) {
			var is_key = false, p ="";
			
			if (v.substr(0,2) == '__') {
				is_key = true;
				v = v.substr(2);
			}
			
			p = $("#"+v).val();
			
			if (v == 'field_just_os') {
				p = $("#"+v).attr('checked') == true ? "openings" : "";
			} else if (v.substr(0,10) == 'field_env_') {
				p = (parseInt(p) == 1 ? v.substr(10) : "");
			} else if (v.substr(0,11) == 'field_cats_') {
				p = (parseInt(p) == 1 ? v.substr(11) : "");
			} else if (is_key && v == 'sm_field_stars_mode') {
				switch (parseInt(p)) {
					case 0: p = __('from'); break;
					case 1: p = __('to'); break;
					case 2: p = __('exactly'); break;
				}
			} else if (is_key && v == 'field_sort_order') {
			
				switch (parseInt(p)) {
					case 0: p = 'desc'; break;
					case 1: p = 'asc'; break;
				}
			}
			
			return p;
		}, appendField : function() {
			var retVal = "";
			
			switch (arguments[0]) {
				case 0:
					retVal = this.getValue(arguments[1]);
					break;
				case 1:
					retVal = this.getValue(arguments[1]) + "-" + this.getValue(arguments[2]);
					break;
				case 2:
					for(var i = 1; i < arguments.length; i++) { 
						val = this.getValue(arguments[i]);
						if (val.length != '') retVal += (retVal != '' ? "-" : "") + val;
					}
					
					break;
				case 3:
					retVal = this.getValue(arguments[1]) + "," + this.getValue(arguments[2]) + "-" + this.getValue(arguments[3]);
					break;
			}
			
			return (retVal.length > 0 ? retVal : __('standardvalue')) + (arguments[0] != 3 ? "/" : "");
		}, fBuildURI : function(u, s) {
			return this.gConfig.urlPrefix + this.gConfig.language + "/" + u + "/" + s + this.gConfig.urlSuffix;
		}, fCreateQuery : function() {
			return this.appendField(0, "sm_field_continent") +
				this.appendField(0, "sm_field_country") +
				this.appendField(0, "sm_field_region") +
				this.appendField(0, "sm_field_city") +
				this.appendField(1, "sm_field_sdate_year", "sm_field_sdate_month") +
				this.appendField(1, "sm_field_edate_year", "sm_field_edate_month") +
				this.appendField(1, "__sm_field_stars_mode", "sm_field_stars") +
				this.appendField(0, "field_just_os") +
				this.appendField(2, "field_env_fitness", "field_env_golf", "field_env_indoorpool", "field_env_pool", "field_env_aircpub", "field_env_aircpriv", "field_env_conf","field_env_hotelbar", "field_env_restaurant", "field_env_wellness", "field_env_wlan", "field_env_www", "field_env_carpark") +
				this.appendField(2, "field_cats_city", "field_cats_countryside", "field_cats_design", "field_cats_beach") +
				this.appendField(0, "field_freetext") +
				'1/' +
				this.appendField(3, "field_name", "__field_sort_order", "field_sort_by");
				
		}, update : function() {
			var p = this;
			$.getJSON( this.fBuildURI("suche", this.fCreateQuery()), function(j) {
				$("#"+p.gConfig.containerId).css({display: "block"});
				$("#"+p.gConfig.fieldId).attr('innerHTML', j.numResults);
			});
		}
	}
	
	
	return rcObject.pInit(lang, pre, suf);
}

var quickSelection = function(sb, lang, as, pre, suf, clb) {
	var qsObject = {
		savedValues : new Array(3),
		gConfig : {
			'urlPrefix' : '',
			'urlSuffix' : '',
			'isSidebar' : false,
			'allString' : '',
			'language' : '',
			'clbFnc' : null,
			'initalizeComplete' : false
		}, pInit : function(sb, lang, as, pre, suf, clb) {
			this.gConfig.isSidebar = sb; this.gConfig.urlPrefix = pre; this.gConfig.urlSuffix = suf;
			this.gConfig.language = lang; this.gConfig.allString = as; this.gConfig.clbFnc = clb;
			for (var i = 0; i<= 3; i++) {
				this.addHandler(this.getCombo(i), (i < 3 ? this.getCombo(i + 1) : false));
				this.savedValues[i] = this.getSelection(i);
			}
			for (var i = 0; i<= 3; i++) this.getCombo(i).change();
			return this;
		}, isInRange : function(arr, i) {
			return (i>=0 && i<=arr.length)
		}, getCombo : function (i) {
			var arr = Array('continent', 'country', 'region', 'city');
			if (this.isInRange(arr, i))
				return $('select#'+(this.gConfig.isSidebar ? 'sm_' : '')+'field_'+arr[i])
			else
				return false;
		}, getIndexByCombo : function(combo) {
			var arr = Array('continent', 'country', 'region', 'city');
			for (var i = 0; i<= 3; i++) {
				if (combo.attr("id").substr(this.gConfig.isSidebar ? 9 : 6) == arr[i]) return i;
			}
			
			return false;
		}, getSelection : function (i) {
			return this.getCombo(i).val();
		}, setSelection : function (i, val) {
			this.getCombo(i).val(val);
		}, fBuildURI : function(u) {
			return this.gConfig.urlPrefix + this.gConfig.language + "/" + u + this.gConfig.urlSuffix;
		}, fCreateQuery : function(l, id, val) {
			var r = ""
			for (var i = 0; i<= 3; i++)
				r += (this.getValue(i) == '0' || i > l ? this.gConfig.allString : this.getValue(i)) + "/";
			
			return r+id;
		}, getKey : function(i) {
			return this.getCombo(i).attr("id").substr(this.gConfig.isSidebar ? 9 : 6);
		}, getValue : function(i) {
			return this.getCombo(i).val();
		}, extractNumber : function(s) {
			var nums = "0123456789", r="";
			for (var i = 0; i < s.length; i++) {
				if(nums.indexOf(s.charAt(i))==-1)
					break;
				else
					r+=s.charAt(i);
			}
			
			return r;
		}, addHandler : function(s, d) {
			if (d != false && s != false) {
				var p = this;
				s.change(function() {		


					for (var x = p.getIndexByCombo(s)+1; x<= 3; x++) {
						p.getCombo(x).val("0")
					}
					
								
					$.getJSON(p.fBuildURI('newsearch/' + p.fCreateQuery(p.getIndexByCombo(s), this.id.substr(p.gConfig.isSidebar ? 9 : 6), p.extractNumber(s.val()))), function(j) {
						try {
							for (var i = 0; i <= j.listItems.length; i++) {
								var options = '', sListSuffix = '';
								
								try {
									for (var n = 0; n < j.listItems[i].data.length; n++) {
										sListSuffix = p.savedValues[j.listItems[i].listIndex] == j.listItems [i].data[n].key ? ' selected="selected"' : '';
										options += '<option value="' + j.listItems[i].data[n].key + '"' + sListSuffix + '>' + j.listItems[i].data[n].value + '</option>';
									}
								} catch(e) { options = ""; }
								
								p.getCombo(j.listItems[i].listIndex).html(options);
							}
						} catch(e) {}
						
						
					});
					
					if (p.gConfig.initalizeComplete && p.getIndexByCombo(s) < 4)
						p.getCombo(p.getIndexByCombo(s)+1).change();
					else if (!p.gConfig.initalizeComplete)
						p.gConfig.initalizeComplete = true;
					
					
					if (p.gConfig.clbFnc) p.gConfig.clbFnc();
				});
			}
		}
	}
	
	return qsObject.pInit(sb, lang, as, pre, suf, clb);
}

$(document).ready(function() {
	mRCollect = resultsCollect(curLang, "/simplify/ajax/", ".html");
	var qs_sidebar = new quickSelection(true, curLang, "0-alles", "/simplify/ajax/", ".html", function() {
		updateResultCounter();
	});
	
});var __langData = [{"key":"moreInfo","text":"More Information"},{"key":"companyname","text":"Company Name"},{"key":"no_selection","text":"No Selection"},{"key":"mynewhotelclaim","text":"First Minute Travel - First come, first serve, first save!"},{"key":"change_owner","text":"Change Owner"},{"key":"general","text":"General"},{"key":"hint","text":"Hint"},{"key":"hm_hotellist","text":"Hotel List"},{"key":"hm_choose_hotellist","text":"Please choose from the hotellist:"},{"key":"openingstartdate","text":"Opening Period from"},{"key":"openingenddate","text":"Opening Period to"},{"key":"findhotels","text":"Find Hotels"},{"key":"advanced_search","text":"Advanced Search"},{"key":"to","text":"to"},{"key":"from","text":"from"},{"key":"freetextsearch","text":"Free Text Search"},{"key":"miscellaneous","text":"Miscellaneous"},{"key":"hotel_n_price","text":"Price & amenity"},{"key":"any","text":"optional"},{"key":"newsletter_unsubscribe","text":"unsubscribe"},{"key":"newsletter_subscribe","text":"register  "},{"key":"hotelhistorytext","text":"Your last clicked hotels"},{"key":"register_newsletter","text":"Register to Newsletter"},{"key":"pages","text":"Pages"},{"key":"configuration","text":"Settings"},{"key":"registered_user","text":"%s user registered!"},{"key":"loggedin_true","text":"Welcome  "},{"key":"user_welcome_text","text":"You are logged in as %s. This are your features!"},{"key":"resetpwd_save","text":"Save new password"},{"key":"new_pwd_repeat","text":"Repeat New password"},{"key":"new_pwd","text":"New Password"},{"key":"resetpwd","text":"Reset Password"},{"key":"insert_userdata","text":"Please enter your username and e-mail address."},{"key":"invalid_username","text":"Please enter a valid username!"},{"key":"changepassword_error_email","text":"Please enter your account emailaddress!"},{"key":"book_now","text":"Book Now"},{"key":"changepasword_error_missingdata","text":"Both fields are required!"},{"key":"changepassword_error_wrongdata","text":"You have entered wrong data. Please enter your username with your account email address."},{"key":"back_listview","text":"Back to List"},{"key":"changepassword_mail_sent","text":"You will receive an email with your personal change link to set your new account password."},{"key":"changepassword_mail","text":"Please use the following link to set your new account password: %s"},{"key":"required_company","text":"Please enter company name"},{"key":"hotel_loc","text":"Hotel & Location"},{"key":"legend_finish","text":"Completion"},{"key":"legend_account","text":"Customer Account"},{"key":"legend_address","text":"Address  "},{"key":"legend_person","text":"Person"},{"key":"signin_newsletter","text":"Register to Newsletter"},{"key":"read_and_confirm","text":"read and confirm"},{"key":"way_found_us","text":"How did you find us?"},{"key":"repeat_password","text":"Repeat Password"},{"key":"phone","text":"Telephone"},{"key":"lastname","text":"Last Name"},{"key":"next_step","text":"continue"},{"key":"select_account_type","text":"Please select an account type."},{"key":"edit","text":"Edit"},{"key":"information","text":"Information"},{"key":"unpublished","text":"Not published"},{"key":"queue","text":"wait list"},{"key":"action","text":"Action"},{"key":"more","text":"more"},{"key":"results_header","text":"%s Hotel(s) on %s pages"},{"key":"welcome_to_mnh","text":"Welcome to MyNewHotel"},{"key":"no_version_available","text":"has no published version!"},{"key":"really_publish","text":"Really publish?"},{"key":"really_unpublish","text":"Really unpublish?"},{"key":"really_del","text":"Do you really want to delete?"},{"key":"no","text":"no"},{"key":"yes","text":"yes"},{"key":"publish","text":"publish"},{"key":"unpublish","text":"unpublish"},{"key":"selection","text":"Selection"},{"key":"packages","text":"Packages"},{"key":"upload","text":"Upload  "},{"key":"save_sort-logo","text":"Save logo definition and order"},{"key":"month12","text":"December"},{"key":"month11","text":"November"},{"key":"month10","text":"October"},{"key":"month9","text":"September"},{"key":"month8","text":"August"},{"key":"month7","text":"July"},{"key":"month6","text":"June"},{"key":"month5","text":"May"},{"key":"month4","text":"April"},{"key":"month3","text":"March"},{"key":"month2","text":"February"},{"key":"month1","text":"January"},{"key":"hm-tab_photos","text":"Photos"},{"key":"hm-tab_os","text":"Opening special"},{"key":"hm-tab_description","text":"Description"},{"key":"hm-tab_features","text":"Features"},{"key":"hm-tab_general","text":"General  "},{"key":"hm-tab_hotellist","text":"Hotel list"},{"key":"new_login","text":"Please log in again"},{"key":"alertmsg_nohotels","text":"No hotels  "},{"key":"alertmsg_notext","text":"No text entered!"},{"key":"alertmsg_enter-openingdate","text":"Please enter an opening date!"},{"key":"alertmsg_valid-openingdate","text":"Please enter a valid opening date!"},{"key":"alertmsg_nocity","text":"Street may not be left empty!"},{"key":"alertmsg_nocountry","text":"Country may not be left empty!"},{"key":"alertmsg_nostreet","text":"Street may not be left empty!"},{"key":"saved","text":"Saved"},{"key":"alertmsg_setdate-os","text":"If you would like to set up an opening special, you must cite a starting and end date!"},{"key":"alertmsg_picorder-save","text":"The order was saved. Continue "},{"key":"alertmsg_pic-nodata","text":"Your image contains no data."},{"key":"alertmsg_wrongpic","text":"Incorrect file type. Permitted types are: GIF, JPG and PNG files."},{"key":"alertmsg_no-save","text":"Your image could not be saved!"},{"key":"alertmsg_picup-succes","text":"Your image was uploaded successfully!"},{"key":"alertmsg_pic-to-big","text":"Your image is too large!"},{"key":"alertmsg_del-pic","text":"Successfully deleted. Continue "},{"key":"alertmsg_set-os","text":"If you would like to set up an opening special, you must provide a booking link!"},{"key":"alertmsg_star-end-date","text":"The starting date may not come after the end date"},{"key":"alertmsg_stars","text":"You must enter a number of stars!"},{"key":"alertmsg_entername","text":"Name may not be left empty."},{"key":"search_button","text":"Search"},{"key":"button_edit","text":"Edit"},{"key":"lostusername_button","text":"Send me my user name"},{"key":"lostusername_email","text":"Your email address"},{"key":"lostusername_title","text":"Your user name"},{"key":"lostusername_text","text":"Hello %s, At your request, we are sending you your user name: %s."},{"key":"lostusername_notice2","text":"Your user name has been sent to you!"},{"key":"lostusername_notice1","text":"Your entry is not recognized. Please register in our system and take advantage of all the benefits of MyNewHotel.com!"},{"key":"chars_left","text":"Characters left!"},{"key":"underline","text":"UNDERLINED"},{"key":"bold","text":"BOLD"},{"key":"italic","text":"ITALICS"},{"key":"lang_missing","text":"Language missing"},{"key":"descriptiontext","text":"Description Text"},{"key":"temp_filling","text":"Temporarily filling in the field with special characters such as dots, question marks, or similar is not permitted!"},{"key":"add_pic","text":"Add images"},{"key":"no_pic","text":"No Images"},{"key":"os_required_fields_if","text":"Required fields if special opening price was cited"},{"key":"os_available_upto","text":"until"},{"key":"os_booking_link","text":"Booking link"},{"key":"os_available","text":"Valid from"},{"key":"os_osprice","text":"Special opening price"},{"key":"os_statement","text":"Statement"},{"key":"contact","text":"Contact"},{"key":"os_defaultprice","text":"Regular Price"},{"key":"nowebsite","text":"No website"},{"key":"nowebsite","text":"No website"},{"key":"available_wlan","text":"WLAN"},{"key":"addresstrans","text":"Address"},{"key":"website","text":"Website"},{"key":"available_wellness","text":"Spa\/wellness"},{"key":"available_pool","text":"Pool"},{"key":"available_restaurant","text":"Restaurant"},{"key":"available_conferencerooms","text":"Conference rooms"},{"key":"available_airconditionrooms","text":"Air conditioning (private)"},{"key":"available_airconditionpublic","text":"Air conditioning (public)"},{"key":"available_internet","text":"Internet  "},{"key":"available_hotelcarpark","text":"Hotel car park"},{"key":"available_indoorpool","text":"Indoor pool"},{"key":"available_hotelbar","text":"Hotel bar"},{"key":"hm_more_100","text":"More than 100"},{"key":"hm_51_100","text":"51 to 100"},{"key":"available_golf","text":"Golf"},{"key":"available_fitness","text":"Gym"},{"key":"hm_21_50","text":"21 to 50"},{"key":"nodescription","text":"No description"},{"key":"hm_0_20","text":"0 to 20"},{"key":"country_side","text":"Countryside"},{"key":"pricesfrom","text":"From"},{"key":"pricecalculatorhint","text":"Price conversion is not guaranteed!"},{"key":"priceshint","text":"All prices are per double room, night and occupancy for 2 persons, incl. taxes and fees, if available."},{"key":"hm_atr_wlan","text":"WLAN"},{"key":"pricespecial","text":"Opening special"},{"key":"pricenormal","text":"Regular Price"},{"key":"categories","text":"Categories"},{"key":"hm_atr_restaurant","text":"Restaurant"},{"key":"environment","text":"Amenities"},{"key":"hm_atr_hotelbar","text":"Hotel Bar"},{"key":"description","text":"Description"},{"key":"hm_atr_pool","text":"Pool"},{"key":"hm_atr_inpool","text":"Indoor Pool"},{"key":"hm_atr_ccu-pub","text":"Air Conditioning (Public)"},{"key":"hm_atr_ccu-prv","text":"Air Conditioning (Private)"},{"key":"hm_atr_carpark","text":"Hotel Car Park"},{"key":"hm_atr_internet","text":"Internet Access"},{"key":"hm_atr_fitness","text":"Gym"},{"key":"hm_atr_golf","text":"Golf"},{"key":"hm_atr_spa","text":"Spa \/ Wellness"},{"key":"hm_atr_meeting","text":"Conference \/ Congress Rooms"},{"key":"welcome_hotelnamecreate","text":"Create Hotel"},{"key":"welcome_hotelcreatename","text":"First, we need the name of the hotel:"},{"key":"welcome_hotelnextstep","text":"In the next step, you can choose the necessary data for your hotel. Thank you for your interest in MyNewHotel.com. We hope you enjoy using MyNewHotel.com."},{"key":"hotelname_empty","text":"Name may not be left empty."},{"key":"no_hotel_choosen","text":"No hotel selected."},{"key":"show_all","text":"(Show all)"},{"key":"opening","text":"Opening  "},{"key":"search_noresults","text":"We could find no matches for your search. Please change the search parameters."},{"key":"reopening","text":"Reopening after renovation"},{"key":"required_fields","text":"Required fields"},{"key":"welcome_hotelregister","text":"Welcome to the registration area for a new hotel. The assistant will guide you step by step to your new hotel entry."},{"key":"firstname","text":"First Name"},{"key":"alt_email","text":"Alternative e-mail"},{"key":"repeat_email","text":"Repeat e-mail"},{"key":"infotext_address","text":"Information on the Address"},{"key":"please_select","text":"Please select"},{"key":"repead_password","text":"Repeat Password"},{"key":"result_number","text":"Your search resulted in %s matches (complete list):"},{"key":"additional_addressline","text":"Additional address  line"},{"key":"editorial_single","text":"Editorial"},{"key":"country_single","text":"Country"},{"key":"type_of_employment","text":"Type of employment"},{"key":"editorial","text":"Editorial\/Type of medium"},{"key":"address","text":"Street"},{"key":"zipcode","text":"Postcode"},{"key":"choose_hotel","text":"Please choose one hotel from all %s hotels:"},{"key":"cte_hotel","text":"Click here to edit existing hotels"},{"key":"edit_hotel","text":"Edit hotels"},{"key":"editorialstaff","text":"Editorial staff"},{"key":"freelancer","text":"Freelance journalist"},{"key":"salutation_female","text":"Ms."},{"key":"ctc_hotel","text":"Click here to easily create a new hotel."},{"key":"salutation_male","text":"Mr."},{"key":"mobile","text":"Mobile"},{"key":"create_hotel","text":"Create new hotel"},{"key":"salutation","text":"Title"},{"key":"beachside","text":"Beach location"},{"key":"sm_country","text":"Country "},{"key":"name","text":"Name"},{"key":"changeUserCreateSendMailBtn","text":"Send email"},{"key":"emailtextChangeUserCreate","text":"Dear Sir or Madam,"},{"key":"changeUserCreateWindowTitle","text":"Change user - create new"},{"key":"confirmChangeUserCreateTitle","text":"Change user - create new"},{"key":"confirmChangeUserCreate","text":"Would you like to create a new user for your selection?"},{"key":"regText_requiredFields","text":"Fields in bold and marked with an star (*) are required fields."},{"key":"systexts","text":"System texts"},{"key":"street","text":"Street"},{"key":"publishedhotels","text":"Published hotels"},{"key":"marketing","text":"Marketing"},{"key":"lost_username","text":"Forgot user name"},{"key":"regmail_content_hotelier","text":"You have been successfully registered on MYNEWHOTEL.com. Please use the following link to activate your account: %s"},{"key":"regmail_content","text":"You have been successfully registered on MYNEWHOTEL.com. Please use the following link to activate your account: %s"},{"key":"regmail_subject_hotelier","text":"Your registration with MYNEWHOTEL.com"},{"key":"regmail_subject","text":"Your registration with MYNEWHOTEL.com"},{"key":"reload","text":"Refresh"},{"key":"editsystexts","text":"Edit system texts"},{"key":"currency_warning","text":"Please note that MyNewHotel updates all the exchange rates for the respective currencies at regular intervals. None of the exchange rate information is guaranteed."},{"key":"searchreset","text":"New search"},{"key":"currency_completelist","text":"Complete list"},{"key":"currency_favorites","text":"Rapid selection"},{"key":"regText_hotelier","text":"Hoteliers: Welcome to the registration area. The following steps will register you successfully: This is where you set up your MyNewHotel customer account. You do not enter a hotel here; several hotels can be managed under a single account.\nAs soon as your MyNewHotel customer account has been created, you can immediately begin entering your hotel(s). This operation is free of charge. "},{"key":"regText_press","text":"Press: Welcome to the press registration area. For our internal quality assurance process, we require identification of your press status. Please print the PDF form, fill it out and fax it to us. Additionally, please provide us with the necessary master data in steps 1 to 4. Thank you for your interest in MyNewHotel.com."},{"key":"regBenefits_Press","text":"Use MYNEWHOTEL as the primary source of information for hotel openings. The future of tourism is already being previewed online. Give your readers access to breaking news. Contact the hotels and get invited to press events at the venue."},{"key":"regBenefits_Hotelier","text":"Simply register your hotel free of charge online at www.mynewhotel.com. Use MYNEWHOTEL as an advertising platform for your opening, and generate reservations for your initial months of business, before and after the opening."},{"key":"regBenefits_Traveller_na","text":"You can register as a traveller on www.mynewhotel.com soon. We apologize for any inconvenience."},{"key":"prices","text":"Price List"},{"key":"regSuccessText","text":"You have been registered successfully!"},{"key":"regSuccessTitle","text":"Registration complete!"},{"key":"label_press","text":"Press"},{"key":"password_toshort","text":"The password must contain between 7 and 20 characters."},{"key":"selectgender","text":"Please select..."},{"key":"registrationstep4","text":"Step 4"},{"key":"registrationstep3","text":"Step 3"},{"key":"registrationstep2","text":"Step 2"},{"key":"registrationstep1","text":"Step 1"},{"key":"passwordValidationTitle","text":"Checking password"},{"key":"repeatpasswordfailed","text":"The password entered does not match the repeated password."},{"key":"username_notvalid","text":"No upper case letters are permitted in the user name!"},{"key":"username_toshort","text":"Your user name must contain at least 7 characters and may not exceed 20 characters!"},{"key":"username_nospace","text":"No spaces are permitted in the user name!"},{"key":"usernameValidationTitle","text":"Incorrect user name"},{"key":"label_media","text":"Press"},{"key":"label_hotelier","text":"Hotelier"},{"key":"registration","text":"Registration"},{"key":"label_traveller","text":"Traveller"},{"key":"press","text":"Press"},{"key":"traveller","text":"Traveller"},{"key":"hotelier","text":"Hotelier"},{"key":"cancel","text":"Cancel"},{"key":"next","text":"Next"},{"key":"back","text":"Back"},{"key":"savingHotelErrorUndefinedText","text":"Please check your entries!"},{"key":"savingHotelSuccessTitle","text":"Hotel saved!"},{"key":"savingHotelSuccessText","text":"Your changes have been saved successfully!"},{"key":"savingHotelErrorClientTitle","text":"An error has occurred."},{"key":"savingHotelErrorClientText","text":"Changes could not be saved! Please check your entry."},{"key":"savingHotelErrorUndefinedTitle","text":"Unsuccessful save!"},{"key":"fileUploadDescField","text":"Select file"},{"key":"imgUploadErrorFileToBig","text":"Error: the file is too large! Maximum permissible size is 1 MB (megabyte)"},{"key":"imgUploadErrorInvalidHotel","text":"Error: This hotel is not in the system!"},{"key":"imgUploadErrorSavingError","text":"Error: The image could not be saved in the system. Please try again!"},{"key":"successDeletingImagesText","text":"Your selection has been successfully removed from the system."},{"key":"successDeletingImagesTitle","text":"Selected images deleted!"},{"key":"confirmDeletingImagesText","text":"Are you sure you want to delete the selected images? This cannot be undone."},{"key":"confirmDeletingImagesTitle","text":"Are you sure you want to delete the selected images?"},{"key":"reloadView","text":"Refresh"},{"key":"imgUploadWinTitle","text":"Upload image"},{"key":"addImage","text":"Upload image"},{"key":"hotelEditFormBillingFirstName","text":"First Name"},{"key":"hotelViews","text":"Views"},{"key":"waitMsgSave","text":"Saving..."},{"key":"deleteImage","text":"Delete selection"},{"key":"lastchange","text":"Last change"},{"key":"Save","text":"Save"},{"key":"Rooms","text":"Rooms"},{"key":"DesignHotel","text":"Designer hotel"},{"key":"Beach","text":"Beach location"},{"key":"eMail","text":"e-mail"},{"key":"Fax","text":"Fax"},{"key":"PhoneNumber","text":"Telephone"},{"key":"Homepage","text":"Website"},{"key":"Addressline","text":"Address Line"},{"key":"Published","text":"Published  "},{"key":"ContactPerson","text":"Contact Person"},{"key":"created","text":"Created"},{"key":"hotelEditFormBtnPreview","text":"Preview"},{"key":"hotelEditFormName","text":"Hotel Name"},{"key":"confirmEdit","text":"Are you sure you want to open the editing window for your selection?"},{"key":"confirmEditTitle","text":"Are you sure you wish to edit?"},{"key":"changeUserNew","text":"Create new"},{"key":"changeUserMail","text":"using mail generator"},{"key":"changeUserWindow","text":"using account list"},{"key":"changeUserMenu","text":"Change user"},{"key":"hotelEditFormHomepage","text":"Website"},{"key":"hotelEditFormHomepage","text":"Website"},{"key":"hotelEditFormeMail","text":"e-mail"},{"key":"hotelEditFormFax","text":"Fax"},{"key":"hotelEditFormPhone","text":"Telephone"},{"key":"hotelEditFormAddress","text":"Address"},{"key":"hotelEditFormContactPerson","text":"Contact Person"},{"key":"hotelEditFormBtnSubmit","text":"Submit"},{"key":"hotelEditFormBtnClose","text":"Close"},{"key":"editHotelTabComments","text":"Comments"},{"key":"editHotelTabImages","text":"Images"},{"key":"hotelEditFormPublished","text":"Published on"},{"key":"hotelEditFormCreated","text":"Created on"},{"key":"editHotelTabApproval","text":"Approval"},{"key":"confirmCloseEditWinTitle","text":"Save changes?"},{"key":"confirmCloseEditWin","text":"Do you wish to save first?"},{"key":"editHotelTabGeneral","text":"General information"},{"key":"editHotelTabContact","text":"Contact data"},{"key":"editWindowTitle","text":"Edit Hotel"},{"key":"searchFieldTP","text":"Search for hotel (enter partial or full hotel name)"},{"key":"confirmPreview","text":"Are you sure you want to open a preview of your selection?"},{"key":"confirmPublishment","text":"Are you sure you want to publish your selection?"},{"key":"confirmUnPublishment","text":"Are you sure you want to unpublish your selection?"},{"key":"confirmDeleteTitle","text":"Confirm deletion"},{"key":"confirmDelete","text":"Are you sure you wish to delete your selection?"},{"key":"emptySelection","text":"Please select at least one hotel!"},{"key":"emptySelection_title","text":"Error! Empty selection!"},{"key":"action_preview","text":"Preview"},{"key":"action_edit","text":"Edit"},{"key":"action_changeuser","text":"Change user"},{"key":"action_delete","text":"Delete"},{"key":"action_unpublish","text":"Unpublish"},{"key":"assortment","text":"Selection"},{"key":"action_publish","text":"Publish"},{"key":"loading_text","text":"Loading text"},{"key":"waitlist","text":"Waiting list"},{"key":"allhotels","text":"All hotels"},{"key":"hotelmanager","text":"Hotel Manager"},{"key":"caremode","text":"Care mode"},{"key":"state","text":"State"},{"key":"noentry","text":"No entry"},{"key":"htttp_error_500_descr","text":"Internal server error."},{"key":"htttp_error_404_descr","text":"Not found."},{"key":"htttp_error_403_descr","text":"Access denied."},{"key":"htttp_error_401_descr","text":"Unauthorized access."},{"key":"htttp_error_400_descr","text":"Syntax error"},{"key":"copyright_notice","text":"Copyright "},{"key":"admin","text":"Admin"},{"key":"agb","text":"Terms of Use"},{"key":"newsletter","text":"Newsletter"},{"key":"register","text":"Register"},{"key":"hotel_manager","text":"Hotel Manager"},{"key":"history","text":"History"},{"key":"myfavs","text":"Favorites"},{"key":"personaldata","text":"Personal data"},{"key":"meta_title","text":"MYNEWHOTEL.COM - The New Hotel Guide!"},{"key":"meta_keywords","text":"new hotel, new hotels, opening special\nhotel, new hotel openings, grand openings, grand opening, opening, open, hotel directory, first minute travel, first minute, journeys, hotels, discount, hotel, last minute travel, last minute flights, last minute flight, last minute hotels, last minute hotel"},{"key":"empty_username","text":"Please enter your user name."},{"key":"empty_password","text":"Please enter your password."},{"key":"wrong_login","text":"User name or password are incorrect"},{"key":"remember","text":"Keep me logged in today."},{"key":"use_geo_city","text":"apply."},{"key":"forgot_password","text":"Forgot your password?"},{"key":"password","text":"Password"},{"key":"login","text":"Login"},{"key":"management","text":"Management"},{"key":"add","text":"Add"},{"key":"privacy","text":"Privacy"},{"key":"option_no","text":"No"},{"key":"option_yes","text":"Yes"},{"key":"resoltion","text":"Resolution"},{"key":"color_depth","text":"Color depth"},{"key":"has_java","text":"Java available"},{"key":"browser","text":"Browser"},{"key":"system","text":"System"},{"key":"remoteaddr","text":"IP Address"},{"key":"username","text":"Username"},{"key":"date","text":"Date "},{"key":"language","text":"Language"},{"key":"tracking","text":"Tracking"},{"key":"advertise","text":"Marketing"},{"key":"chartable","text":"Character table"},{"key":"keyname","text":"Element"},{"key":"phpmyadmin","text":"Database administration"},{"key":"logout","text":"Logout"},{"key":"crm","text":"Customer management"},{"key":"disclaimer","text":"Disclaimer"},{"key":"imprint","text":"Imprint"},{"key":"close","text":"Close"},{"key":"map","text":"Map"},{"key":"gallery","text":"Gallery"},{"key":"info","text":"Information"},{"key":"details","text":"Details"},{"key":"details","text":"Details"},{"key":"dateformat","text":"m-d-Y"},{"key":"search_title","text":"Search results"},{"key":"no_results","text":"No hotels found"},{"key":"display_results","text":"Display hotels %s of %s"},{"key":"sort_desc","text":"Sort descending"},{"key":"sort_asc","text":"Sort ascending"},{"key":"currency","text":"Currency"},{"key":"price","text":"Price"},{"key":"stars","text":"Stars"},{"key":"city","text":"City"},{"key":"country","text":"Country"},{"key":"continent","text":"Continent"},{"key":"openingdate","text":"Opening Date"},{"key":"hotelname","text":"Hotel Name"},{"key":"filter","text":"Filter"},{"key":"sortby","text":"Sort by"},{"key":"currency_eur","text":"EUR"},{"key":"currency_gbp","text":"GBP"},{"key":"currency_usd","text":"USD"},{"key":"currency_eur_char","text":"&euro"},{"key":"currency_gbp_char","text":"\u00a3"},{"key":"currency_usd_char","text":"$"},{"key":"uri","text":"URL"},{"key":"correct_login","text":""},{"key":"htttp_error_400_title","text":"Bad Request"},{"key":"htttp_error_401_title","text":"Unauthorized"},{"key":"htttp_error_402_title","text":"Payment required"},{"key":"htttp_error_403_title","text":"Forbidden"},{"key":"htttp_error_404_title","text":"Not Found"},{"key":"htttp_error_500_title","text":"Internal Server Error"},{"key":"numIndex","text":"#"},{"key":"indexID","text":"ID"},{"key":"confirmUnPublishmentTitle","text":"confirm deletion"},{"key":"confirmPublishmentTitle","text":"confirm deletion"},{"key":"confirmPreviewTitle","text":"confirm deletion"},{"key":"hotelEditFormComment","text":"Comment"},{"key":"IsOnCountrySide","text":"landside"},{"key":"IsCityHotel","text":"City hotel"},{"key":"HasConferenceRoom","text":"conference room"},{"key":"HasWellnessArea","text":"spa\/wellness"},{"key":"HasGolfArea","text":"golf course"},{"key":"FitnesscenterAvail","text":"gym"},{"key":"InternetAvail","text":"internet"},{"key":"HasCarpark","text":"car park"},{"key":"HasCCUPublic","text":"air conditioning (public)"},{"key":"HasCCUPrivate","text":"air conditioning (private)"},{"key":"HasRestaurant","text":"restaurant"},{"key":"WLANAvail","text":"WLAN"},{"key":"HasIndoorPool","text":"indoor pool"},{"key":"HotelBarAvail","text":"hotel bar"},{"key":"PoolAvail","text":"pool"},{"key":"thStars","text":"stars"},{"key":"thPrice","text":"Price"},{"key":"thContactPerson","text":"Contact Person"},{"key":"editHotelTabBilling","text":"billing data"},{"key":"hotelEditFormBillingName","text":"name"},{"key":"hotelEditFormBillingStreet","text":"street"},{"key":"hotelEditFormBillingZip","text":"postcode"},{"key":"hotelEditFormBillingCity","text":"city  "},{"key":"hotelEditFormBillingCountry","text":"country"},{"key":"hotelEditFormBillingCompany","text":"Company"},{"key":"hotelEditFormCity","text":"city"},{"key":"hotelEditFormContinent","text":"continent"},{"key":"hotelEditFormCountry","text":"country"},{"key":"hotelEditFormState","text":"state"},{"key":"editHotelTabFeatures","text":"criteria"},{"key":"hotelEditFormCountrySide","text":"landside"},{"key":"hotelEditFormCityHotel","text":"City hotel"},{"key":"hotelEditFormBeach","text":"beach"},{"key":"hotelEditFormDesignHotel","text":"Designer hotel"},{"key":"hotelEditFormHasConferenceRoom","text":"conference room available"},{"key":"hotelEditFormHasWellnessArea","text":"spa\/wellness available"},{"key":"hotelEditFormHasGolfArea","text":"golf course available"},{"key":"hotelEditFormFitnesscenterAvail","text":"gym available"},{"key":"hotelEditFormInternetAvail","text":"internet available"},{"key":"hotelEditFormHasCarpark","text":"car park available"},{"key":"hotelEditFormHasCCUPublic","text":"air conditioning (public)"},{"key":"hotelEditFormHasCCUPrivate","text":"air conditioning (private)"},{"key":"hotelEditFormHasRestaurant","text":"restaurant available"},{"key":"hotelEditFormWLANAvail","text":"WLAN available"},{"key":"hotelEditFormHasIndoorPool","text":"indoor pool available"},{"key":"hotelEditFormHotelBarAvail","text":"hotel bar available"},{"key":"hotelEditFormPoolAvail","text":"pool available"},{"key":"hotelEditFormBillingAddressline","text":"Address supplement"},{"key":"label__press","text":"press"},{"key":"star","text":"star"},{"key":"exactly","text":"exact"},{"key":"standardvalue","text":"all"},{"key":"your_search","text":"Your Search"},{"key":"no_results_long","text":"No hotels found. Please check your entry."},{"key":"javascript_hint","text":"javascriot has not been activated by your system. MyNewHotel.com offers all features!<br \/><br \/><a href=%sde\/javascript.html\">\u00bb more information<\/a>\""},{"key":"bookmark_text","text":"bookmark MyNewHotel.com at"},{"key":"env_fitness","text":"gym"},{"key":"openingdate_infotext","text":"If you only fill out the starting date, you will only get to see the hotels that have their opening date in exactly that month"},{"key":"openingspecial","text":"Opening Terms"},{"key":"just_openingspecials","text":"Show only hotels with opening specials"},{"key":"env_indoorpool","text":"indoor pool"},{"key":"env_aircpub","text":"air conditioning (public)"},{"key":"env_conf","text":"conference rooms"},{"key":"env_restaurant","text":"restaurant"},{"key":"env_wlan","text":"WLAN"},{"key":"env_carpark","text":"hotel car parking"},{"key":"env_golf","text":"golf"},{"key":"env_pool","text":"pool"},{"key":"env_aircpriv","text":"air conditioning (private)"},{"key":"env_hotelbar","text":"hotel bar"},{"key":"env_spawellness","text":"spa\/wellness"},{"key":"env_internet","text":"internet"},{"key":"cat_cityhotel","text":"City Hotel"},{"key":"cat_countryside","text":"Countryside"},{"key":"cat_designhotel","text":"Designer Hotel"},{"key":"cat_beach","text":"Beach Location"},{"key":"orderby_label","text":"sort by"},{"key":"orderby_price","text":"Price"},{"key":"orderby_name","text":"Hotel Name"},{"key":"orderby_openingdate","text":"Opening Date"},{"key":"orderdir_asc","text":"Ascending"},{"key":"orderdir_desc","text":"Descending"},{"key":"reset","text":"Reset"},{"key":"search","text":"Search"},{"key":"resultsnum","text":"expected..more information..matches"},{"key":"standardvalue_from","text":"From"},{"key":"standardvalue_upto","text":"to"},{"key":"standardvalue_equals","text":"exact"},{"key":"no_description","text":"Unfortunately there is no description for that at the moment."},{"key":"contact_headline","text":"Contact  "},{"key":"order_down","text":"<img src=\"http:\/\/:domain:\/:subdir:imgs\/sortArrowDown.gif\" border=\"0\" \/>"},{"key":"order_up","text":"<img src=\"http:\/\/:domain:\/:subdir:imgs\/sortArrowUp.gif\" border=\"0\" \/>"},{"key":"registration_successstep","text":"Every entries are valid."},{"key":"registration_changestep","text":"change"},{"key":"message_content","text":"Message Text"},{"key":"send","text":"Send"},{"key":"loggedin_not","text":"Welcome Guest!"},{"key":"change_pwd","text":"Change password"},{"key":"repeat_newpassword","text":"Repeat New Password"},{"key":"newpassword","text":"New Password"},{"key":"oldpassword","text":"Old Password"},{"key":"enteroldpassword","text":"Please enter your old password for authentication"},{"key":"changedpasswordsuccess","text":"Your password has successfully been changed."},{"key":"company","text":"Company"},{"key":"account_config_firstline","text":"You can change your personal settings here."},{"key":"address_person","text":"Address & Person"},{"key":"change_password","text":"Change password"},{"key":"permission_denied","text":"Access denied"},{"key":"errors_in_form","text":"Unsuccessful save! An error has occured. Please check your entries!"},{"key":"report_bug","text":"report error"},{"key":"required_field","text":"This is a requed field."},{"key":"hint_hoteleditmode","text":"Editing is active! Please note: Every change of your hotel needs a new approval. So your updated hotel will appear, after your change has been approved."},{"key":"save_changes","text":"Save Changes"},{"key":"no_stars","text":"No Stars"},{"key":"bugreport_error_msgmissing","text":"Please specify the reason for your error message."},{"key":"bugreport_error_urimissing","text":"Please enter the respective URL page."},{"key":"refereruri","text":"respective page"},{"key":"comment","text":"comment"},{"key":"report_bug_success","text":"Your erroe report has successfully been changed!"},{"key":"newsletter_entermail","text":"Please enter your E-mail address"},{"key":"newsletter_in_success","text":"Your E-mail address has successfully been saved!"},{"key":"newsletter_out_success","text":"Your E-mail address has successfully been deleted!"},{"key":"insteadof","text":"instead of"},{"key":"location","text":"Location"},{"key":"user","text":"user"},{"key":"label_admin","text":"administrator"},{"key":"select_action","text":"choose action"},{"key":"action_deactivate","text":"activate\/unpublish"},{"key":"none","text":"no  "},{"key":"overview","text":"Overview"},{"key":"unpublished_until_now","text":"This hotel has not been approved yet."},{"key":"required_salutation","text":"Please choose a title"},{"key":"required_name","text":"Pleae enter first name"},{"key":"required_lastname","text":"Please enter last name"},{"key":"required_street","text":"Please enter street"},{"key":"required_city","text":"Please enter town"},{"key":"required_zipcode","text":"Please enter Post code"},{"key":"required_country","text":"Please enter country."},{"key":"required_username","text":"Please enter your user name."},{"key":"required_usernameexists","text":"Your user name has already been assigned. Please choose annother one."},{"key":"required_password","text":"Please enter valid password"},{"key":"required_pwd_snd_entry_match","text":"does not accord with our first entry."},{"key":"required_email","text":"Please enter a valid E-mail address"},{"key":"required_emailexists","text":""},{"key":"required_email_snd_entry_match","text":"The repeatition has to accord with your first entry and has to be a valid E-mail address"},{"key":"required_checkagb","text":"Please confirm that your have read and understood the terms of use."},{"key":"registration_hotelier_success","text":"your account has been created. You will receive an E-mail which will contain a link to activate your account. After activation you will be able to manage your hotel and of course you will be able to create new hotels."},{"key":"registration_hotelier_error","text":"An error has occured! Please check the red marked fields."},{"key":"required_editorial_ToM","text":"Please enter an editorial\/kind of medium"},{"key":"required_type_of_employment","text":"Please choose type of employment"},{"key":"registration_press_success","text":"Your account has been created. For Activation you must download, print and fill in the following PDF and send it to the ax number below."},{"key":"registration_press_error","text":"An error has occured! Please check the red marked fields."},{"key":"no_account","text":"No Account?"},{"key":"login2","text":"Registration"},{"key":"login_hint1","text":"If you have an account at MyNewHotel.com, you will be able to register with your user data and to authenticate you here."},{"key":"adminmenu","text":"administration"},{"key":"accounttype","text":"type of account"},{"key":"registerdate","text":"date of register"},{"key":"status","text":"Status"},{"key":"online","text":"online"},{"key":"hotels","text":"hotels"},{"key":"lastlogin","text":"last login"},{"key":"lastaction","text":"last activity"},{"key":"register_mail_subject_hotelier","text":"Your hotelier registration at MyNewHotel.com"},{"key":"register_mail_content_hotelier","text":"Welcome to MyNewHotel.\r\n\r\nYou have been successfully registered on MyNewHotel.com.\r\n\r\nPlease use the following link to confirm your account:\r\n\r\n%s?k=%s"},{"key":"activate_account_success","text":"Your account has successfully been published. Now you can register here by your user data."},{"key":"activate_account_error_wrongkey","text":"Error: Invalid activating code! Your account had been activated or you made a mistake concerning the activatinglink"},{"key":"account_notactivated","text":"Error at registration: Your account has not been activated yet."},{"key":"never","text":"never"},{"key":"options","text":"Options"},{"key":"delete","text":"Delete"},{"key":"label_programer","text":"developer"},{"key":"newsletter_in_error","text":"Your E-mail address had already been registered."},{"key":"openingspecialshort","text":"OS"},{"key":"max_desc_signs","text":""},{"key":"register_mail_content_press","text":"Welcome to MyNewHotel. You have been successfully registered on MyNewHotel.com. Please send this PDF to comfirm your account"},{"key":"edit_hotel_saved","text":"Changes have been saved successfully"},{"key":"contact_mailtitle","text":"Contact Request from"},{"key":"contact_name","text":"Please enter your name"},{"key":"contact_mail","text":"Please enter your e-mail address"},{"key":"contact_message","text":"Please enter your message"},{"key":"contact_server_error","text":"The operation could not be achieved because of a server problem"},{"key":"contact_success","text":"Your contact request has successfully been send"},{"key":"activate_os","text":"Opening Special"},{"key":"cookies_hint","text":"Unfortunately your system does not accept cookies. MyNewHotel.com cannot afford full functional range!...more information.."},{"key":"change_language","text":"change language"},{"key":"no_valid_openingdate","text":"No valid opening date had been entered."},{"key":"save_n_publish","text":"Save & Publish"},{"key":"save_n_unpublish","text":"Save & Unpublish"},{"key":"hotel_complete","text":"Complete"},{"key":"edit_hotel_saved_published","text":"The hotel had been saved and published"},{"key":"edit_hotel_saved_unpublished","text":"This hotel had been saved and is not published anymore."},{"key":"upload_image_error","text":"Your picture could not be saved."},{"key":"upload_image_error_empty","text":"Your picture does not contain any data"},{"key":"upload_image_error_wrongfiletype","text":"Wrong type of data file. Only permitted are: GIF and JPEG graphics"},{"key":"upload_image_success","text":"Your picutre has successfully been uploaded."},{"key":"add_image","text":"Add Picture"},{"key":"publishment","text":"approval"},{"key":"hotel_created","text":"Your hotel has successfully been created."},{"key":"hotel_create_error_noname","text":"It is compulsory to fill in a hotel name!"},{"key":"hotel_create_error_shortname","text":"The name of the new hotel is too short. It must be a name which contains %s letters."},{"key":"date_before","text":""},{"key":"hotel_edit_enter_street","text":"Please enter the street of the hotel"},{"key":"upload_image_size_too_big","text":"the graphic is too big"},{"key":"resetpwd_wrongactivation","text":"invalid activating code"},{"key":"resetpwd_success","text":"We have assumed your new password successfully. You can register with your new password now!"},{"key":"user_del_permission_denied","text":"You does not dispose about the required Userlevel\/status of use."},{"key":"user_del_success","text":"The user has successfully been deleted!"},{"key":"hotel_status","text":"status"},{"key":"images_num","text":"Number of Pictures"},{"key":"configure_trustee_error_insertinfo","text":"Please enter e-mail address or the user name who shall manage the hoel for you"},{"key":"configure_trustee_error_nouserfound","text":"No user with that e-mail address or username found. Please check your entry."},{"key":"configure_trustee_error_trusteeisowner","text":"The owner of the hotel cannot act as administrator"},{"key":"configure_trustee_email_subject","text":"You are set up as administrator."},{"key":"configure_trustee_email_content","text":"Hello! Herewith we would like to inform you that %s has you set up as administrator for the hotel %s at MyNewHotel.com"},{"key":"configure_trustee_success","text":""},{"key":"configure_trustee_error_trusteeistrustee","text":"You are trying to enter the same administrator."},{"key":"configure_trustee_error_permissiondenied","text":"You do not have the requested rights to appoint an administrator."},{"key":"configure_owner_error_permissiondenied","text":"You do not have the requested rights to change the owner."},{"key":"configure_owner_success","text":"The owner had been changed and informed by e-mail."},{"key":"configure_owner_error_ownerisowner","text":"You are already the owner of that hotel."},{"key":"configure_owner_error_insertinfo","text":"Please enter the user name or the e-mail address of the new owner."},{"key":"configure_owner_error_nouserfound","text":"No user with that username or that e-mail address found!"},{"key":"configure_owner_email_subject","text":"A hotel had been transcribed to you!"},{"key":"configure_owner_email_content","text":"Hello! Herewith we would like to inform you that %s has you set up as administrator for the hotel %s at MyNewHotel.com. As owner you have full access to your hotel and you can make every changes including the deletion of the hotel. The hotel can be found at your list in the hotel manager. It takes action on the following hotel: Name: Link: We wish a nice day and lots of fun at MyNewHotel.com! "},{"key":"rss_headline","text":"MyNewHotel.com -  The 10newest hotels in Rss- Feed!"},{"key":"not_allowed","text":"You do not have the required rights for tha action."},{"key":"delete_hotel","text":"Delete hotel"},{"key":"accept_deleting","text":"Please accept the deletion of the hotel to eliminate the hotel successfully."},{"key":"accept_deleting_account","text":"Comfirm deletion"},{"key":"delete_account","text":"Delete account"},{"key":"reallydeleteaccount","text":"Do you really want to delete your account and every data that are connected with?"},{"key":"delete_account_explanation","text":"As soon as the deletion opf your account is applied , an e-mail containing thelink for the deletion will be send to you. Via that link you confirm the deletion of your account and then you will not be able to register with our data anymore. Your account will be  elimiated from our system by an administrator."},{"key":"config_desc","text":"Change every settings concerning your account."},{"key":"hotelmanager_desc","text":"The hotel manager offers the management of your own created hotels."},{"key":"okay","text":"OK"},{"key":"delete_account_error_acceptdeleting","text":"Please confirm the deletion of your account by activation of your fields."},{"key":"delete_account_sentmail","text":"Your account has been prebooked for a deletion. Soon you will receive an e-mail containng the confirmationlink and instructions. Please note: herewith you are logged out."},{"key":"delete_account_mail_subject","text":"deletion of account"},{"key":"delete_account_mail_content","text":"Hello, as you have requested we are working on the deletion of your account at MyNewHotel.com in our system. Please note that you are not able to register with your user data at our system anymore. To confirm the deletion, please confirm the following confirmationlink: We would like to inform you that we have lodged the IP address %s in our system so that we can follow which computer gave assignment for deletion. Kind Regards"},{"key":"error_paramsmissing","text":"Error: missing parameter"},{"key":"deleteaccount_success","text":"Your account has successfully been published for deletion. "},{"key":"text_byebye","text":"MyNewhotel.com regrets your decision not to want to be a part of our platform anymore. If you like you can give us a feedback so that we can improve our service."},{"key":"your_feedback","text":"your feedback"},{"key":"deleteaccount_error_codenotvalid","text":"the assigned confirmationcode is not valid!"},{"key":"deleteaccount_cancel","text":"Do not delete account"},{"key":"deleteaccount_cancel_success","text":"The operation of deletion has been aborted. You can register with you user data again."},{"key":"account_erasingactive","text":"error: your account has been prebooked for deletion."},{"key":"roomquota","text":"Room Management"},{"key":"day","text":"day"},{"key":"no_price_set","text":"no price was defined"},{"key":"nopriceset","text":"no price available"},{"key":"rss","text":"RSS"},{"key":"picupload_hint","text":"To abort your hotel you have to upload at least 4 pictures. The first picture in order appears on the search list and as the starting picture on the site of the hotel. The maximal size of the data account for 1 MB. The picture resolution must have at least 320 x 240 pixel. allowed data format: jpg and gif"},{"key":"piclist_nopix","text":"there are no pictures for that hotel"},{"key":"delete_image","text":"Delete picture"},{"key":"image_deleted","text":"picture successfully deleted."},{"key":"hotelstatus","text":"Status of hotel"},{"key":"hotelstatus_desc","text":"to abort the hotel, it must have the following criteria: If every terms are achieved, you can abort your hotel"},{"key":"hotelstatus_images_hint","text":"you have to upload at least %s pictures"},{"key":"hotelstatus_name_hint","text":"A hotelname must be defined and must contain at least  %s letters."},{"key":"hotelstatus_continent_hint","text":"For the hotel a continent has to be chosen"},{"key":"hotelstatus_country_hint","text":"For the hotel a country has to be chosen"},{"key":"hotelstatus_state_hint","text":"For the hotel a state has to be chosen"},{"key":"hotelstatus_city_hint","text":"For the hotel a town has to be chosen"},{"key":"hotelstatus_texts_hint","text":"there have to be at least for %s languages a description be available."},{"key":"hotelstatus_openingdate_hint","text":"a valid opening date has to be entered"},{"key":"hotelstatus_price_hint","text":"For the complete hotel entry you should define a regular price"},{"key":"regularprice","text":"Regular Price"},{"key":"hotelcomplete","text":"Complete Hotel"},{"key":"hotelcomplete_hint","text":"Your hotel achieves every criteria which are needed to publish. Do you want to abort your hotel now and publish it for checking by the MyNewHotel.com - team?"},{"key":"label_id","text":"#"},{"key":"label_label","text":"label"},{"key":"lang_de","text":"German"},{"key":"lang_en","text":"English"},{"key":"label_key","text":"key"},{"key":"lang_sp","text":"Spanish"},{"key":"admin_existing_pages","text":"In system there are 5s different pages situated."},{"key":"searchList","text":"Search Hotel"},{"key":"yourHotelName","text":"Name of your hotel"},{"key":"welcome_hotelnamecreate2","text":"Create another hotel"},{"key":"action_hotels_del","text":"Delete selected hotels"},{"key":"action_hotels_publish","text":"Release selected hotels"},{"key":"action_hotels_unpublish","text":"Close selected hotels"},{"key":"address_raw","text":"Address"},{"key":"add_city_2_geo","text":"add new"},{"key":"add_contacts","text":"Contact added!"},{"key":"admin_existing_newsletter","text":"%s Mail-addresses are in the newsletter."},{"key":"ajax_geo_city_add","text":"Would you like to give your input and use it for the MyNewHotel.com-system"},{"key":"ajax_geo_loading","text":"Load data\u2026"},{"key":"amount","text":"Number"},{"key":"bookinglink","text":"Booking Link"},{"key":"bookinglink_desc","text":"You can publish your booking link here, which will pass on the MyNewHotel.com visitor to your own website. Please understand, that we cannot save any statistic data with this option. "},{"key":"booking_system","text":"Booking System"},{"key":"box_address","text":"Hotel Address"},{"key":"changepassword_error_missingdata","text":"Please enter your complete data!"},{"key":"changepic","text":"Change Pictures"},{"key":"change_owner_hint","text":"Your can enter contact dates for the new hotel owner here."},{"key":"child","text":"child"},{"key":"childs","text":"Number of chlidren"},{"key":"childsage","text":"age of children"},{"key":"configure_bookingsystem_permissiondenied","text":"Regrettably you are not allowed to change data in the booking system. "},{"key":"config_publishment","text":"Indicator options"},{"key":"config_publishment_hint","text":"You can change indicator mode here. "},{"key":"conf_contact_type","text":"Conference"},{"key":"contact_contact_type","text":"Further on contacts"},{"key":"define_bookingsystem","text":"Choose Booking system"},{"key":"define_bookingsystem_hint","text":"You can adjust the booking procedure for your hotel for MyNewHotel.com visitors here."},{"key":"define_trustee","text":"Specify Manager"},{"key":"define_trustee_hint","text":"Enter name of user, who will be responsible for all data administration."},{"key":"delete_hotel_hint","text":"If your hotel shall not be published in the system anymore, please delete here. "},{"key":"delete_hotel_question","text":"Are you sure, that your hotel shall be deleted?"},{"key":"doubleroom","text":"double room"},{"key":"env_fitnesscenter","text":"Fitness Center"},{"key":"familyroom","text":"double room with additional bed"},{"key":"familyroom_add_beds","text":"Family room with additional bed"},{"key":"freetext","text":"Free text"},{"key":"hm-tab_contacts","text":"Possible Contacts"},{"key":"hm_start_welcome","text":"<h1>Welcome on MyNewHotel.com!<\/h1>\r\n<p>Your Master Data have been registrated sucessfully.<\/p>\r\n<p>All Master Data will be used internally only.<\/p>\r\n<p>In the next step you will have the possibility to load one or more hotels into the Data Base. With your Logindates you can log in the data base at any time.<\/p>\r\n<p>Please note, that all entered data has to be truthfully. All entered data will be proofed internally be MyNewHotel.com and will be released afterwards.<\/p>\r\n<p>We thank you for your interest in MyNewHotel.com. We wish you a lot of fun with entering the data of your new hotel and remain with our best regards for today.<\/p>\r\n<p>Herbert Adler<br \/>\r\nMyNewHotel.com<\/p>"},{"key":"hoteladdress","text":"Hotel address"},{"key":"hotelcompleted","text":"All entered Data will be proofed by MyNewHotel.com now. Please note, that this will take 2-3 days. You will get a informed by E-Mail, when your hotel is released. "},{"key":"hotelstatus_address_hint","text":"The address of your hotel has to be entered."},{"key":"just_book_now","text":"Book Now"},{"key":"label","text":"Inscription"},{"key":"label_email","text":"e-mail"},{"key":"label_insertdate","text":"Date"},{"key":"mail_or_username","text":"E-Mail-Address or user name"},{"key":"make_a_selection","text":"No Selection available"},{"key":"mnhprice","text":"MyNewHotel.com-Price"},{"key":"more_than","text":"More than"},{"key":"new","text":"new"},{"key":"normalprice","text":"normal price"},{"key":"no_account_hint","text":"You have no MyNewHotel.com Account? Registrate here!"},{"key":"older_than","text":"older than"},{"key":"persons","text":"Number of persons"},{"key":"person_values","text":"person values"},{"key":"planned_end","text":"Planned departure"},{"key":"planned_start","text":"Planned Arrival"},{"key":"please_choose","text":"please choose\u2026"},{"key":"previewpic","text":"Preview Picture"},{"key":"publishement_hide","text":"Fade out"},{"key":"publishment_choice","text":"Choose Indicator Mode"},{"key":"publishment_show","text":"indicate"},{"key":"quotasystem","text":"Allotment System"},{"key":"quotasystem_desc","text":"With the Allotment-System of MyNewHotel.com you can specify your free allotment on a daily basis very comfortable. A Statistic Tool is integrated, which shows you the actual number of bookings. "},{"key":"recommend","text":"recommended"},{"key":"referer_hint","text":"Referer"},{"key":"referer_hits","text":"Hits"},{"key":"referer_link","text":"Link"},{"key":"requestsystem","text":"Request system"},{"key":"requestsystem_desc","text":"Please note that we cannot provide statistic data for the request booking system. This is a system, which generates an E-Mail Request for the requested dates. "},{"key":"request_error_invaliddates","text":"You can request rooms after the opening date of the hotel"},{"key":"request_error_invalidend","text":"Unvalid Departure Date"},{"key":"request_error_invalidstart","text":"Unvalid Arrival Date!"},{"key":"request_error_missing","text":"Please fill in all data"},{"key":"request_error_missingend","text":"Please fill in correct departure date!"},{"key":"request_error_missingstart","text":"Please fill in correct arrival date!"},{"key":"request_mail_content","text":"Dear hotel partner, a visitor of MyNewHotel.com request a booking confirmation for the following dates and room type:                                                          Arrival:                                                                                  Departure: %s                                                                           Room type:  %s                                                                      Number of Travellers: %s                                                 Children: %s                                                                          Age of Children: %s                                                         Free text: %s                                                                    Please contact:                                                                  Name: %s                                                                         Last Name: %s                                                                       e-mail: %s                                                                      Phone: %s                                                                              Fax: %s                                                                                                Please check your availability and contact the clients directly. MyNewHotel.com. %s"},{"key":"request_mail_sent","text":"Your request has been send. Please note, that the hotel will contact you directly. "},{"key":"request_mail_subject","text":"Room Request by MyNewhotel.com"},{"key":"request_values","text":"Data to the stay"},{"key":"res_contact_type","text":"Reservations"},{"key":"roomadmin_bookings","text":"Bookings"},{"key":"roomadmin_quota","text":"Allotment"},{"key":"roomadmin_roomtypes","text":"Type of Rooms"},{"key":"roomtype","text":"Room Type"},{"key":"saved_price","text":"Price has been saved!"},{"key":"save_contact","text":"Contact Dates have been saved!"},{"key":"save_price_missingbookinglink","text":"A Booking Link for the Opening Special has to be entered. "},{"key":"save_price_startafterend","text":"Arrival date cannot follow the departure date. "},{"key":"save_price_startendmissing","text":"An arrival and departure date has to be entered for the opening special."},{"key":"search_keys","text":"search words"},{"key":"search_location","text":"Please enter your city"},{"key":"sell_contact_type","text":"Sales"},{"key":"singleroom","text":"single room"},{"key":"years_old","text":"years old"},{"key":"remember2","text":"Do not activate this field if you are working at a public computer or one used by a number of users."},{"key":"olderyear","text":"Hotels older than 12 months"},{"key":"addcontacts","text":"Add <span id=\"addmsg\">%s<\/span> more contacts"},{"key":"remove","text":"Remove"},{"key":"additionalcontact","text":"Additional contact"},{"key":"sales","text":"Sales"},{"key":"reservation","text":"Reservation"},{"key":"conferences","text":"Conferences"},{"key":"contacth2","text":""},{"key":"sendcontacthead","text":"Send Message"},{"key":"africa","text":"Africa"},{"key":"required_emailexists","text":"Your entered e-mailadress is already in use."},{"key":"hm_start_welcome_step2","text":"<h2>Informations and Pricing<\/h2>\r\n<ul>\r\n<li>You can register your new hotel when you start planning it. Please make sure, that you have at least plans or drawings to visualize on MyNewHotel.<\/li>\r\n<li>Your hotel will be online on MNH exactly until one year after opening date.<\/li>\r\n<li>You pay only once \u20ac 249,- + VAT (19%, subject to change).<\/li>\r\n<\/ul>"},{"key":"completeBillInfo","text":"<ul>\r\n<li style=\"padding-bottom:5px;\">Your hotel will be online on MyNewHotel exactly until one year after opening date.  <\/li>\r\n<li style=\"padding-bottom:5px;\">You pay only once for one hotel \u20ac 249,- + VAT (19%, subject to change). <\/li>\r\n<li style=\"padding-bottom:5px;\">MyNewHotel will send you an invoice by e-mail and the original by post mail. <\/li>\r\n<li style=\"padding-bottom:5px;\">Your hotel registration data will be double checked regarding accuracy and completeness by MyNewHotel. <\/li>\r\n<li style=\"padding-bottom:5px;\">As soon as MyNewHotel is in receipt of the payment, your hotel will be online. <\/li>\r\n<\/ul>"},{"key":"billNemail","text":"Billing Address and e-mail"},{"key":"flatrate","text":"<p>You wish to regsiter more properties at MyNewHotel? We can offer you special conditions:<\/p>\r\n<ul>\r\n<li>up to 5 hotels\/year \u20ac 795,--. This means you can publish in total 5 hotels. Each hotel will be online until one year after the opening date.<\/li>\r\n<li>up to 10 hotels\/year \u20ac 995,--. This means you can publish in total 10 hotels. Each hotel will be online until one year after the opening date.<\/li>\r\n<li>up to 20 hotels\/year \u20ac 1.495,--. This means you can publish in total 20 hotels. Each hotel will be online until one year after the opening date.<\/li>\r\n<\/ul>\r\n<p>All rates plus 19% VAT (subject to change)<\/p>\r\n\r\n<p>If you are interested in one of these offers please send your message here: <a href=\"mailto:flatrate@mynewhotel.com\">flatrate@mynewhotel.com<\/a><\/p>"},{"key":"revokeComplete","text":"At the moment your hotel is in queue for activation.<br \/>Edit anyway?"},{"key":"thankForAd","text":"Thank you very much for advertising with MyNewHotel.com"},{"key":"completeSuccess","text":"<h2>Congratulations!<\/h2>\r\n\t\t\t\t\t\tYou have filled in all the data needed. After we have checked your information and after you have paid the bill, your hotel will be activated. So to complete the registration we now need your billing address and a valid E-Mail-address. "},{"key":"change","text":"change"},{"key":"change_city","text":"Change City"},{"key":"edit_hotel_now","text":"edit hotel"},{"key":"select_gender","text":"Please select an salutation"},{"key":"insert_firstname","text":"Please enter your first name."},{"key":"insert_lastname","text":"Please enter your last name."},{"key":"insert_mediatype","text":"Insert your Media Type!"},{"key":"insert_appointment","text":"Please insert appointment."},{"key":"required_username_format","text":"Your username contain bad characters. Allowed: a-z, A-Z, 0-9"},{"key":"enter_country","text":"Please insert your country"},{"key":"result","text":"Result"},{"key":"country_notfound","text":"Your country not in the list?"},{"key":"addcountry","text":"Add Country"},{"key":"enter_city","text":"Enter your city"},{"key":"change_country","text":"Change Country"},{"key":"change_city","text":"Change City"},{"key":"addcity","text":"Add City"},{"key":"start","text":"start"},{"key":"conditions","text":"Conditions"},{"key":"check","text":"check"},{"key":"enter_hoteladdress","text":"Please enter your hotel address"},{"key":"street_num","text":"Number"},{"key":"city_notfound","text":"Your city is missing?"},{"key":"sort","text":"Sort"},{"key":"claim","text":"New Hotel Openings Worldwide"},{"key":"nomapfound","text":"We're Sorry, we don't have any map for this Hotel."}];
var _currs = new Array ( );
	_currs['ALL'] = 0.0128;
	_currs['DZD'] = 0.0163;
	_currs['XAL'] = 1.28;
	_currs['ARS'] = 0.329;
	_currs['AWG'] = 0.5585;
	_currs['AUD'] = 0.9184;
	_currs['BSD'] = 1.0025;
	_currs['BHD'] = 2.6522;
	_currs['BDT'] = 0.0146;
	_currs['BBD'] = 0.5013;
	_currs['BYR'] = 0.0005;
	_currs['BZD'] = 0.5063;
	_currs['BMD'] = 0.999;
	_currs['BTN'] = 0.0219;
	_currs['BOB'] = 0.141;
	_currs['BWP'] = 0.1585;
	_currs['BRL'] = 0.641;
	_currs['GBP'] = 1.9565;
	_currs['BND'] = 0.6896;
	_currs['BGN'] = 0.7922;
	_currs['BIF'] = 0.0009;
	_currs['CAD'] = 0.9597;
	_currs['KYD'] = 1.2195;
	_currs['XOF'] = 0.0024;
	_currs['XAF'] = 0.0023;
	_currs['CLP'] = 0.002;
	_currs['CNY'] = 0.1458;
	_currs['COP'] = 0.0006;
	_currs['KMF'] = 0.0032;
	_currs['XCP'] = 3.712;
	_currs['CRC'] = 0.0019;
	_currs['HRK'] = 0.2147;
	_currs['CUP'] = 1;
	_currs['CYP'] = 2.5132;
	_currs['CZK'] = 0.0645;
	_currs['DKK'] = 0.2077;
	_currs['DOP'] = 0.0289;
	_currs['XCD'] = 0.3759;
	_currs['ECS'] = 3.992e-05;
	_currs['EGP'] = 0.1882;
	_currs['SVC'] = 0.1143;
	_currs['EEK'] = 0.1003;
	_currs['ETB'] = 0.11;
	_currs['EUR'] = 1.5496;
	_currs['FJD'] = 0.6504;
	_currs['GMD'] = 0.0476;
	_currs['GHC'] = 0.0001;
	_currs['XAU'] = 883.95;
	_currs['GTQ'] = 0.1346;
	_currs['GNF'] = 0.0002;
	_currs['HTG'] = 0.0277;
	_currs['HNL'] = 0.0529;
	_currs['HKD'] = 0.1281;
	_currs['HUF'] = 0.0066;
	_currs['ISK'] = 0.0125;
	_currs['INR'] = 0.0237;
	_currs['IDR'] = 0.0001;
	_currs['IRR'] = 0.0001;
	_currs['IQD'] = 0.0008;
	_currs['ILS'] = 0.281;
	_currs['JMD'] = 0.0139;
	_currs['JPY'] = 0.0093;
	_currs['JOD'] = 1.4103;
	_currs['KZT'] = 0.0083;
	_currs['KES'] = 0.0151;
	_currs['KRW'] = 0.001;
	_currs['KWD'] = 3.7647;
	_currs['LVL'] = 2.2041;
	_currs['LBP'] = 0.0007;
	_currs['LSL'] = 0.136;
	_currs['LTL'] = 0.4498;
	_currs['MOP'] = 0.125;
	_currs['MKD'] = 0.0252;
	_currs['MWK'] = 0.007;
	_currs['MYR'] = 0.3053;
	_currs['MVR'] = 0.0782;
	_currs['MTL'] = 3.4072;
	_currs['MRO'] = 0.0044;
	_currs['MUR'] = 0.0371;
	_currs['MXN'] = 0.101;
	_currs['MDL'] = 0.1033;
	_currs['MNT'] = 0.0009;
	_currs['MAD'] = 0.1353;
	_currs['NAD'] = 0.139;
	_currs['NPR'] = 0.0147;
	_currs['ANG'] = 0.5634;
	_currs['TRY'] = 0.8681;
	_currs['NZD'] = 0.7242;
	_currs['NIO'] = 0.0555;
	_currs['NGN'] = 0.0085;
	_currs['NOK'] = 0.1929;
	_currs['OMR'] = 2.5981;
	_currs['XPF'] = 0.0129;
	_currs['PKR'] = 0.014;
	_currs['XPD'] = 354.45;
	_currs['PAB'] = 1;
	_currs['PGK'] = 0.3887;
	_currs['PYG'] = 0.0003;
	_currs['PEN'] = 0.3527;
	_currs['PHP'] = 0.0227;
	_currs['XPT'] = 1563;
	_currs['PLN'] = 0.4817;
	_currs['QAR'] = 0.2748;
	_currs['RON'] = 0.4426;
	_currs['RUB'] = 0.0426;
	_currs['RWF'] = 0.0018;
	_currs['WST'] = 0.4034;
	_currs['STD'] = 0.0001;
	_currs['SAR'] = 0.267;
	_currs['SCR'] = 0.1249;
	_currs['SLL'] = 0.0003;
	_currs['XAG'] = 17.103;
	_currs['SGD'] = 0.7256;
	_currs['SKK'] = 0.051;
	_currs['SIT'] = 0.0061;
	_currs['SBD'] = 0.1293;
	_currs['ZAR'] = 0.1359;
	_currs['LKR'] = 0.0093;
	_currs['SDD'] = 0.0043;
	_currs['SZL'] = 0.136;
	_currs['SEK'] = 0.1638;
	_currs['CHF'] = 0.9499;
	_currs['TWD'] = 0.0325;
	_currs['TZS'] = 0.0009;
	_currs['THB'] = 0.0297;
	_currs['TTD'] = 0.166;
	_currs['TND'] = 0.8565;
	_currs['USD'] = 1;
	_currs['AED'] = 0.2723;
	_currs['UGX'] = 0.0006;
	_currs['UAH'] = 0.2162;
	_currs['UYU'] = 0.0521;
	_currs['VUV'] = 0.0105;
	_currs['VEB'] = 0.0005;
	_currs['VND'] = 0.0001;
	_currs['YER'] = 0.005;
	_currs['ZMK'] = 0.0003;
	_currs['ZWD'] = 0.1249;
/*
 * jQuery UI Datepicker
 *
 * Copyright (c) 2006, 2007, 2008 Marc Grabanski
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 * 
 * http://docs.jquery.com/UI/Datepicker
 *
 * Depends:
 *	ui.core.js
 *
 * Marc Grabanski (m@marcgrabanski.com) and Keith Wood (kbwood@virginbroadband.com.au).
 */
   
(function($) { // hide the namespace

var PROP_NAME = 'datepicker';

/* Date picker manager.
   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
   Settings for (groups of) date pickers are maintained in an instance object,
   allowing multiple different settings on the same page. */

function Datepicker() {
	this.debug = false; // Change this to true to start debugging
	this._curInst = null; // The current instance in use
	this._disabledInputs = []; // List of date picker inputs that have been disabled
	this._datepickerShowing = false; // True if the popup picker is showing , false if not
	this._inDialog = false; // True if showing within a "dialog", false if not
	this._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division
	this._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class
	this._appendClass = 'ui-datepicker-append'; // The name of the append marker class
	this._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class
	this._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class
	this._promptClass = 'ui-datepicker-prompt'; // The name of the dialog prompt marker class
	this._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class
	this._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class
	this._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class
	this.regional = []; // Available regional settings, indexed by language code
	this.regional[''] = { // Default regional settings
		clearText: 'Clear', // Display text for clear link
		clearStatus: 'Erase the current date', // Status text for clear link
		closeText: 'Close', // Display text for close link
		closeStatus: 'Close without change', // Status text for close link
		prevText: '&#x3c;Prev', // Display text for previous month link
		prevStatus: 'Show the previous month', // Status text for previous month link
		prevBigText: '&#x3c;&#x3c;', // Display text for previous year link
		prevBigStatus: 'Show the previous year', // Status text for previous year link
		nextText: 'Next&#x3e;', // Display text for next month link
		nextStatus: 'Show the next month', // Status text for next month link
		nextBigText: '&#x3e;&#x3e;', // Display text for next year link
		nextBigStatus: 'Show the next year', // Status text for next year link
		currentText: 'Today', // Display text for current month link
		currentStatus: 'Show the current month', // Status text for current month link
		monthNames: ['January','February','March','April','May','June',
			'July','August','September','October','November','December'], // Names of months for drop-down and formatting
		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting
		monthStatus: 'Show a different month', // Status text for selecting a month
		yearStatus: 'Show a different year', // Status text for selecting a year
		weekHeader: 'Wk', // Header for the week of the year column
		weekStatus: 'Week of the year', // Status text for the week of the year column
		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting
		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting
		dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday
		dayStatus: 'Set DD as first week day', // Status text for the day of the week selection
		dateStatus: 'Select DD, M d', // Status text for the date selection
		dateFormat: 'mm/dd/yy', // See format options on parseDate
		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
		initStatus: 'Select a date', // Initial Status text on opening
		isRTL: false // True if right-to-left language, false if left-to-right
	};
	this._defaults = { // Global defaults for all the date picker instances
		showOn: 'focus', // 'focus' for popup on focus,
			// 'button' for trigger button, or 'both' for either
		showAnim: 'show', // Name of jQuery animation for popup
		showOptions: {}, // Options for enhanced animations
		defaultDate: null, // Used when field is blank: actual date,
			// +/-number for offset from today, null for today
		appendText: '', // Display text following the input box, e.g. showing the format
		buttonText: '...', // Text for trigger button
		buttonImage: '', // URL for trigger button image
		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
		closeAtTop: true, // True to have the clear/close at the top,
			// false to have them at the bottom
		mandatory: false, // True to hide the Clear link, false to include it
		hideIfNoPrevNext: false, // True to hide next/previous month links
			// if not applicable, false to just disable them
		navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
		showBigPrevNext: false, // True to show big prev/next links
		gotoCurrent: false, // True if today link goes back to current selection instead
		changeMonth: true, // True if month can be selected directly, false if only prev/next
		changeYear: true, // True if year can be selected directly, false if only prev/next
		showMonthAfterYear: false, // True if the year select precedes month, false for month then year
		yearRange: '-10:+10', // Range of years to display in drop-down,
			// either relative to current year (-nn:+nn) or absolute (nnnn:nnnn)
		changeFirstDay: true, // True to click on day name to change, false to remain as set
		highlightWeek: false, // True to highlight the selected week
		showOtherMonths: false, // True to show dates in other months, false to leave blank
		showWeeks: false, // True to show week of the year, false to omit
		calculateWeek: this.iso8601Week, // How to calculate the week of the year,
			// takes a Date and returns the number of the week for it
		shortYearCutoff: '+10', // Short year values < this are in the current century,
			// > this are in the previous century, 
			// string value starting with '+' for current year + value
		showStatus: false, // True to show status bar at bottom, false to not show it
		statusForDate: this.dateStatus, // Function to provide status text for a date -
			// takes date and instance as parameters, returns display text
		minDate: null, // The earliest selectable date, or null for no limit
		maxDate: null, // The latest selectable date, or null for no limit
		duration: 'normal', // Duration of display/closure
		beforeShowDay: null, // Function that takes a date and returns an array with
			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '', 
			// [2] = cell title (optional), e.g. $.datepicker.noWeekends
		beforeShow: null, // Function that takes an input field and
			// returns a set of custom settings for the date picker
		onSelect: null, // Define a callback function when a date is selected
		onChangeMonthYear: null, // Define a callback function when the month or year is changed
		onClose: null, // Define a callback function when the datepicker is closed
		numberOfMonths: 1, // Number of months to show at a time
		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
		stepMonths: 1, // Number of months to step back/forward
		stepBigMonths: 12, // Number of months to step back/forward for the big links
		rangeSelect: false, // Allows for selecting a date range on one date picker
		rangeSeparator: ' - ', // Text between two dates in a range
		altField: '', // Selector for an alternate field to store selected dates into
		altFormat: '' // The date format to use for the alternate field
	};
	$.extend(this._defaults, this.regional['']);
	this.dpDiv = $('<div id="' + this._mainDivId + '" style="display: none;"></div>');
}

$.extend(Datepicker.prototype, {
	/* Class name added to elements to indicate already configured with a date picker. */
	markerClassName: 'hasDatepicker',

	/* Debug logging (if enabled). */
	log: function () {
		if (this.debug)
			console.log.apply('', arguments);
	},
	
	/* Override the default settings for all instances of the date picker. 
	   @param  settings  object - the new settings to use as defaults (anonymous object)
	   @return the manager object */
	setDefaults: function(settings) {
		extendRemove(this._defaults, settings || {});
		return this;
	},

	/* Attach the date picker to a jQuery selection.
	   @param  target    element - the target input field or division or span
	   @param  settings  object - the new settings to use for this date picker instance (anonymous) */
	_attachDatepicker: function(target, settings) {
		// check for settings on the control itself - in namespace 'date:'
		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 inline = (nodeName == 'div' || nodeName == 'span');
		if (!target.id)
			target.id = 'dp' + new Date().getTime();
		var inst = this._newInst($(target), inline);
		inst.settings = $.extend({}, settings || {}, inlineSettings || {}); 
		if (nodeName == 'input') {
			this._connectDatepicker(target, inst);
		} else if (inline) {
			this._inlineDatepicker(target, inst);
		}
	},

	/* Create a new instance object. */
	_newInst: function(target, inline) {
		var id = target[0].id.replace(/([:\[\]\.])/g, '\\\\$1'); // escape jQuery meta chars
		return {id: id, input: target, // associated target
			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
			drawMonth: 0, drawYear: 0, // month being drawn
			inline: inline, // is datepicker inline or not
			dpDiv: (!inline ? this.dpDiv : // presentation div
			$('<div class="' + this._inlineClass + '"></div>'))};
	},

	/* Attach the date picker to an input field. */
	_connectDatepicker: function(target, inst) {
		var input = $(target);
		if (input.hasClass(this.markerClassName))
			return;
		var appendText = this._get(inst, 'appendText');
		var isRTL = this._get(inst, 'isRTL');
		if (appendText)
			input[isRTL ? 'before' : 'after']('<span class="' + this._appendClass + '">' + appendText + '</span>');
		var showOn = this._get(inst, 'showOn');
		if (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field
			input.focus(this._showDatepicker);
		if (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked
			var buttonText = this._get(inst, 'buttonText');
			var buttonImage = this._get(inst, 'buttonImage');
			var trigger = $(this._get(inst, 'buttonImageOnly') ? 
				$('<img/>').addClass(this._triggerClass).
					attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
				$('<button type="button"></button>').addClass(this._triggerClass).
					html(buttonImage == '' ? buttonText : $('<img/>').attr(
					{ src:buttonImage, alt:buttonText, title:buttonText })));
			input[isRTL ? 'before' : 'after'](trigger);
			trigger.click(function() {
				if ($.datepicker._datepickerShowing && $.datepicker._lastInput == target)
					$.datepicker._hideDatepicker();
				else
					$.datepicker._showDatepicker(target);
				return false;
			});
		}
		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 this._get(inst, key);
			});
		$.data(target, PROP_NAME, inst);
	},

	/* Attach an inline date picker to a div. */
	_inlineDatepicker: function(target, inst) {
		var input = $(target);
		if (input.hasClass(this.markerClassName))
			return;
		input.addClass(this.markerClassName).append(inst.dpDiv).
			bind("setData.datepicker", function(event, key, value){
				inst.settings[key] = value;
			}).bind("getData.datepicker", function(event, key){
				return this._get(inst, key);
			});
		$.data(target, PROP_NAME, inst);
		this._setDate(inst, this._getDefaultDate(inst));
		this._updateDatepicker(inst);
	},

	/* Tidy up after displaying the date picker. */
	_inlineShow: function(inst) {
		var numMonths = this._getNumberOfMonths(inst); // fix width for dynamic number of date pickers
		inst.dpDiv.width(numMonths[1] * $('.ui-datepicker', inst.dpDiv[0]).width());
	}, 

	/* Pop-up the date picker in a "dialog" box.
	   @param  input     element - ignored
	   @param  dateText  string - the initial date to display (in the current format)
	   @param  onSelect  function - the function(dateText) to call when a date is selected
	   @param  settings  object - update the dialog date picker instance's settings (anonymous object)
	   @param  pos       int[2] - coordinates for the dialog's position within the screen or
	                     event - with x/y coordinates or
	                     leave empty for default (screen centre)
	   @return the manager object */
	_dialogDatepicker: function(input, dateText, onSelect, settings, pos) {
		var inst = this._dialogInst; // internal instance
		if (!inst) {
			var id = 'dp' + new Date().getTime();
			this._dialogInput = $('<input type="text" id="' + id +
				'" size="1" style="position: absolute; top: -100px;"/>');
			this._dialogInput.keydown(this._doKeyDown);
			$('body').append(this._dialogInput);
			inst = this._dialogInst = this._newInst(this._dialogInput, false);
			inst.settings = {};
			$.data(this._dialogInput[0], PROP_NAME, inst);
		}
		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 = // should use actual width/height below
				[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
		}

		// move input on screen for focus, but hidden behind dialog
		this._dialogInput.css('left', this._pos[0] + 'px').css('top', this._pos[1] + 'px');
		inst.settings.onSelect = onSelect;
		this._inDialog = true;
		this.dpDiv.addClass(this._dialogClass);
		this._showDatepicker(this._dialogInput[0]);
		if ($.blockUI)
			$.blockUI(this.dpDiv);
		$.data(this._dialogInput[0], PROP_NAME, inst);
		return this;
	},

	/* Detach a datepicker from its control.
	   @param  target    element - the target input field or division or span */
	_destroyDatepicker: function(target) {
		var $target = $(target);
		if (!$target.hasClass(this.markerClassName)) {
			return;
		}
		var nodeName = target.nodeName.toLowerCase();
		$.removeData(target, PROP_NAME);
		if (nodeName == 'input') {
			$target.siblings('.' + this._appendClass).remove().end().
				siblings('.' + this._triggerClass).remove().end().
				removeClass(this.markerClassName).
				unbind('focus', this._showDatepicker).
				unbind('keydown', this._doKeyDown).
				unbind('keypress', this._doKeyPress);
		} else if (nodeName == 'div' || nodeName == 'span')
			$target.removeClass(this.markerClassName).empty();
	},

	/* Enable the date picker to a jQuery selection.
	   @param  target    element - the target input field or division or span */
	_enableDatepicker: function(target) {
		var $target = $(target);
		if (!$target.hasClass(this.markerClassName)) {
			return;
		}
		var nodeName = target.nodeName.toLowerCase();
		if (nodeName == 'input') {
		target.disabled = false;
			$target.siblings('button.' + this._triggerClass).
			each(function() { this.disabled = false; }).end().
				siblings('img.' + this._triggerClass).
				css({opacity: '1.0', cursor: ''});
		}
		else if (nodeName == 'div' || nodeName == 'span') {
			$target.children('.' + this._disableClass).remove();
		}
		this._disabledInputs = $.map(this._disabledInputs,
			function(value) { return (value == target ? null : value); }); // delete entry
	},

	/* Disable the date picker to a jQuery selection.
	   @param  target    element - the target input field or division or span */
	_disableDatepicker: function(target) {
		var $target = $(target);
		if (!$target.hasClass(this.markerClassName)) {
			return;
		}
		var nodeName = target.nodeName.toLowerCase();
		if (nodeName == 'input') {
		target.disabled = true;
			$target.siblings('button.' + this._triggerClass).
			each(function() { this.disabled = true; }).end().
				siblings('img.' + this._triggerClass).
				css({opacity: '0.5', cursor: 'default'});
		}
		else if (nodeName == 'div' || nodeName == 'span') {
			var inline = $target.children('.' + this._inlineClass);
			var offset = inline.offset();
			var relOffset = {left: 0, top: 0};
			inline.parents().each(function() {
				if ($(this).css('position') == 'relative') {
					relOffset = $(this).offset();
					return false;
				}
			});
			$target.prepend('<div class="' + this._disableClass + '" style="' +
				($.browser.msie ? 'background-color: transparent; ' : '') +
				'width: ' + inline.width() + 'px; height: ' + inline.height() +
				'px; left: ' + (offset.left - relOffset.left) +
				'px; top: ' + (offset.top - relOffset.top) + 'px;"></div>');
		}
		this._disabledInputs = $.map(this._disabledInputs,
			function(value) { return (value == target ? null : value); }); // delete entry
		this._disabledInputs[this._disabledInputs.length] = target;
	},

	/* Is the first field in a jQuery collection disabled as a datepicker?
	   @param  target    element - the target input field or division or span
	   @return boolean - true if disabled, false if enabled */
	_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;
	},

	/* Update the settings for a date picker attached to an input field or division.
	   @param  target  element - the target input field or division or span
	   @param  name    object - the new settings to update or
	                   string - the name of the setting to change or
	   @param  value   any - the new value for the setting (omit if above is an object) */
	_changeDatepicker: function(target, name, value) {
		var settings = name || {};
		if (typeof name == 'string') {
			settings = {};
			settings[name] = value;
		}
		var inst = $.data(target, PROP_NAME);
		if (inst) {
			if (this._curInst == inst) {
				this._hideDatepicker(null);
			}
			extendRemove(inst.settings, settings);
			var date = new Date();
			extendRemove(inst, {rangeStart: null, // start of range
				endDay: null, endMonth: null, endYear: null, // end of range
				selectedDay: date.getDate(), selectedMonth: date.getMonth(),
				selectedYear: date.getFullYear(), // starting point
				currentDay: date.getDate(), currentMonth: date.getMonth(),
				currentYear: date.getFullYear(), // current selection
				drawMonth: date.getMonth(), drawYear: date.getFullYear()}); // month being drawn
			this._updateDatepicker(inst);
		}
	},

	/* Set the dates for a jQuery selection.
	   @param  target   element - the target input field or division or span
	   @param  date     Date - the new date
	   @param  endDate  Date - the new end date for a range (optional) */
	_setDateDatepicker: function(target, date, endDate) {
		var inst = $.data(target, PROP_NAME);
		if (inst) {
			this._setDate(inst, date, endDate);
			this._updateDatepicker(inst);
		}
	},

	/* Get the date(s) for the first entry in a jQuery selection.
	   @param  target  element - the target input field or division or span
	   @return Date - the current date or
	           Date[2] - the current dates for a range */
	_getDateDatepicker: function(target) {
		var inst = $.data(target, PROP_NAME);
		if (inst && !inst.inline)
			this._setDateFromField(inst); 
		return (inst ? this._getDate(inst) : null);
	},

	/* Handle keystrokes. */
	_doKeyDown: function(e) {
		var inst = $.data(e.target, PROP_NAME);
		var handled = true;
		if ($.datepicker._datepickerShowing)
			switch (e.keyCode) {
				case 9:  $.datepicker._hideDatepicker(null, '');
						break; // hide on tab out
				case 13: $.datepicker._selectDay(e.target, inst.selectedMonth, inst.selectedYear,
							$('td.ui-datepicker-days-cell-over', inst.dpDiv)[0]);
						return false; // don't submit the form
						break; // select the value on enter
				case 27: $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration'));
						break; // hide on escape
				case 33: $.datepicker._adjustDate(e.target, (e.ctrlKey ?
							-$.datepicker._get(inst, 'stepBigMonths') :
							-$.datepicker._get(inst, 'stepMonths')), 'M');
						break; // previous month/year on page up/+ ctrl
				case 34: $.datepicker._adjustDate(e.target, (e.ctrlKey ?
							+$.datepicker._get(inst, 'stepBigMonths') :
							+$.datepicker._get(inst, 'stepMonths')), 'M');
						break; // next month/year on page down/+ ctrl
				case 35: if (e.ctrlKey) $.datepicker._clearDate(e.target);
						handled = e.ctrlKey;
						break; // clear on ctrl+end
				case 36: if (e.ctrlKey) $.datepicker._gotoToday(e.target);
						handled = e.ctrlKey;
						break; // current on ctrl+home
				case 37: if (e.ctrlKey) $.datepicker._adjustDate(e.target, -1, 'D');
						handled = e.ctrlKey;
						break; // -1 day on ctrl+left
				case 38: if (e.ctrlKey) $.datepicker._adjustDate(e.target, -7, 'D');
						handled = e.ctrlKey;
						break; // -1 week on ctrl+up
				case 39: if (e.ctrlKey) $.datepicker._adjustDate(e.target, +1, 'D');
						handled = e.ctrlKey;
						break; // +1 day on ctrl+right
				case 40: if (e.ctrlKey) $.datepicker._adjustDate(e.target, +7, 'D');
						handled = e.ctrlKey;
						break; // +1 week on ctrl+down
				default: handled = false;
			}
		else if (e.keyCode == 36 && e.ctrlKey) // display the date picker on ctrl+home
			$.datepicker._showDatepicker(this);
		else
			handled = false;
		if (handled) {
			e.preventDefault();
			e.stopPropagation();
		}
	},

	/* Filter entered characters - based on date format. */
	_doKeyPress: function(e) {
		var inst = $.data(e.target, PROP_NAME);
		var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));
		var chr = String.fromCharCode(e.charCode == undefined ? e.keyCode : e.charCode);
		return e.ctrlKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);
	},

	/* Pop-up the date picker for a given input field.
	   @param  input  element - the input field attached to the date picker or
	                  event - if triggered by focus */
	_showDatepicker: function(input) {
		input = input.target || input;
		if (input.nodeName.toLowerCase() != 'input') // find from button/image trigger
			input = $('input', input.parentNode)[0];
		if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here
			return;
		var inst = $.data(input, PROP_NAME);
		var beforeShow = $.datepicker._get(inst, 'beforeShow');
		extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {}));
		$.datepicker._hideDatepicker(null, '');
		$.datepicker._lastInput = input;
		$.datepicker._setDateFromField(inst);
		if ($.datepicker._inDialog) // hide cursor
			input.value = '';
		if (!$.datepicker._pos) { // position below input
			$.datepicker._pos = $.datepicker._findPos(input);
			$.datepicker._pos[1] += input.offsetHeight; // add the height
		}
		var isFixed = false;
		$(input).parents().each(function() {
			isFixed |= $(this).css('position') == 'fixed';
			return !isFixed;
		});
		if (isFixed && $.browser.opera) { // correction for Opera when fixed and scrolled
			$.datepicker._pos[0] -= document.documentElement.scrollLeft;
			$.datepicker._pos[1] -= document.documentElement.scrollTop;
		}
		var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
		$.datepicker._pos = null;
		inst.rangeStart = null;
		// determine sizing offscreen
		inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});
		$.datepicker._updateDatepicker(inst);
		// fix width for dynamic number of date pickers
		inst.dpDiv.width($.datepicker._getNumberOfMonths(inst)[1] *
			$('.ui-datepicker', inst.dpDiv[0])[0].offsetWidth);
		// and adjust position before showing
		offset = $.datepicker._checkOffset(inst, offset, isFixed);
		inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
			'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',
			left: offset.left + 'px', top: offset.top + 'px'});
		if (!inst.inline) {
			var showAnim = $.datepicker._get(inst, 'showAnim') || 'show';
			var duration = $.datepicker._get(inst, 'duration');
			var postProcess = function() {
				$.datepicker._datepickerShowing = true;
				if ($.browser.msie && parseInt($.browser.version) < 7) // fix IE < 7 select problems
					$('iframe.ui-datepicker-cover').css({width: inst.dpDiv.width() + 4,
						height: inst.dpDiv.height() + 4});
			};
			if ($.effects && $.effects[showAnim])
				inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
			else
				inst.dpDiv[showAnim](duration, postProcess);
			if (duration == '')
				postProcess();
			if (inst.input[0].type != 'hidden')
				inst.input[0].focus();
			$.datepicker._curInst = inst;
		}
	},

	/* Generate the date picker content. */
	_updateDatepicker: function(inst) {
		var dims = {width: inst.dpDiv.width() + 4,
			height: inst.dpDiv.height() + 4};
		inst.dpDiv.empty().append(this._generateHTML(inst)).
			find('iframe.ui-datepicker-cover').
			css({width: dims.width, height: dims.height});
		var numMonths = this._getNumberOfMonths(inst);
		inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +
			'Class']('ui-datepicker-multi');
		inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +
			'Class']('ui-datepicker-rtl');
		if (inst.input && inst.input[0].type != 'hidden')
			$(inst.input[0]).focus();
	},

	/* Check positioning to remain on screen. */
	_checkOffset: function(inst, offset, isFixed) {
		var pos = inst.input ? this._findPos(inst.input[0]) : null;
		var browserWidth = window.innerWidth || document.documentElement.clientWidth;
		var browserHeight = window.innerHeight || document.documentElement.clientHeight;
		var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
		var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
		// reposition date picker horizontally if outside the browser window
		if (this._get(inst, 'isRTL') || (offset.left + inst.dpDiv.width() - scrollX) > browserWidth)
			offset.left = Math.max((isFixed ? 0 : scrollX),
				pos[0] + (inst.input ? inst.input.width() : 0) - (isFixed ? scrollX : 0) - inst.dpDiv.width() -
				(isFixed && $.browser.opera ? document.documentElement.scrollLeft : 0));
		else
			offset.left -= (isFixed ? scrollX : 0);
		// reposition date picker vertically if outside the browser window
		if ((offset.top + inst.dpDiv.height() - scrollY) > browserHeight)
			offset.top = Math.max((isFixed ? 0 : scrollY),
				pos[1] - (isFixed ? scrollY : 0) - (this._inDialog ? 0 : inst.dpDiv.height()) -
				(isFixed && $.browser.opera ? document.documentElement.scrollTop : 0));
		else
			offset.top -= (isFixed ? scrollY : 0);
		return offset;
	},
	
	/* Find an object's position on the screen. */
	_findPos: function(obj) {
        while (obj && (obj.type == 'hidden' || obj.nodeType != 1)) {
            obj = obj.nextSibling;
        }
        var position = $(obj).offset();
	    return [position.left, position.top];
	},

	/* Hide the date picker from view.
	   @param  input  element - the input field attached to the date picker
	   @param  duration  string - the duration over which to close the date picker */
	_hideDatepicker: function(input, duration) {
		var inst = this._curInst;
		if (!inst || (input && inst != $.data(input, PROP_NAME)))
			return;
		var rangeSelect = this._get(inst, 'rangeSelect');
		if (rangeSelect && inst.stayOpen)
			this._selectDate('#' + inst.id, this._formatDate(inst,
				inst.currentDay, inst.currentMonth, inst.currentYear));
		inst.stayOpen = false;
		if (this._datepickerShowing) {
			duration = (duration != null ? duration : this._get(inst, 'duration'));
			var showAnim = this._get(inst, 'showAnim');
			var postProcess = function() {
				$.datepicker._tidyDialog(inst);
			};
			if (duration != '' && $.effects && $.effects[showAnim])
				inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'),
					duration, postProcess);
			else
				inst.dpDiv[(duration == '' ? 'hide' : (showAnim == 'slideDown' ? 'slideUp' :
					(showAnim == 'fadeIn' ? 'fadeOut' : 'hide')))](duration, postProcess);
			if (duration == '')
				this._tidyDialog(inst);
			var onClose = this._get(inst, 'onClose');
			if (onClose)
				onClose.apply((inst.input ? inst.input[0] : null),
					[this._getDate(inst), inst]);  // trigger custom callback
			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.dpDiv);
				}
			}
			this._inDialog = false;
		}
		this._curInst = null;
	},

	/* Tidy up after a dialog display. */
	_tidyDialog: function(inst) {
		inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker');
		$('.' + this._promptClass, inst.dpDiv).remove();
	},

	/* Close date picker if clicked elsewhere. */
	_checkExternalClick: function(event) {
		if (!$.datepicker._curInst)
			return;
		var $target = $(event.target);
		if (($target.parents('#' + $.datepicker._mainDivId).length == 0) &&
				!$target.hasClass($.datepicker.markerClassName) &&
				!$target.hasClass($.datepicker._triggerClass) &&
				$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI))
			$.datepicker._hideDatepicker(null, '');
	},

	/* Adjust one of the date sub-fields. */
	_adjustDate: function(id, offset, period) {
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		this._adjustInstDate(inst, offset, period);
		this._updateDatepicker(inst);
	},

	/* Action for current link. */
	_gotoToday: function(id) {
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		if (this._get(inst, 'gotoCurrent') && inst.currentDay) {
			inst.selectedDay = inst.currentDay;
			inst.drawMonth = inst.selectedMonth = inst.currentMonth;
			inst.drawYear = inst.selectedYear = inst.currentYear;
		}
		else {
		var date = new Date();
		inst.selectedDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = date.getFullYear();
		}
		this._notifyChange(inst);
		this._adjustDate(target);
	},

	/* Action for selecting a new month/year. */
	_selectMonthYear: function(id, select, period) {
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		inst._selectingMonthYear = false;
		inst['selected' + (period == 'M' ? 'Month' : 'Year')] =
		inst['draw' + (period == 'M' ? 'Month' : 'Year')] =
			parseInt(select.options[select.selectedIndex].value);
		this._notifyChange(inst);
		this._adjustDate(target);
	},

	/* Restore input focus after not changing month/year. */
	_clickMonthYear: function(id) {
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		if (inst.input && inst._selectingMonthYear && !$.browser.msie)
			inst.input[0].focus();
		inst._selectingMonthYear = !inst._selectingMonthYear;
	},

	/* Action for changing the first week day. */
	_changeFirstDay: function(id, day) {
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		inst.settings.firstDay = day;
		this._updateDatepicker(inst);
	},

	/* Action for selecting a day. */
	_selectDay: function(id, month, year, td) {
		if ($(td).hasClass(this._unselectableClass))
			return;
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		var rangeSelect = this._get(inst, 'rangeSelect');
		if (rangeSelect) {
			inst.stayOpen = !inst.stayOpen;
			if (inst.stayOpen) {
				$('.ui-datepicker td', inst.dpDiv).removeClass(this._currentClass);
				$(td).addClass(this._currentClass);
			} 
		}
		inst.selectedDay = inst.currentDay = $('a', td).html();
		inst.selectedMonth = inst.currentMonth = month;
		inst.selectedYear = inst.currentYear = year;
		if (inst.stayOpen) {
			inst.endDay = inst.endMonth = inst.endYear = null;
		}
		else if (rangeSelect) {
			inst.endDay = inst.currentDay;
			inst.endMonth = inst.currentMonth;
			inst.endYear = inst.currentYear;
		}
		this._selectDate(id, this._formatDate(inst,
			inst.currentDay, inst.currentMonth, inst.currentYear));
		if (inst.stayOpen) {
			inst.rangeStart = new Date(inst.currentYear, inst.currentMonth, inst.currentDay);
			this._updateDatepicker(inst);
		}
		else if (rangeSelect) {
			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);
		}
	},

	/* Erase the input field and hide the date picker. */
	_clearDate: function(id) {
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		if (this._get(inst, 'mandatory'))
			return;
		inst.stayOpen = false;
		inst.endDay = inst.endMonth = inst.endYear = inst.rangeStart = null;
		this._selectDate(target, '');
	},

	/* Update the input field with the selected date. */
	_selectDate: function(id, dateStr) {
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
		if (this._get(inst, 'rangeSelect') && dateStr)
			dateStr = (inst.rangeStart ? this._formatDate(inst, inst.rangeStart) :
				dateStr) + this._get(inst, 'rangeSeparator') + dateStr;
		if (inst.input)
			inst.input.val(dateStr);
		this._updateAlternate(inst);
		var onSelect = this._get(inst, 'onSelect');
		if (onSelect)
			onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback
		else if (inst.input)
			inst.input.trigger('change'); // fire the change event
		if (inst.inline)
			this._updateDatepicker(inst);
		else if (!inst.stayOpen) {
			this._hideDatepicker(null, this._get(inst, 'duration'));
			this._lastInput = inst.input[0];
			if (typeof(inst.input[0]) != 'object')
				inst.input[0].focus(); // restore focus
			this._lastInput = null;
		}
	},
	
	/* Update any alternate field to synchronise with the main field. */
	_updateAlternate: function(inst) {
		var altField = this._get(inst, 'altField');
		if (altField) { // update alternate field too
			var altFormat = this._get(inst, 'altFormat');
			var date = this._getDate(inst);
			dateStr = (isArray(date) ? (!date[0] && !date[1] ? '' :
				this.formatDate(altFormat, date[0], this._getFormatConfig(inst)) +
				this._get(inst, 'rangeSeparator') + this.formatDate(
				altFormat, date[1] || date[0], this._getFormatConfig(inst))) :
				this.formatDate(altFormat, date, this._getFormatConfig(inst)));
			$(altField).each(function() { $(this).val(dateStr); });
		}
	},

	/* Set as beforeShowDay function to prevent selection of weekends.
	   @param  date  Date - the date to customise
	   @return [boolean, string] - is this date selectable?, what is its CSS class? */
	noWeekends: function(date) {
		var day = date.getDay();
		return [(day > 0 && day < 6), ''];
	},
	
	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
	   @param  date  Date - the date to get the week for
	   @return  number - the number of the week within the year that contains this date */
	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); // First week always contains 4 Jan
		var firstDay = firstMon.getDay() || 7; // Day of week: Mon = 1, ..., Sun = 7
		firstMon.setDate(firstMon.getDate() + 1 - firstDay); // Preceding Monday
		if (firstDay < 4 && checkDate < firstMon) { // Adjust first three days in year if necessary
			checkDate.setDate(checkDate.getDate() - 3); // Generate for previous year
			return $.datepicker.iso8601Week(checkDate);
		} else if (checkDate > new Date(checkDate.getFullYear(), 12 - 1, 28)) { // Check last three days in year
			firstDay = new Date(checkDate.getFullYear() + 1, 1 - 1, 4).getDay() || 7;
			if (firstDay > 4 && (checkDate.getDay() || 7) < firstDay - 3) { // Adjust if necessary
				checkDate.setDate(checkDate.getDate() + 3); // Generate for next year
				return $.datepicker.iso8601Week(checkDate);
			}
		}
		return Math.floor(((checkDate - firstMon) / 86400000) / 7) + 1; // Weeks to given date
	},
	
	/* Provide status text for a particular date.
	   @param  date  the date to get the status for
	   @param  inst  the current datepicker instance
	   @return  the status display text for this date */
	dateStatus: function(date, inst) {
		return $.datepicker.formatDate($.datepicker._get(inst, 'dateStatus'),
			date, $.datepicker._getFormatConfig(inst));
	},

	/* Parse a string value into a date object.
	   See formatDate below for the possible formats.

	   @param  format    string - the expected format of the date
	   @param  value     string - the date in the above format
	   @param  settings  Object - attributes include:
	                     shortYearCutoff  number - the cutoff year for determining the century (optional)
	                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)
	                     dayNames         string[7] - names of the days from Sunday (optional)
	                     monthNamesShort  string[12] - abbreviated names of the months (optional)
	                     monthNames       string[12] - names of the months (optional)
	   @return  Date - the extracted date value or null if value is blank */
	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 doy = -1;
		var literal = false;
		// Check whether a format character is doubled
		var lookAhead = function(match) {
			var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
			if (matches)
				iFormat++;
			return matches;	
		};
		// Extract a number from the string value
		var getNumber = function(match) {
			lookAhead(match);
			var origSize = (match == '@' ? 14 : (match == 'y' ? 4 : (match == 'o' ? 3 : 2)));
			var size = origSize;
			var num = 0;
			while (size > 0 && iValue < value.length &&
					value.charAt(iValue) >= '0' && value.charAt(iValue) <= '9') {
				num = num * 10 + parseInt(value.charAt(iValue++));
				size--;
			}
			if (size == origSize)
				throw 'Missing number at position ' + iValue;
			return num;
		};
		// Extract a name from the string value and convert to an index
		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;
		};
		// Confirm that a literal character matches the string value
		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 'o':
						doy = getNumber('o');
						break;
					case 'm': 
						month = getNumber('m');
						break;
					case 'M':
						month = getName('M', monthNamesShort, monthNames); 
						break;
					case 'y':
						year = getNumber('y');
						break;
					case '@':
						var date = new Date(getNumber('@'));
						year = date.getFullYear();
						month = date.getMonth() + 1;
						day = date.getDate();
						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);
		if (doy > -1) {
			month = 1;
			day = doy;
			do {
				var dim = this._getDaysInMonth(year, month - 1);
				if (day <= dim)
					break;
				month++;
				day -= dim;
			} while (true);
		}
		var date = new Date(year, month - 1, day);
		if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)
			throw 'Invalid date'; // E.g. 31/02/*
		return date;
	},

	/* Standard date formats. */
	ATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)
	COOKIE: 'D, dd M yy',
	ISO_8601: 'yy-mm-dd',
	RFC_822: 'D, d M y',
	RFC_850: 'DD, dd-M-y',
	RFC_1036: 'D, d M y',
	RFC_1123: 'D, d M yy',
	RFC_2822: 'D, d M yy',
	RSS: 'D, d M y', // RFC 822
	TIMESTAMP: '@',
	W3C: 'yy-mm-dd', // ISO 8601

	/* Format a date object into a string value.
	   The format can be combinations of the following:
	   d  - day of month (no leading zero)
	   dd - day of month (two digit)
	   o  - day of year (no leading zeros)
	   oo - day of year (three digit)
	   D  - day name short
	   DD - day name long
	   m  - month of year (no leading zero)
	   mm - month of year (two digit)
	   M  - month name short
	   MM - month name long
	   y  - year (two digit)
	   yy - year (four digit)
	   @ - Unix timestamp (ms since 01/01/1970)
	   '...' - literal text
	   '' - single quote

	   @param  format    string - the desired format of the date
	   @param  date      Date - the date value to format
	   @param  settings  Object - attributes include:
	                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)
	                     dayNames         string[7] - names of the days from Sunday (optional)
	                     monthNamesShort  string[12] - abbreviated names of the months (optional)
	                     monthNames       string[12] - names of the months (optional)
	   @return  string - the date in the above format */
	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;
		// Check whether a format character is doubled
		var lookAhead = function(match) {
			var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
			if (matches)
				iFormat++;
			return matches;	
		};
		// Format a number, with leading zero if necessary
		var formatNumber = function(match, value, len) {
			var num = '' + value;
			if (lookAhead(match))
				while (num.length < len)
					num = '0' + num;
			return num;
		};
		// Format a name, short or long as requested
		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(), 2);
							break;
						case 'D': 
							output += formatName('D', date.getDay(), dayNamesShort, dayNames);
							break;
						case 'o':
							var doy = date.getDate();
							for (var m = date.getMonth() - 1; m >= 0; m--)
								doy += this._getDaysInMonth(date.getFullYear(), m);
							output += formatNumber('o', doy, 3);
							break;
						case 'm': 
							output += formatNumber('m', date.getMonth() + 1, 2);
							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 '@':
							output += date.getTime(); 
							break;
						case "'":
							if (lookAhead("'"))
								output += "'";
							else
								literal = true;
							break;
						default:
							output += format.charAt(iFormat);
					}
			}
		return output;
	},

	/* Extract all possible characters from the date format. */
	_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': case 'm': case 'y': case '@':
						chars += '0123456789'; 
						break;
					case 'D': case 'M':
						return null; // Accept anything
					case "'":
						if (lookAhead("'"))
							chars += "'";
						else
							literal = true;
						break;
					default:
						chars += format.charAt(iFormat);
				}
		return chars;
	},

	/* Get a setting value, defaulting if necessary. */
	_get: function(inst, name) {
		return inst.settings[name] !== undefined ?
			inst.settings[name] : this._defaults[name];
	},

	/* Parse existing date and initialise date picker. */
	_setDateFromField: function(inst) {
		var dateFormat = this._get(inst, 'dateFormat');
		var dates = inst.input ? inst.input.val().split(this._get(inst, 'rangeSeparator')) : null; 
		inst.endDay = inst.endMonth = inst.endYear = null;
		var date = defaultDate = this._getDefaultDate(inst);
		if (dates.length > 0) {
			var settings = this._getFormatConfig(inst);
			if (dates.length > 1) {
				date = this.parseDate(dateFormat, dates[1], settings) || defaultDate;
				inst.endDay = date.getDate();
				inst.endMonth = date.getMonth();
				inst.endYear = date.getFullYear();
			}
			try {
				date = this.parseDate(dateFormat, dates[0], settings) || defaultDate;
			} catch (e) {
				this.log(e);
				date = defaultDate;
			}
		}
		inst.selectedDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = date.getFullYear();
		inst.currentDay = (dates[0] ? date.getDate() : 0);
		inst.currentMonth = (dates[0] ? date.getMonth() : 0);
		inst.currentYear = (dates[0] ? date.getFullYear() : 0);
		this._adjustInstDate(inst);
	},
	
	/* Retrieve the default date shown on opening. */
	_getDefaultDate: function(inst) {
		var date = this._determineDate(this._get(inst, 'defaultDate'), new Date());
		var minDate = this._getMinMaxDate(inst, 'min', true);
		var maxDate = this._getMinMaxDate(inst, 'max');
		date = (minDate && date < minDate ? minDate : date);
		date = (maxDate && date > maxDate ? maxDate : date);
		return date;
	},

	/* A date may be specified as an exact value or a relative one. */
	_determineDate: function(date, defaultDate) {
		var offsetNumeric = function(offset) {
			var date = new Date();
			date.setUTCDate(date.getUTCDate() + offset);
			return date;
		};
		var offsetString = function(offset, getDaysInMonth) {
			var date = new Date();
			var year = date.getFullYear();
			var month = date.getMonth();
			var day = date.getDate();
			var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;
			var matches = pattern.exec(offset);
			while (matches) {
				switch (matches[2] || 'd') {
					case 'd' : case 'D' :
						day += parseInt(matches[1]); break;
					case 'w' : case 'W' :
						day += parseInt(matches[1]) * 7; break;
					case 'm' : case 'M' :
						month += parseInt(matches[1]); 
						day = Math.min(day, getDaysInMonth(year, month));
						break;
					case 'y': case 'Y' :
						year += parseInt(matches[1]);
						day = Math.min(day, getDaysInMonth(year, month));
						break;
				}
				matches = pattern.exec(offset);
			}
			return new Date(year, month, day);
		};
		return (date == null ? defaultDate :
			(typeof date == 'string' ? offsetString(date, this._getDaysInMonth) :
			(typeof date == 'number' ? offsetNumeric(date) : date)));
	},

	/* Set the date(s) directly. */
	_setDate: function(inst, date, endDate) {
		var clear = !(date);
		var origMonth = inst.selectedMonth;
		var origYear = inst.selectedYear;
		date = this._determineDate(date, new Date());
		inst.selectedDay = inst.currentDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = inst.currentMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = inst.currentYear = date.getFullYear();
		if (this._get(inst, 'rangeSelect')) {
			if (endDate) {
				endDate = this._determineDate(endDate, null);
				inst.endDay = endDate.getDate();
				inst.endMonth = endDate.getMonth();
				inst.endYear = endDate.getFullYear();
			} else {
				inst.endDay = inst.currentDay;
				inst.endMonth = inst.currentMonth;
				inst.endYear = inst.currentYear;
			}
		}
		if (origMonth != inst.selectedMonth || origYear != inst.selectedYear)
			this._notifyChange(inst);
		this._adjustInstDate(inst);
		if (inst.input)
			inst.input.val(clear ? '' : this._formatDate(inst) +
				(!this._get(inst, 'rangeSelect') ? '' : this._get(inst, 'rangeSeparator') +
				this._formatDate(inst, inst.endDay, inst.endMonth, inst.endYear)));
	},

	/* Retrieve the date(s) directly. */
	_getDate: function(inst) {
		var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :
			new Date(inst.currentYear, inst.currentMonth, inst.currentDay));
		if (this._get(inst, 'rangeSelect')) {
			return [inst.rangeStart || startDate,
				(!inst.endYear ? inst.rangeStart || startDate :
				new Date(inst.endYear, inst.endMonth, inst.endDay))];
		} else
			return startDate;
	},

	/* Generate the HTML for the current state of the date picker. */
	_generateHTML: function(inst) {
		var today = new Date();
		today = new Date(today.getFullYear(), today.getMonth(), today.getDate()); // clear time
		var showStatus = this._get(inst, 'showStatus');
		var initStatus = this._get(inst, 'initStatus') || '&#xa0;';
		var isRTL = this._get(inst, 'isRTL');
		// build the date picker HTML
		var clear = (this._get(inst, 'mandatory') ? '' :
			'<div class="ui-datepicker-clear"><a onclick="jQuery.datepicker._clearDate(\'#' + inst.id + '\');"' +
			this._addStatus(showStatus, inst.id, this._get(inst, 'clearStatus'), initStatus) + '>' +
			this._get(inst, 'clearText') + '</a></div>');
		var controls = '<div class="ui-datepicker-control">' + (isRTL ? '' : clear) +
			'<div class="ui-datepicker-close"><a onclick="jQuery.datepicker._hideDatepicker();"' +
			this._addStatus(showStatus, inst.id, this._get(inst, 'closeStatus'), initStatus) + '>' +
			this._get(inst, 'closeText') + '</a></div>' + (isRTL ? clear : '')  + '</div>';
		var prompt = this._get(inst, 'prompt');
		var closeAtTop = this._get(inst, 'closeAtTop');
		var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');
		var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');
		var showBigPrevNext = this._get(inst, 'showBigPrevNext');
		var numMonths = this._getNumberOfMonths(inst);
		var showCurrentAtPos = this._get(inst, 'showCurrentAtPos');
		var stepMonths = this._get(inst, 'stepMonths');
		var stepBigMonths = this._get(inst, 'stepBigMonths');
		var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);
		var currentDate = (!inst.currentDay ? new Date(9999, 9, 9) :
			new Date(inst.currentYear, inst.currentMonth, inst.currentDay));
		var minDate = this._getMinMaxDate(inst, 'min', true);
		var maxDate = this._getMinMaxDate(inst, 'max');
		var drawMonth = inst.drawMonth - showCurrentAtPos;
		var drawYear = inst.drawYear;
		if (drawMonth < 0) {
			drawMonth += 12;
			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--;
				}
			}
		}
		// controls and links
		var prevText = this._get(inst, 'prevText');
		prevText = (!navigationAsDateFormat ? prevText : this.formatDate(
			prevText, new Date(drawYear, drawMonth - stepMonths, 1), this._getFormatConfig(inst)));
		var prevBigText = (showBigPrevNext ? this._get(inst, 'prevBigText') : '');
		prevBigText = (!navigationAsDateFormat ? prevBigText : this.formatDate(
			prevBigText, new Date(drawYear, drawMonth - stepBigMonths, 1), this._getFormatConfig(inst)));
		var prev = '<div class="ui-datepicker-prev">' + (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? 
			(showBigPrevNext ? '<a onclick="jQuery.datepicker._adjustDate(\'#' + inst.id + '\', -' + stepBigMonths + ', \'M\');"' +
			this._addStatus(showStatus, inst.id, this._get(inst, 'prevBigStatus'), initStatus) + '>' + prevBigText + '</a>' : '') +
			'<a onclick="jQuery.datepicker._adjustDate(\'#' + inst.id + '\', -' + stepMonths + ', \'M\');"' +
			this._addStatus(showStatus, inst.id, this._get(inst, 'prevStatus'), initStatus) + '>' + prevText + '</a>' :
			(hideIfNoPrevNext ? '' : '<label>' + prevBigText + '</label><label>' + prevText + '</label>')) + '</div>';
		var nextText = this._get(inst, 'nextText');
		nextText = (!navigationAsDateFormat ? nextText : this.formatDate(
			nextText, new Date(drawYear, drawMonth + stepMonths, 1), this._getFormatConfig(inst)));
		var nextBigText = (showBigPrevNext ? this._get(inst, 'nextBigText') : '');
		nextBigText = (!navigationAsDateFormat ? nextBigText : this.formatDate(
			nextBigText, new Date(drawYear, drawMonth + stepBigMonths, 1), this._getFormatConfig(inst)));
		var next = '<div class="ui-datepicker-next">' + (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
			'<a onclick="jQuery.datepicker._adjustDate(\'#' + inst.id + '\', +' + stepMonths + ', \'M\');"' +
			this._addStatus(showStatus, inst.id, this._get(inst, 'nextStatus'), initStatus) + '>' + nextText + '</a>' +
			(showBigPrevNext ? '<a onclick="jQuery.datepicker._adjustDate(\'#' + inst.id + '\', +' + stepBigMonths + ', \'M\');"' +
			this._addStatus(showStatus, inst.id, this._get(inst, 'nextBigStatus'), initStatus) + '>' + nextBigText + '</a>' : '') :
			(hideIfNoPrevNext ? '' : '<label>' + nextText + '</label><label>' + nextBigText + '</label>')) + '</div>';
		var currentText = this._get(inst, 'currentText');
		var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today); 
		currentText = (!navigationAsDateFormat ? currentText :
			this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
		var html = (prompt ? '<div class="' + this._promptClass + '">' + prompt + '</div>' : '') +
			(closeAtTop && !inst.inline ? controls : '') +
			'<div class="ui-datepicker-links">' + (isRTL ? next : prev) +
			(this._isInRange(inst, gotoDate) ? '<div class="ui-datepicker-current">' +
			'<a onclick="jQuery.datepicker._gotoToday(\'#' + inst.id + '\');"' +
			this._addStatus(showStatus, inst.id, this._get(inst, 'currentStatus'), initStatus) + '>' +
			currentText + '</a></div>' : '') + (isRTL ? prev : next) + '</div>';
		var firstDay = this._get(inst, 'firstDay');
		var changeFirstDay = this._get(inst, 'changeFirstDay');
		var dayNames = this._get(inst, 'dayNames');
		var dayNamesShort = this._get(inst, 'dayNamesShort');
		var dayNamesMin = this._get(inst, 'dayNamesMin');
		var monthNames = this._get(inst, 'monthNames');
		var beforeShowDay = this._get(inst, 'beforeShowDay');
		var highlightWeek = this._get(inst, 'highlightWeek');
		var showOtherMonths = this._get(inst, 'showOtherMonths');
		var showWeeks = this._get(inst, 'showWeeks');
		var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;
		var weekStatus = this._get(inst, 'weekStatus');
		var status = (showStatus ? this._get(inst, 'dayStatus') || initStatus : '');
		var dateStatus = this._get(inst, 'statusForDate') || this.dateStatus;
		var endDate = inst.endDay ? new Date(inst.endYear, inst.endMonth, inst.endDay) : currentDate;
		for (var row = 0; row < numMonths[0]; row++)
			for (var col = 0; col < numMonths[1]; col++) {
				var selectedDate = new Date(drawYear, drawMonth, inst.selectedDay);
				html += '<div class="ui-datepicker-one-month' + (col == 0 ? ' ui-datepicker-new-row' : '') + '">' +
					this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
					selectedDate, row > 0 || col > 0, showStatus, initStatus, monthNames) + // draw month headers
					'<table class="ui-datepicker" cellpadding="0" cellspacing="0"><thead>' + 
					'<tr class="ui-datepicker-title-row">' +
					(showWeeks ? '<td' + this._addStatus(showStatus, inst.id, weekStatus, initStatus) + '>' +
					this._get(inst, 'weekHeader') + '</td>' : '');
				for (var dow = 0; dow < 7; dow++) { // days of the week
					var day = (dow + firstDay) % 7;
					var dayStatus = (status.indexOf('DD') > -1 ? status.replace(/DD/, dayNames[day]) :
						status.replace(/D/, dayNamesShort[day]));
					html += '<td' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end-cell"' : '') + '>' +
						(!changeFirstDay ? '<span' :
						'<a onclick="jQuery.datepicker._changeFirstDay(\'#' + inst.id + '\', ' + day + ');"') + 
						this._addStatus(showStatus, inst.id, dayStatus, initStatus) + ' title="' + dayNames[day] + '">' +
						dayNamesMin[day] + (changeFirstDay ? '</a>' : '</span>') + '</td>';
				}
				html += '</tr></thead><tbody>';
				var daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
				if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)
					inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
				var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
				var tzDate = new Date(drawYear, drawMonth, 1 - leadDays);
				var utcDate = new Date(drawYear, drawMonth, 1 - leadDays);
				var printDate = utcDate;
				var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7)); // calculate the number of rows to generate
				for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows
					html += '<tr class="ui-datepicker-days-row">' +
						(showWeeks ? '<td class="ui-datepicker-week-col"' +
						this._addStatus(showStatus, inst.id, weekStatus, initStatus) + '>' +
						calculateWeek(printDate) + '</td>' : '');
					for (var dow = 0; dow < 7; dow++) { // create date picker days
						var daySettings = (beforeShowDay ?
							beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);
						var otherMonth = (printDate.getMonth() != drawMonth);
						var unselectable = otherMonth || !daySettings[0] ||
							(minDate && printDate < minDate) || (maxDate && printDate > maxDate);
						html += '<td class="ui-datepicker-days-cell' +
							((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end-cell' : '') + // highlight weekends
							(otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months
							(printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth ?
							' ui-datepicker-days-cell-over' : '') + // highlight selected day
							(unselectable ? ' ' + this._unselectableClass : '') +  // highlight unselectable days
							(otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates
							(printDate.getTime() >= currentDate.getTime() && printDate.getTime() <= endDate.getTime() ?  // in current range
							' ' + this._currentClass : '') + // highlight selected day
							(printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + // highlight today (if different)
							((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') + // cell title
							(unselectable ? (highlightWeek ? ' onmouseover="jQuery(this).parent().addClass(\'ui-datepicker-week-over\');"' + // highlight selection week
							' onmouseout="jQuery(this).parent().removeClass(\'ui-datepicker-week-over\');"' : '') : // unhighlight selection week
							' onmouseover="jQuery(this).addClass(\'ui-datepicker-days-cell-over\')' + // highlight selection
							(highlightWeek ? '.parent().addClass(\'ui-datepicker-week-over\')' : '') + ';' + // highlight selection week
							(!showStatus || (otherMonth && !showOtherMonths) ? '' : 'jQuery(\'#ui-datepicker-status-' +
							inst.id + '\').html(\'' + (dateStatus.apply((inst.input ? inst.input[0] : null),
							[printDate, inst]) || initStatus) +'\');') + '"' +
							' onmouseout="jQuery(this).removeClass(\'ui-datepicker-days-cell-over\')' + // unhighlight selection
							(highlightWeek ? '.parent().removeClass(\'ui-datepicker-week-over\')' : '') + ';' + // unhighlight selection week
							(!showStatus || (otherMonth && !showOtherMonths) ? '' : 'jQuery(\'#ui-datepicker-status-' +
							inst.id + '\').html(\'' + initStatus + '\');') + '" onclick="jQuery.datepicker._selectDay(\'#' +
							inst.id + '\',' + drawMonth + ',' + drawYear + ', this);"') + '>' + // actions
							(otherMonth ? (showOtherMonths ? printDate.getDate() : '&#xa0;') : // display for other months
							(unselectable ? printDate.getDate() : '<a>' + printDate.getDate() + '</a>')) + '</td>'; // display for this month
						tzDate.setDate(tzDate.getDate() + 1);
						utcDate.setUTCDate(utcDate.getUTCDate() + 1);
						printDate = (tzDate > utcDate ? tzDate : utcDate);
					}
					html += '</tr>';
				}
				drawMonth++;
				if (drawMonth > 11) {
					drawMonth = 0;
					drawYear++;
				}
				html += '</tbody></table></div>';
			}
		html += (showStatus ? '<div style="clear: both;"></div><div id="ui-datepicker-status-' + inst.id + 
			'" class="ui-datepicker-status">' + initStatus + '</div>' : '') +
			(!closeAtTop && !inst.inline ? controls : '') +
			'<div style="clear: both;"></div>' + 
			($.browser.msie && parseInt($.browser.version) < 7 && !inst.inline ? 
			'<iframe src="javascript:false;" class="ui-datepicker-cover"></iframe>' : '');
		return html;
	},
	
	/* Generate the month and year header. */
	_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
			selectedDate, secondary, showStatus, initStatus, monthNames) {
		minDate = (inst.rangeStart && minDate && selectedDate < minDate ? selectedDate : minDate);
		var showMonthAfterYear = this._get(inst, 'showMonthAfterYear');
		var html = '<div class="ui-datepicker-header">';
		var monthHtml = '';
		// month selection
		if (secondary || !this._get(inst, 'changeMonth'))
			monthHtml += monthNames[drawMonth] + '&#xa0;';
		else {
			var inMinYear = (minDate && minDate.getFullYear() == drawYear);
			var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);
			monthHtml += '<select class="ui-datepicker-new-month" ' +
				'onchange="jQuery.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'M\');" ' +
				'onclick="jQuery.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
				this._addStatus(showStatus, inst.id, this._get(inst, 'monthStatus'), initStatus) + '>';
			for (var month = 0; month < 12; month++) {
				if ((!inMinYear || month >= minDate.getMonth()) &&
						(!inMaxYear || month <= maxDate.getMonth()))
					monthHtml += '<option value="' + month + '"' +
						(month == drawMonth ? ' selected="selected"' : '') +
						'>' + monthNames[month] + '</option>';
			}
			monthHtml += '</select>';
		}
		if (!showMonthAfterYear)
			html += monthHtml;
		// year selection
		if (secondary || !this._get(inst, 'changeYear'))
			html += drawYear;
		else {
			// determine range of years to display
			var years = this._get(inst, '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 = endYear = new Date().getFullYear();
				year += parseInt(years[0], 10);
				endYear += 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="ui-datepicker-new-year" ' +
				'onchange="jQuery.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' +
				'onclick="jQuery.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
				this._addStatus(showStatus, inst.id, this._get(inst, 'yearStatus'), initStatus) + '>';
			for (; year <= endYear; year++) {
				html += '<option value="' + year + '"' +
					(year == drawYear ? ' selected="selected"' : '') +
					'>' + year + '</option>';
			}
			html += '</select>';
		}
		if (showMonthAfterYear)
			html += monthHtml;
		html += '</div>'; // Close datepicker_header
		return html;
	},

	/* Provide code to set and clear the status panel. */
	_addStatus: function(showStatus, id, text, initStatus) {
		return (showStatus ? ' onmouseover="jQuery(\'#ui-datepicker-status-' + id +
			'\').html(\'' + (text || initStatus) + '\');" ' +
			'onmouseout="jQuery(\'#ui-datepicker-status-' + id +
			'\').html(\'' + initStatus + '\');"' : '');
	},

	/* Adjust one of the date sub-fields. */
	_adjustInstDate: function(inst, offset, period) {
		var year = inst.drawYear + (period == 'Y' ? offset : 0);
		var month = inst.drawMonth + (period == 'M' ? offset : 0);
		var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +
			(period == 'D' ? offset : 0);
		var date = new Date(year, month, day);
		// ensure it is within the bounds set
		var minDate = this._getMinMaxDate(inst, 'min', true);
		var maxDate = this._getMinMaxDate(inst, 'max');
		date = (minDate && date < minDate ? minDate : date);
		date = (maxDate && date > maxDate ? maxDate : date);
		inst.selectedDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = date.getFullYear();
		if (period == 'M' || period == 'Y')
			this._notifyChange(inst);
	},

	/* Notify change of month/year. */
	_notifyChange: function(inst) {
		var onChange = this._get(inst, 'onChangeMonthYear');
		if (onChange)
			onChange.apply((inst.input ? inst.input[0] : null),
				[new Date(inst.selectedYear, inst.selectedMonth, 1), inst]);
	},
	
	/* Determine the number of months to show. */
	_getNumberOfMonths: function(inst) {
		var numMonths = this._get(inst, 'numberOfMonths');
		return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));
	},

	/* Determine the current maximum date - ensure no time components are set - may be overridden for a range. */
	_getMinMaxDate: function(inst, minMax, checkRange) {
		var date = this._determineDate(this._get(inst, minMax + 'Date'), null);
		if (date) {
			date.setHours(0);
			date.setMinutes(0);
			date.setSeconds(0);
			date.setMilliseconds(0);
		}
		return (!checkRange || !inst.rangeStart ? date :
			(!date || inst.rangeStart > date ? inst.rangeStart : date));
	},

	/* Find the number of days in a given month. */
	_getDaysInMonth: function(year, month) {
		return 32 - new Date(year, month, 32).getDate();
	},

	/* Find the day of the week of the first of a month. */
	_getFirstDayOfMonth: function(year, month) {
		return new Date(year, month, 1).getDay();
	},

	/* Determines if we should allow a "next/prev" month display change. */
	_canAdjustMonth: function(inst, offset, curYear, curMonth) {
		var numMonths = this._getNumberOfMonths(inst);
		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(inst, date);
	},

	/* Is the given date in the accepted range? */
	_isInRange: function(inst, date) {
		// during range selection, use minimum of selected date and range start
		var newMinDate = (!inst.rangeStart ? null :
			new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay));
		newMinDate = (newMinDate && inst.rangeStart < newMinDate ? inst.rangeStart : newMinDate);
		var minDate = newMinDate || this._getMinMaxDate(inst, 'min');
		var maxDate = this._getMinMaxDate(inst, 'max');
		return ((!minDate || date >= minDate) && (!maxDate || date <= maxDate));
	},
	
	/* Provide the configuration settings for formatting/parsing. */
	_getFormatConfig: function(inst) {
		var shortYearCutoff = this._get(inst, 'shortYearCutoff');
		shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :
			new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
		return {shortYearCutoff: shortYearCutoff,
			dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),
			monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};
	},

	/* Format the given date for display. */
	_formatDate: function(inst, day, month, year) {
		if (!day) {
			inst.currentDay = inst.selectedDay;
			inst.currentMonth = inst.selectedMonth;
			inst.currentYear = inst.selectedYear;
		}
		var date = (day ? (typeof day == 'object' ? day : new Date(year, month, day)) :
			new Date(inst.currentYear, inst.currentMonth, inst.currentDay));
		return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));
	}
});

/* jQuery extend now ignores nulls! */
function extendRemove(target, props) {
	$.extend(target, props);
	for (var name in props)
		if (props[name] == null || props[name] == undefined)
			target[name] = props[name];
	return target;
};

/* Determine whether an object is an array. */
function isArray(a) {
	return (a && (($.browser.safari && typeof a == 'object' && a.length) ||
		(a.constructor && a.constructor.toString().match(/\Array\(\)/))));
};

/* Invoke the datepicker functionality.
   @param  options  string - a command, optionally followed by additional parameters or
                    Object - settings for attaching new datepicker functionality
   @return  jQuery object */
$.fn.datepicker = function(options){
	
	/* Initialise the date picker. */
	if (!$.datepicker.initialized) {
		$(document.body).append($.datepicker.dpDiv).
			mousedown($.datepicker._checkExternalClick);
		$.datepicker.initialized = true;
	}
	
	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(); // singleton instance
$.datepicker.initialized = false;

})(jQuery);
var poiS = {
	daba: { 'cities': new Array ( ), 'regions': new Array ( ), 'countries': new Array ( ) },
	fields: new Array ( ),
	results: new Array ( ),
	req: null,
	lastStr: '',
	lastSearch: null
};

function poiReq ( str )
{
	// hide results list!
		//poiS.fields['results'].style.display = 'none';

	var timestmp = (new Date ( )).getTime ( );

	if ( str.length >= 3 && timestmp - poiS.lastSearch >= 500 )
	{
		var data = 'mode=get&q=' + str;
		
		
		var couId = parseInt(document.getElementById('poisearch_country').value);
			data += '&countryid=' + ( couId > 0 ? couId : false );
		
		var regId = parseInt(document.getElementById('poisearch_region').value);
			data += '&regionid=' + ( regId > 0 ? regId : false );
			
		var citId = parseInt(document.getElementById('poisearch_city').value);
			data += '&cityid=' + ( citId > 0 ? citId : false );
		
		if ( data !== poiS.lastStr )
		{
			poiS.lastStr = data;
			poiS.lastSearch = timestmp;
			
			poiS.req.open ( 'POST', docRoot + 'sys/getpois.php', true );
			poiS.req.onreadystatechange = poiRes;
			poiS.req.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded" );
			poiS.req.send ( data );
		}
		else
		{
			// show results list!
				poiS.fields['results'].style.display = 'block';
		}
	}
}

function closePoiResults ( )
{
	// hide results list!
		poiS.fields['results'].style.display = 'none';
}

function poiRes ( res )
{
	// show results list!
		poiS.fields['results'].style.display = 'block';
	
	// hide all results lists
		document.getElementById('poisearch_results_hotels').style.display = 'none';
		document.getElementById('poisearch_results_countries').style.display = 'none';
		document.getElementById('poisearch_results_regions').style.display = 'none';
		document.getElementById('poisearch_results_cities').style.display = 'none';

	switch(poiS.req.readyState)
	{
		case 4:
			if ( poiS.req.status != 200 && poiS.req.status !== 0 )
			{
				// FEHLER!
			}
			else if ( poiS.req.status == 0 )
			{
				// do nothin!
			}
			else
			{
				
				var obj = eval ( '(' + poiS.req.responseText + ')' );
				
				if ( typeof ( obj ) == 'object' )
				{
					var hotels = typeof ( obj.hotels ) == 'object' && obj.hotels.length > 0 ? obj.hotels : false;
					var cities = typeof ( obj.cities ) == 'object' && obj.cities.length > 0 ? obj.cities : false;
					var regions = typeof ( obj.regions ) == 'object' && obj.regions.length > 0 ? obj.regions : false;
					var countries = typeof ( obj.countries ) == 'object' && obj.countries.length > 0 ? obj.countries : false;
					
					if ( hotels && reFuGe !== 'hotels' )
					{
						poiS.results['hotels'].innerHTML = '';
						document.getElementById('poi_hotels_count').innerHTML = hotels.length;
						for ( key in hotels )
						{
							var box = document.createElement ( 'A' );
								box.href = typeof ( hotels[key].uri ) == 'string' && hotels[key].uri.length > 0 ? hotels[key].uri : 'javascript:void(0);';
								box.className = 'result';
								box.innerHTML = hotels[key].label;
						
							poiAddResult ( poiS.results['hotels'], box );
						}
						
						document.getElementById('poisearch_results_hotels').style.display = 'block';
					}
					
					if ( cities )
					{
						poiS.daba['cities'] = cities;
					
						poiS.results['cities'].innerHTML = '';
						document.getElementById('poi_cities_count').innerHTML = cities.length;
						for ( key in cities )
						{
							if ( parseInt ( key ) > 0 )
							{
								var box = document.createElement ( 'A' );
									box.href = 'javascript:void(0);';
									box.className = 'result';
									
									box.ids = cities[key].countryid + ':' + cities[key].regionid + ':' + cities[key].cityid;
									
									box.innerHTML = cities[key].label + ' - <i>' + cities[key].country + '</i>';
									box.onclick = function ( )
									{
										var ids = this.ids.split ( ':' );
									
										var cityField = document.getElementById('geocitysubmitcheckbox');
										var choosenText = document.getElementById('choosencitytext');
										
											choosenText.innerHTML = '';
											cityField.value = ids[2];
											
											document.getElementById('poisearch_results').style.display = 'none';
									
										setPoiLoc ( this.ids );
										poiS.fields['query'].onkeyup ( );
									}
							
								poiAddResult ( poiS.results['cities'], box );
							}
						}
						
						document.getElementById('poisearch_results_cities').style.display = 'block';
					}
					
					if ( regions )
					{
						poiS.daba['regions'] = regions;
						
						poiS.results['regions'].innerHTML = '';
						document.getElementById('poi_regions_count').innerHTML = regions.length;
						for ( key in regions )
						{
							if ( parseInt ( key ) > 0 )
							{
								var box = document.createElement ( 'A' );
									box.href = 'javascript:void(0);';
									box.className = 'result';
									box.ids = regions[key].countryid + ':' + regions[key].regionid + ':0';
									box.innerHTML = regions[key].label + ' - ' + box.ids;
									box.onclick = function ( )
									{
										setPoiLoc ( this.ids );
										poiS.fields['query'].onkeyup ( );
									}
							
								poiAddResult ( poiS.results['regions'], box );
							}
						}
						
						document.getElementById('poisearch_results_regions').style.display = 'block';
					}
					
					if ( countries )
					{
						poiS.daba['countries'] = countries;
						
						poiS.results['countries'].innerHTML = '';
						document.getElementById('poi_countries_count').innerHTML = countries.length;
						for ( key in countries )
						{
							if ( parseInt ( key ) > 0 )
							{
								var box = document.createElement ( 'A' );
									box.href = 'javascript:void(0);';
									box.className = 'result';
									box.ids = countries[key].countryid + ':0:0';
									box.innerHTML = countries[key].label + ' - ' + box.ids;
									box.onclick = function ( )
									{
										setPoiLoc ( this.ids );
										poiS.fields['query'].onkeyup ( );
									}
							
								poiAddResult ( poiS.results['countries'], box );
							}
						}
						
						document.getElementById('poisearch_results_countries').style.display = 'block';
					}
				}
			}
			break;
		default:
			return false;
			break;
	}
}

function poiAddResult ( obj, box )
{
	obj.appendChild ( box );
}

function setPoiLoc ( ids )
{
	ids = ids.split ( ':' );
	
	var countryid = typeof ( ids[0] ) != 'undefined' ? parseInt ( ids[0] ) : false;
	var regionid = typeof ( ids[1] ) != 'undefined' ? parseInt ( ids[1] ) : false;
	var cityid = typeof ( ids[2] ) != 'undefined' ? parseInt ( ids[2] ) : false;
	
	document.getElementById('poisearch_country').value = countryid !== false && countryid >= 0 ? countryid : '';
	document.getElementById('poisearch_region').value = regionid !== false && regionid >= 0 ? regionid : '';
	document.getElementById('poisearch_city').value = cityid !== false && cityid >= 0 ? cityid : '';
	
	document.getElementById('poi_city_display').innerHTML = typeof ( poiS.daba['cities'][cityid] ) != 'undefined' ? poiS.daba['cities'][cityid]['label'] : __ ( 'noselection' );
	document.getElementById('poi_region_display').innerHTML = typeof ( poiS.daba['regions'][regionid] ) != 'undefined' ? poiS.daba['regions'][regionid]['label'] : __ ( 'noselection' );
	document.getElementById('poi_country_display').innerHTML = typeof ( poiS.daba['countries'][countryid] ) != 'undefined' ? poiS.daba['countries'][countryid]['label'] : __ ( 'noselection' );
	
	document.getElementById('choosencitytext').innerHTML = document.getElementById('poi_city_display').innerHTML;
	
	switch ( reFuGe )
	{
		case 'hotels':
			var obj = document.getElementById('enterhoteladdress');
			
			if ( typeof ( obj ) == 'object' && cityid > 0 )
			{
				obj.style.display = 'block';
			}
			break;
	}
}

function resetPoiSearch ( )
{
	initPoiSearch ( );
}

function initPoiSearch ( )
{
	var poisearch = document.getElementById ( 'poisearch' );
	
	if ( poisearch && typeof ( poisearch ) == 'object' )
	{
		document.getElementById('poi_city_display').innerHTML = __ ( 'noselection' );
		document.getElementById('poi_region_display').innerHTML = __ ( 'noselection' );
		document.getElementById('poi_country_display').innerHTML = __ ( 'noselection' );

		// initialize request object
			try { poiS.req = new XMLHttpRequest(); }
			catch (e) {
				try { poiS.req = new ActiveXObject("Msxml2.XMLHTTP"); }
				catch (e){
					try { poiS.req = new ActiveXObject("Microsoft.XMLHTTP"); }
					catch (failed) { poiS.req = null; }
				}
			}
			
			poiS.lastSearch = (new Date ( )).getTime ( );


		// initialize fields
			poiS.fields['query'] = document.getElementById('poisearch_queryfield');
			poiS.fields['country'] = document.getElementById('poisearch_country');
			poiS.fields['region'] = document.getElementById('poisearch_region');
			poiS.fields['city'] = document.getElementById('poisearch_city');
			
			poiS.fields['country'].value = '';
			poiS.fields['region'].value = '';
			poiS.fields['city'].value = '';

			poiS.results['hotels']  = document.getElementById('pois_hotels_results');
			poiS.results['countries'] = document.getElementById('pois_countries_results');
			poiS.results['regions'] = document.getElementById('pois_regions_results');
			poiS.results['cities'] = document.getElementById('pois_cities_results');
			
			if ( typeof ( poiS.fields['query'] ) == 'object' )
			{
				poiS.fields['results'] = document.getElementById('poisearch_results');
				//poiS.fields['results'].style.display = 'none';
				poiS.fields['query'].onkeyup = function ( )
				{
					poiReq ( this.value );
				}
				poiS.fields['query'].onfocus = function ( )
				{
					this.value = '';
				}
				poiS.fields['query'].onblur = function ( )
				{
					standard = __ ( 'standardvalue_poisearch_queryfield' );
					value = this.value;
					
					if ( value !== standard && value.length <= 0 )
					{
						value = standard
					}
					
					this.value = value;
				}
				
				poiS.fields['query'].value = __ ( 'standardvalue_poisearch_queryfield' );
				
				poiS.fields['query'].onkeydown = poiS.fields['query'].onkeyup;
			}
	}
}

$(document).ready(function() {
	var poisearch = document.getElementById ( 'poisearch' );
	
	if ( poisearch && typeof ( poisearch ) == 'object' )
	{
		initPoiSearch ( );
		
		switch ( reFuGe )
		{
			default:
				break;
				
			case 'hotels':
				initAddGeoCity ( );
				break;
		}
		
		var hoteladdress = document.getElementById('enterhoteladdress');
		var cityField = document.getElementById('geocitysubmitcheckbox');
		
		if ( cityField && typeof ( cityField ) == 'object' && parseInt ( cityField.value ) > 0 )
		{
			hoteladdress.style.display = 'block';
		}
	}
});

/**
* additional functions
**/
	var addGeoObjs = new Object ( );
	var addGeoReq = null;
	var addGeoTimeStmp = null;
	//alert ( addGeoObjs );

	// show addgeoform
		function showAddGeoForm ( )
		{
			var obj = document.getElementById('addgeoform');
				obj.style.display = obj.style.display == 'block' ? 'none' : 'block';
		}
		
	// recieve all needed data and check them per request
		function checkAddGeoData ( )
		{
			var timestmp = (new Date ( )).getTime ( );

			if ( addGeoTimeStmp <= timestmp - 300 || addGeoTimeStmp == null )
			{
				var data = 'mode=geoaddcheck';
					data += '&country=' + addGeoObjs.labels.country.value;
					data += '&region=' + addGeoObjs.labels.region.value;
					data += '&city=' + addGeoObjs.labels.city.value;
					data += '&q=false';
					
					
				// use data and send them
					addGeoReq.open ( 'POST', docRoot + 'sys/getpois.php', true );
					addGeoReq.onreadystatechange = addGeoReqResults;
					addGeoReq.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded" );
					addGeoReq.send ( data );
					
				addGeoTimeStmp = timestmp;
			}
		}
	
		function addGeoReqResults ( )
		{
			switch ( addGeoReq.readyState )
			{
				case 4:
					if ( addGeoReq.status != 200 && addGeoReq.status !== 0 )
					{
						// FEHLER!
					}
					else if ( addGeoReq.status == 0 )
					{
						// do nothin!
					}
					else
					{
						var obj = eval ( '(' + addGeoReq.responseText + ')' );
						
						if ( typeof ( obj.countries ) == 'object' && parseInt ( obj.countries.length ) > 0 && addGeoObjs.ids.country.value == '' )
						{
							addGeoObjs.results.country.innerHTML = '';
							for ( i in obj.countries )
							{
								if ( parseInt ( i ) > 0 )
								{
									var entry = obj.countries[i];
									
									if ( entry.length > 0 )
									{
										var entryLink = document.createElement('A');
											entryLink.href = 'javascript:void(0);';
											entryLink.className = 'entry';
											entryLink.values = {id:i, label: entry};
											
											entryLink.innerHTML = entry;
											
											entryLink.onclick = function ( )
											{
												if ( typeof ( this.values ) == 'object' )
												{
													addGeoSelCountry ( this.values );
												}
											}
											
											addGeoObjs.results.country.appendChild ( entryLink );
									}
								}
							}
							
							addGeoObjs.results.country.style.display = 'block';
						}
						
						if ( typeof ( obj.regions ) == 'object' && parseInt ( obj.regions.length ) > 0 && addGeoObjs.ids.region.value == '' )
						{
							addGeoObjs.results.region.innerHTML = '';
							for ( i in obj.regions )
							{
								if ( parseInt ( i ) > 0 )
								{
									var entry = obj.regions[i];
									
									if ( entry.length > 0 )
									{
										var entryLink = document.createElement('A');
											entryLink.href = 'javascript:void(0);';
											entryLink.className = 'entry';
											entryLink.values = {id:i, label: entry};
											
											entryLink.innerHTML = entry;
											
											entryLink.onclick = function ( )
											{
												if ( typeof ( this.values ) == 'object' )
												{
													addGeoSelRegion ( this.values );
												}
											}
											
											addGeoObjs.results.region.appendChild ( entryLink );
									}
								}
							}
							
							addGeoObjs.results.region.style.display = 'block';
						}
						
						if ( typeof ( obj.cities ) == 'object' && parseInt ( obj.cities.length ) > 0 )
						{
							addGeoObjs.results.city.innerHTML = '';
							for ( i in obj.cities )
							{
								if ( parseInt ( i ) > 0 )
								{
									var entry = obj.cities[i];
									
									if ( entry.length > 0 )
									{
										var entryLink = document.createElement('A');
											entryLink.href = 'javascript:void(0);';
											entryLink.className = 'entry';
											entryLink.values = {id:i, label: entry};
											
											entryLink.innerHTML = entry;
											
											entryLink.onclick = function ( )
											{
												if ( typeof ( this.values ) == 'object' )
												{
													addGeoSelCity ( this.values );
												}
											}
											
											addGeoObjs.results.city.appendChild ( entryLink );
									}
								}
							}
							
							addGeoObjs.results.city.style.display = 'block';
						}
					}
					break;
			}
		}
			
		//
			function addGeoShowCountryResult ( )
			{
				var status = addGeoObjs.results.country.style.display;
					addGeoObjs.results.country.style.display = status !== 'block' ? 'block' : 'none';
			}
			
		//
			function addGeoShowRegionResult ( )
			{
				var status = addGeoObjs.results.region.style.display;
					addGeoObjs.results.region.style.display = status !== 'block' ? 'block' : 'none';
			}
			
		//
			function addGeoShowCityResult ( )
			{
				var status = addGeoObjs.results.city.style.display;
					addGeoObjs.results.city.style.display = status !== 'block' ? 'block' : 'none';
			}
			
	// addgeosubmit
		function addgeosubmit ( )
		{
			var country = addGeoObjs.labels.country.value;
			var region = addGeoObjs.labels.region.value;
			var city = addGeoObjs.labels.city.value;

			var countryid = addGeoObjs.ids.country.value;
			var regionid = addGeoObjs.ids.region.value;
			var cityid = addGeoObjs.ids.city.value;
			
			var zip = document.getElementById('addgeoziplabel');
			var zipcode = '';
			if ( typeof ( zip ) == 'object' )
			{
				zipcode = zip.value;
			}
			
			var data =  'q=add&mode=geoadding';
				data += '&country=' + country + ':' + countryid;
				data += '&region=' + region + ':' + regionid;
				data += '&city=' + zipcode + ':' + city + ':' + cityid;
			
			poiS.req.open ( 'POST', docRoot + 'sys/getpois.php', true );
			poiS.req.onreadystatechange = getAddResult;
			poiS.req.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded" );
			poiS.req.send ( data );
		}
		
		function getAddResult ( )
		{
			switch ( poiS.req.readyState )
			{
				case 4:
					if ( poiS.req.status != 200 && poiS.req.status !== 0 )
					{
						// FEHLER!
					}
					else if ( poiS.req.status == 0 )
					{
						// do nothin!
					}
					else
					{
						var answer = eval ( '(' + poiS.req.responseText + ')' );
						
						if ( typeof ( answer ) == 'object' )
						{
							if ( typeof ( answer.status ) !== 'undefined' )
							{
								var splitter = answer.answer.split(':');
								
								if ( typeof ( splitter ) == 'object' && splitter.length == 3 )
								{
									document.getElementById('choosencitytext').innerHTML = addGeoObjs.labels.city.value;
									document.getElementById('editfield_zipcode').value = document.getElementById('addgeoziplabel').value;
									document.getElementById('geocitysubmitcheckbox').value = splitter[1];
									showAddGeoForm ( );
								}
							}
						}
					}
					break;
			}
		}
		
	//
		function addGeoSelCountry ( vals )
		{
			addGeoObjs.ids.country.value = vals.id;
			addGeoObjs.labels.country.value = vals.label;
			addGeoObjs.results.country.style.display = 'none';
		}
		
	//
		function addGeoSelRegion ( vals )
		{
			addGeoObjs.ids.region.value = vals.id;
			addGeoObjs.labels.region.value = vals.label;
			addGeoObjs.results.region.style.display = 'none';
		}
		
	//
		function addGeoSelCity ( vals )
		{
			addGeoObjs.ids.city.value = vals.id;
			addGeoObjs.labels.city.value = vals.label;
			addGeoObjs.results.city.style.display = 'none';
		}
		
	// initialize addgeoform-functionality
		function initAddGeoCity ( )
		{
			var poisearch = document.getElementById('poisearch');
			
			if ( poisearch && typeof ( poisearch ) == 'object' )
			{
				// initialize request object for addgeo
					try { addGeoReq = new XMLHttpRequest(); }
					catch (e) {
						try { addGeoReq = new ActiveXObject("Msxml2.XMLHTTP"); }
						catch (e){
							try { addGeoReq = new ActiveXObject("Microsoft.XMLHTTP"); }
							catch (failed) { addGeoReq = null; }
						}
					}
			
				addGeoObjs = {
					ids: {
						country: document.getElementById('addgeocountryid'),
						region: document.getElementById('addgeoregionid'),
						city: document.getElementById('addgeocityid')
					},
					
					labels: {
						country: document.getElementById('addgeocountrylabel'),
						region: document.getElementById('addgeoregionlabel'),
						city: document.getElementById('addgeocitylabel')
					},
					
					results: {
						country: document.getElementById('addgeo_country_results'),
						region: document.getElementById('addgeo_region_results'),
						city: document.getElementById('addgeo_city_results')
					}
				};
				
				addGeoObjs.labels.country.onkeyup = function ( )
				{
					if ( this.value.length >= 3 )
					{
						checkAddGeoData ( );
					}
				}
				
				addGeoObjs.labels.region.onkeyup = function ( )
				{
					if ( this.value.length >= 3 )
					{
						checkAddGeoData ( );
					}
				}
				
				addGeoObjs.labels.city.onkeyup = function ( )
				{
					if ( this.value.length >= 3 )
					{
						checkAddGeoData ( );
					}
				}
			}
		}var req = false;
var req2k9 = false;
var req2k9IntVal = false;

var hotelsReq = false;
var hotelsInt = false;

var searchAjax = false;
var searchAjaxIntVal = false;

var eOptions = new Array ( );

var sC_step = 1;

//var dosearch_countries = new Array ( );

function updateLinkChecker ( obj, checker )
{
	var checker = document.getElementById(checker);
	var link = str_replace ( 'http://', '', obj.value );
	obj.value = link;

	if ( typeof ( checker ) == 'object' )
	{
		if ( link.length > 0 )
		{
			checker.href = 'http://' + link;
			checker.style.visibility = 'visible';
		}
		else
		{
			checker.href = 'javascript:void(0);';
			checker.style.visibility = 'hidden';
		}
	}
}

// Findet die absolute x Position eines Elements raus
function getAbPos ( elm ) {
	//
	var x = 0;
	var y = 0;

	if (elm && typeof elm.offsetParent != "undefined")
	{
		while (elm && typeof elm.offsetLeft == "number")
		{
			x += elm.offsetLeft;
			elm = elm.offsetParent;
		}
	}
	
	if (elm && typeof elm.offsetParent != "undefined")
	{
		while (elm && typeof elm.offsetTop == "number")
		{
			y += elm.offsetTop;
			elm = elm.offsetParent;
		}
	}
	return {'x': x,'y': y};
}

function resetDoSearch ( )
{
	var country = document.getElementById('country_lookup');
		country.selectedIndex = 0;
		
	var stars_type = document.getElementById('sm_field_stars_mode');
		stars_type.selectedIndex = 0;
		
	var stars = document.getElementById('sm_field_stars');
		stars.selectedIndex = 0;
		
	var arrival = document.getElementById('arrivaldate');
		arrival.value = '';
		
	var departure = document.getElementById('departuredate');
		departure.value = '';
		
	var freetext = document.getElementById('ajax_search_freetext');
		freetext.value = '';
		
	var field_just_os = document.getElementById('field_just_os');
		field_just_os.checked = false;
		
	var olderyear = document.getElementById('olderyear');
		olderyear.checked = false;
	/* Environment */
		var field_env_golf = document.getElementById('field_env_golf');
			field_env_golf.checked = false;
			
		var field_env_pool = document.getElementById('field_env_pool');
			field_env_pool.checked = false;
			
		var field_env_hotelbar = document.getElementById('field_env_hotelbar');
			field_env_hotelbar.checked = false;
			
		var field_env_wellness = document.getElementById('field_env_wellness');
			field_env_wellness.checked = false;
			
		var field_env_fitness = document.getElementById('field_env_fitness');
			field_env_fitness.checked = false;
			
		var field_env_indoorpool = document.getElementById('field_env_indoorpool');
			field_env_indoorpool.checked = false;
			
		var field_env_restaurant = document.getElementById('field_env_restaurant');
			field_env_restaurant.checked = false;
			
		var field_env_www = document.getElementById('field_env_www');
			field_env_www.checked = false;
			
		var field_env_wlan = document.getElementById('field_env_wlan');
			field_env_wlan.checked = false;
			
		var field_env_aircpriv = document.getElementById('field_env_aircpriv');
			field_env_aircpriv.checked = false;
			
		var field_env_aircpub = document.getElementById('field_env_aircpub');
			field_env_aircpub.checked = false;
			
		var field_env_conf = document.getElementById('field_env_conf');
			field_env_conf.checked = false;
			
		var field_env_carpark = document.getElementById('field_env_carpark');
			field_env_carpark.checked = false;
			
		var field_cat_designhotel = document.getElementById('field_cat_designhotel');
			field_cat_designhotel.checked = false;
			
		var field_cat_beach = document.getElementById('field_cat_beach');
			field_cat_beach.checked = false;
			
		var field_cat_city = document.getElementById('field_cat_city');
			field_cat_city.checked = false;
			
		var field_cat_countryside = document.getElementById('field_cat_countryside');
			field_cat_countryside.checked = false;
	
	updateLookUpCities(false,'cities_lookup');
}

function calcCurrency ( obj ) {
	// Die Selectbox raussuchen
		var select = obj.parentNode.getElementsByTagName('SELECT')[0];
	// Aktuelle Auswahl bzw. Währung ausfindig machen.
		var currCurr = select.getElementsByTagName('OPTION')[select.selectedIndex].value;
	// Nimm den Wert mal den Value der jeweiligen Währung => ergibt: den USD-Wert.
		var value = obj.value * _currs[currCurr];
			if ( value >= 0 && value !== '' ) {
				var options = select.getElementsByTagName('OPTION');
					for ( i in options ) {
						var el = options[i]; 
						var show = ( value / _currs[el.value] ) + "";
							show = show.substr ( 0, show.indexOf ( '.' ) + 2 );
							el.innerHTML = el.value + " (~" + show + ")";
					}
			}
}

function osopenbox (cBox) {
	if ( typeof ( cBox ) == 'object' ) {
		if ( cBox.checked ) {
			document.getElementById( 'osdivbox' ).className = 'boxHightlight osdivbox_active';
		} else {
			document.getElementById( 'osdivbox' ).className = 'boxHightlight osdivbox_inactive';
		}
	}
}

function selectAllCheckboxes ( obj ) {
	var useObj = obj.parentNode.parentNode.parentNode.parentNode;
	if ( useObj ) {
		var boxes = useObj.getElementsByTagName('INPUT');

		if ( boxes.length > 0 ) {
			for ( i in boxes ) {
				if ( i !== 0 ) {
					var el = boxes[i];
						if ( el.parentNode && el.parentNode.className !== 'searchLine' ) {
							if ( obj.checked == true ) {
								el.checked = true;
							} else {
								el.checked = false;
							}
						}
				}
			}
		}
	} else {
		return false;
	}
	
	return true;
}

function str_replace(search, replace, subject) {
    var f = search, r = replace, s = subject;
    var ra = r instanceof Array, sa = s instanceof Array, f = [].concat(f), r = [].concat(r), i = (s = [].concat(s)).length;
 
    while (j = 0, i--) {
        if (s[i]) {
            while (s[i] = (s[i]+'').split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
        }
    };
 
    return sa ? s : s[0];
}

function startPreview ( ) {
	var prevUri = str_replace ( 'mini', 'listprev', this.src );
	var $img = new Image ( );
		$img.src = prevUri;
		$img.onload = function ( ) {
			var box = document.getElementById ( 'hotelpicPreviewBox' );
			var img = box.getElementsByTagName ( 'IMG' )[0];
				img.src = this.src;

				this.onmousemove = function ( e ) {
					var box = document.getElementById('hotelpicPreviewBox');
						box.style.display = 'block';
					if ( document.all ) {
						e = window.event;
						x = e.clientX;
						y = e.clientY;
					} else {
						x = e.pageX;
						y = e.pageY;
					}
					
					box.style.top = ( ( y + 5 ) - str_replace ( 'px', '', box.style.height + "" ) )  + "px";
					box.style.left = ( x + 5 ) + "px";
				}
		};
}


function stopPreview ( ) {
	var box = document.getElementById ( 'hotelpicPreviewBox' );
		box.style.display = 'none';
		document.onmousemove = false;
}

function showLocs ( locResults )
{
	var els = new Array ( );
	var res = eval ( '(' + locResults + ')' );
	var resObj = document.getElementById ( 'locResults' );
	var statusObj = document.getElementById ( 'showStatus' );
	
	if ( res.results.length > 0 )
	{
		var _minimap = document.getElementById('minimap');
			_minimap.style.display = 'block';
	
		for ( i in res.results )
		{
			var resultLink = document.createElement ( 'A' );
				resultLink.href = 'javascript:void(0);';
				
				resultLink.data = new Object ( );
				resultLink.data.id = res.results[i]['locid'];
				resultLink.data.label = res.results[i]['city'] + ' in ' + res.results[i]['country']['label'];
				resultLink.geo = new Object ( );
				resultLink.geo.lat = res.results[i]['latitude'];
				resultLink.geo.lon = res.results[i]['longitude'];
				
				resultLink.onclick = function ( )
				{
					showMarker ( this.geo.lat, this.geo.lon );
					selectCity ( this.data.id, this.data.label );
				};
				
				if ( i == 0 )
				{
					showMarker ( res.results[i]['latitude'], res.results[i]['longitude'] );
				}
				
				var span = document.createElement ( 'SPAN' );
					span.className = 'ajaxCountryList';
					span.innerHTML = res.results[i]['country']['label'];
				
				resultLink.appendChild ( span );
				
				resultLink.innerHTML += res.results[i]['city'];
		
			els[i] = document.createElement ( 'LI' );
			els[i].appendChild ( resultLink );
			
			resObj.appendChild ( els[i] );
		}
	}
	else
	{
	}
	
	var addCityEntry = document.createElement ( 'LI' );
		addCityEntry.className = 'ajaxCountryListEnd';
		
	var addCityLink = document.createElement ( 'A' );
		addCityLink.innerHTML = __ ( 'add_city_2_geo' );
		addCityLink.href = 'javascript:void(0);';
		addCityLink.onclick = function ( )
		{
			var obj = document.getElementById('addcity');
				obj.style.display = 'block';
				
			var resList = document.getElementById('locResults');
				resList.style.display = 'none';
				
				document.getElementById('cancelAddCity').onclick = function ( )
				{
					var obj = document.getElementById('addcity');
						obj.style.display = 'none';
						
					var resList = document.getElementById('locResults');
						resList.style.display = 'block';
				}
		
			/*if ( confirm ( __ ( 'ajax_geo_city_add' ) ) )
			{ 
				var data = 'mode=add&loc=' + useValue;
				
				req.open ( 'POST', docRoot + 'sys/getlocations.php', true );
				req.onreadystatechange = handleAddRequest;
				req.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded" );
				req.send ( data );
			}*/
		};
		
		addCityEntry.appendChild ( addCityLink );
		resObj.appendChild ( addCityEntry );

	statusObj.className = 'normal';
	
	statusObj.innerHTML = 'Ergebnis: <strong>' + res.results.length + '</strong> von <strong>' + res.num + '</strong>!';
	clearInterval ( loadAniTimer );
	loadAniTimer = false;
	
	resObj.style.display = 'block';
			
	miniMap.checkResize();
}

function handleLocs ( )
{	
	var resObj = document.getElementById('locResults');
	var statusObj = document.getElementById ( 'showStatus' );
	
	resObj.style.display = 'none';
	
	var objs = resObj.getElementsByTagName ( 'LI' );
	
	for ( i in objs )
	{
		if ( typeof ( objs[i] ) == 'object' )
		{
			resObj.removeChild ( objs[i] );
		}
	}
	
	switch(req.readyState)
	{
		case 4:
			if ( req.status != 200 && req.status !== 0 )
			{
				// FEHLER!
				statusObj.innerHTML = '<span class="error">Fehler: ' + req.status + '</span>';
			}
			else if ( req.status == 0 )
			{
				// do nothin!
			}
			else
			{    
				showLocs ( req.responseText );
			}
			break;
		default:
			return false;
			break;
	}

	clearInterval ( locQueryTimer );
	locQueryTimer = false;
}

var locQueryTimer = false;
var useValue = '';

var loadAniTimer = false;
var aniStr = '';
var loadAniStr = aniStr.split ( '' );
var loadAniCount = 0;

function startQuery ( )
{
	var minimap = document.getElementById('minimap');
		minimap.style.display = 'none';

	clearInterval ( locQueryTimer );
	locQueryTimer = false;

	var data = 'loc=' + useValue;
	req.open ( 'POST', docRoot + 'sys/getlocations.php', true );
	req.onreadystatechange = handleLocs;
	req.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded" );
	req.send ( data );
}

function locQuery ( obj )
{
	if ( locQueryTimer !== false )
	{
		clearInterval ( locQueryTimer );
	}

	if ( obj.value.length > 0 )
	{
		makeLoadingAni ( );
		useValue = obj.value;
		document.getElementById('addCityCity').value = obj.value;
		locQueryTimer = setInterval ( 'startQuery()', 500 );
	}
	else
	{
		// handleLocs ( );
	}
}

function makeLoadingAni ( )
{
	clearInterval ( loadAniTimer );
	loadAniTimer = false;
	
	var statusObj = document.getElementById ( 'showStatus' );
		statusObj.innerHTML = '';
	
	aniStr = __ ( 'ajax_geo_loading' );
	loadAniStr = aniStr.split ( '' );
	loadAniCount = 0;
	
	loadAniTimer = setInterval ( function ( ) {
		var statusObj = document.getElementById ( 'showStatus' );
			statusObj.className = 'statusActive';
			statusObj.innerHTML += loadAniStr[loadAniCount];
			loadAniCount ++;
			
			if ( loadAniCount == loadAniStr.length )
			{
				loadAniCount = 0;
				statusObj.innerHTML = '&nbsp;';
			}
	}, 100 );
}

function removeSVal ( numId )
{
	var obj = document.getElementById('paramListEl' + numId);
	var val = eOptions[numId];
	
	delete ( eOptions[numId] );
	obj.parentNode.removeChild ( obj );
}

function addSearchValues ( value, keyCode )
{
	if ( req2k9IntVal !== false )
	{
		clearInterval ( req2k9IntVal );
		req2kIntVal = false;
	}

	var useValue = str_replace ( ' ', '', str_replace ( '\n', '', str_replace ( '\r', '', value ) ) );
	if ( typeof ( eOptions[('opt_' + useValue)] ) == 'undefined' )
	{
		eOptions[('opt_' + useValue)] = useValue;
	}

	document.getElementById('qt_options').innerHTML = '';
	var clearer = document.createElement ( 'DIV' );
	var clearerHR = document.createElement ( 'HR' );
		clearer.appendChild ( clearerHR );
		
		clearer.className = 'clearer';
		
	var valC = 0;
	for ( i in eOptions )
	{
		if ( i != 'length' && typeof ( i ) == 'string' && eOptions[i] != false )
		{
			var span = document.createElement ( 'LI' );
				span.innerHTML += ' ' + eOptions[i];
				span.className = 'paramListEl';
				span.id = 'paramListEl' + i;
				span.innerHTML = '<a href="javascript:void(0);" class="removeTag" onclick="removeSVal(\'' + i + '\');">x</a>' + span.innerHTML;

				document.getElementById('qt_options').appendChild ( span );
				
				valC ++;
		}
		else
		{
		}
	}

	document.getElementById('qt_options').appendChild ( clearer );
	
	req2k9IntVal = setInterval ( doQuery, 1000 );
}

function doQuery ( )
{
	var useTags = new Array ( );
	
	for ( i in eOptions )
	{
		useTags[useTags.length] = eOptions[i];
	}

	clearInterval ( req2k9IntVal );
	req2k9IntVal = false;
	var data = 'mode=search&tags=' + useTags.join(';');
	
	req2k9.open ( 'POST', docRoot + 'dostuff.php?t=' + Math.random ( ), true );
	req2k9.onreadystatechange = handleHotelSearch;
	req2k9.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded" );
	req2k9.send ( data );
}

function handleHotelSearch ( )
{
	switch ( req2k9.readyState )
	{
		case 4:
			if ( req2k9.status != 200 && req2k9.status !== 0 )
			{
				// FEHLER!
				//alert ( req2k9.status );
			}
			else if ( req2k9.status == 0 )
			{
				// do nothin!
			}
			else
			{    
				//alert ( req2k9.responseText );
			}
			break;
		default:
			return false;
			break;
	}
}

var foundCities = new Array ( );
var foundCountries = new Array ( );

function searchCountry ( obj )
{
	var val = obj;
	
	document.getElementById('step1_action').style.display = 'block';
	document.getElementById('step1_question').style.display = 'block';
	
	var data = 'mode=getcountry&lang=' + curLang + '&loc=' + val;
	if ( val.length > 0 )
	{
		req.open ( 'POST', docRoot + 'sys/getlocations.php', true );
		req.onreadystatechange = function ( )
		{
			switch ( req.readyState )
			{
				case 4:
					if ( req.status != 200 && req.status !== 0 )
					{
						alert ( req.status );
					}
					else if ( req.status == 0 )
					{
						// do nothin!
					}
					else
					{
						var resultsList = document.getElementById('country_results');
						if ( typeof ( resultsList ) == 'object' )
						{
							var obj = eval ( '(' + req.responseText + ')' );
							resultsList.innerHTML = '';
							
							if ( obj.results.length > 0 )
							{
								for ( oi in obj.results )
								{
									var newEl = document.createElement ( 'DIV' );
							
									foundCountries[obj.results[oi]['ID']] = obj.results[oi]['rawlabel'];
									
									newEl.innerHTML = '<span class="inputs"><input type="radio" name="edit[countrygeoid]" onclick="geo_goFurther(this);" value="' + obj.results[oi]['ID'] + '" /></span> <span class="label">' + obj.results[oi]['label'] + '</span><div class="clearer"><hr /></div>';
									resultsList.appendChild ( newEl );
								}
							}
						}	
					}
					break;
				default:
					return false;
					break;
			}
		};
		req.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded" );
		req.send ( data );
	}
}

function searchCity ( obj )
{
	var val = obj;
	
	document.getElementById('step2_action').style.display = 'block';
	document.getElementById('step2_question').style.display = 'block';
	
	var country = document.getElementById('hotel_countryid').value;
	
	var data = 'mode=getcity&lang=' + curLang + '&loc=' + val + '&country=' + country;
	if ( val.length > 0 )
	{
		document.getElementById('minimap').style.display = 'none';
		req.open ( 'POST', docRoot + 'sys/getlocations.php', true );
		req.onreadystatechange = function ( )
		{
			switch ( req.readyState )
			{
				case 4:
					if ( req.status != 200 && req.status !== 0 )
					{
						alert ( req.status );
					}
					else if ( req.status == 0 )
					{
						// do nothin!
					}
					else
					{
						var resultsList = document.getElementById('city_results');
						if ( typeof ( resultsList ) == 'object' )
						{
							var obj = eval ( '(' + req.responseText + ')' );
							resultsList.innerHTML = '';
							
							miniMap.checkResize();
							
							if ( obj.results.length > 0 )
							{
								document.getElementById('minimap').style.display = 'block';

								for ( oi in obj.results )
								{
									var newEl = document.createElement ( 'A' );
										newEl.href = 'javascript:void(0);';
										newEl.lat = obj.results[oi].lat;
										newEl.lon = obj.results[oi].lon;
										newEl.onclick = function ( )
										{
											miniMap.checkResize();
											showMarker ( this.lat, this.lon );
										};
							
									foundCities[obj.results[oi]['ID']] = obj.results[oi]['rawlabel'];
									
									newEl.innerHTML = '<span class="inputs"><input type="radio" name="edit[citygeoid]" onclick="geo_goFurther(this);" value="' + obj.results[oi]['ID'] + '" /></span> <span class="label">' + obj.results[oi]['label'] + '</span><div class="clearer"><hr /></div>';
									resultsList.appendChild ( newEl );
									
									if ( oi == 0 )
									{
										showMarker ( obj.results[oi].lat, obj.results[oi].lon );
									}
								}
							}
						}	
					}
					break;
				default:
					return false;
					break;
			}
		};
		req.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded" );
		req.send ( data );
	}
}

function searchHotelLoc ( )
{
	var address = '';
		address += document.getElementById('hotel_country_result').innerHTML + ' ';
		address += document.getElementById('hotel_address_street').value + ' ';
		address += document.getElementById('hotel_address_street_num').value + ' ';
		address += document.getElementById('hotel_address_zipcode').value + ' ';
		address += document.getElementById('hotel_city_result').innerHTML;
		
		searchMapLoc ( address );
}

var marker = false;

function searchMapLoc(address) // search for an given location on our map
{
	if (geocoder) {
		geocoder.getLatLng(
			address,
			function(point) {
				if (!point)
				{
					// alert(address + " not found");
				}
				else
				{
					miniMap.setCenter(point, 15);
					
					if ( marker !== false )
					{
						miniMap.removeOverlay(marker);
					}
					
					marker = new GMarker(point);
					miniMap.addOverlay(marker);
					
					document.getElementById('hotel_lat').value = point.lat ( );
					document.getElementById('hotel_lon').value = point.lng ( );
				}
			}
		);
	}
}

function geo_gostep ( step )
{
	switch ( step )
	{
		default: // error
			break;
		case 'country':
			sC_step = 1;
			var step = document.getElementById ( 'step1' );

				document.getElementById('enter_country').style.display = 'block';
				document.getElementById('step1_question').style.display = 'block';
				document.getElementById('addboxcountry').style.display = 'none';
				
				document.getElementById('hotel_countryid').value = '';
				
				document.getElementById('hotel_country_result').innerHTML = '';
				
				document.getElementById('step1_result').style.display = 'none';

				step.style.display = 'block';
				document.getElementById('step1').style.display = 'block';
				document.getElementById('step2').style.display = 'none';
				// step 2 deaktivieren!
					var step = document.getElementById ( 'step2' );
						document.getElementById('enter_city').style.display = 'block';
						document.getElementById('step2_question').style.display = 'block';
						document.getElementById('addboxcity').style.display = 'none';
						document.getElementById('step2').style.display = 'none';
						
						document.getElementById('hotel_city_result').innerHTML = '';
						
						document.getElementById('step2_result').style.display = 'none';

						step.style.display = 'none';
						document.getElementById('hoteladdress_city_field').innerHTML = '';
						document.getElementById('hoteladdress_country_field').innerHTML = '';
						
				// step 3 deaktivieren!
					var step = document.getElementById ( 'step3' );
						step.style.display = 'none';
			break;
		case 'city':
			sC_step = 2;
			var step = document.getElementById ( 'step2' );
				document.getElementById('enter_city').style.display = 'block';
				document.getElementById('step2_question').style.display = 'block';
				document.getElementById('addboxcity').style.display = 'none';
				document.getElementById('step2').style.display = 'block';
				
				document.getElementById('hotel_city_result').innerHTML = '';
				
				document.getElementById('step2_result').style.display = 'none';

				step.style.display = 'block';
				document.getElementById('hoteladdress_city_field').innerHTML = '';
				document.getElementById('hoteladdress_country_field').innerHTML = '';
						
				// step 3 deaktivieren!
					var step = document.getElementById ( 'step3' );
						step.style.display = 'none';
			break;
	}
}

function geo_goFurther ( obj )
{
	// hide current step
		//document.getElementById('step'+sC_step).style.display = 'none';
	// increase step counter
		sC_step ++;
	// load next step
		var step = document.getElementById('step' + sC_step );

	// 
		switch ( ( sC_step - 1 ) )
		{
			case 1:
				document.getElementById('enter_country').style.display = 'none';
				document.getElementById('step1_question').style.display = 'none';
				document.getElementById('addboxcountry').style.display = 'none';
				document.getElementById('step1').style.display = 'none';
				
				document.getElementById('hotel_countryid').value = obj.value;
				
				document.getElementById('hotel_country_result').innerHTML =  typeof ( foundCountries[obj.value] ) != 'undefined' ? foundCountries[obj.value] : 'Fehler! Kein Eintrag!';
				
				document.getElementById('step1_result').style.display = 'block';

				step.style.display = 'block';
				break;
			case 2:
				document.getElementById('enter_city').style.display = 'none';
				document.getElementById('step2_question').style.display = 'none';
				document.getElementById('addboxcity').style.display = 'none';
				document.getElementById('step2').style.display = 'none';
				
				document.getElementById('hotel_city_result').innerHTML =  typeof ( foundCities[obj.value] ) != 'undefined' ? foundCities[obj.value] : 'Fehler! Kein Eintrag!';
				
				document.getElementById('step2_result').style.display = 'block';

				step.style.display = 'block';
				document.getElementById('hoteladdress_city_field').innerHTML = document.getElementById('hotel_city_result').innerHTML;
				document.getElementById('hoteladdress_country_field').innerHTML = document.getElementById('hotel_country_result').innerHTML;

				break;
			case 3:
				step.style.display = 'block';
				break;
			default:
				// do nothing
		}
}

function closeDropDown ( id )
{
	var list = document.getElementById(id);
		removeChilds ( list, 'LI' );
		list.parentNode.style.display = 'none';
}

function removeChilds ( obj, el )
{
	objchilds = obj.getElementsByTagName(el);
	
	if ( objchilds.length > 0 )
	{
		for ( i in objchilds )
		{
			if ( typeof ( objchilds[i] ) == 'object' )
			{
				obj.removeChild ( objchilds[i] );
			}
		}
	}
	
	obj.innerHTML = '';
}

function lookUpHotels ( )
{
	var sendLimit = 0;

	var city = document.getElementById('lookup_city').value;
	var cityId = document.getElementById('lookup_cityid').value;
	var starsMode = document.getElementById('sm_field_stars_mode').value;
	var stars = document.getElementById('sm_field_stars').value;
	var arrival = document.getElementById('arrivaldate').value;
	var departure = document.getElementById('departuredate').value;
	var justOs = document.getElementById('field_just_os').checked ? 1 : 0;
	var olderYear = document.getElementById('olderyear').checked ? 1 : 0;
	var openingstart = false; // document.getElementById('openingstart').value;
	var openingend = false; // document.getElementById('openingend').value;
	
	// Environment
		var envGolf = document.getElementById('field_env_golf').checked ? 1 : 0;
		var envPool = document.getElementById('field_env_pool').checked ? 1 : 0;
		var envHotelBar = document.getElementById('field_env_hotelbar').checked ? 1 : 0;
		var envWellness = document.getElementById('field_env_wellness').checked ? 1 : 0;
		var envFitness = document.getElementById('field_env_fitness').checked ? 1 : 0;
		var envIndoorPool = document.getElementById('field_env_indoorpool').checked ? 1 : 0;
		var envRestaurant = document.getElementById('field_env_restaurant').checked ? 1 : 0;
		var envWWW = document.getElementById('field_env_www').checked ? 1 : 0;
		var envWlan = document.getElementById('field_env_wlan').checked ? 1 : 0;
		var envAirCpriv = document.getElementById('field_env_aircpriv').checked ? 1 : 0;
		var envAirCpub = document.getElementById('field_env_aircpub').checked ? 1 : 0;
		var envConf = document.getElementById('field_env_conf').checked ? 1 : 0;
		var envCarPark = document.getElementById('field_env_carpark').checked ? 1 : 0;
	
	var data = 'mode=search';
	
	if ( cityId > 0 )
	{
		data += '&cityid=' + cityId;
		sendLimit ++;
	}
	else
	{
		data += '&city=' + city;
		sendLimit ++;
	}
	
	if ( starsMode >= 0 )
	{
		data += '&starmode=' + starsMode;
		sendLimit ++;
	}
	
	if ( stars >= 0 )
	{
		data += '&stars=' + stars;
		sendLimit ++;
	}
	
	if ( arrival.length > 0 )
	{
		data += '&arrival=' + arrival;
		sendLimit ++;
	}
	
	if ( departure.length > 0 )
	{
		data += '&departure=' + departure;
		sendLimit ++;
	}
	
	if ( openingstart.length > 0 )
	{
		data += '&osstart=' + arrival;
	}
	
	if ( openingend.length > 0 )
	{
		data += '&osend=' + departure;
	}
	
	if ( justOs > 0 )
	{
		data += '&justos=' + justOs;
	}
	
	if ( olderYear > 0 )
	{
		data += '&olderyear=' + olderYear;
	}
	
	// Environment
		if ( envGolf > 0 )
		{
			data += '&golf=1';
		}
		if ( envPool > 0 )
		{
			data += '&pool=1';
		}
		if ( envHotelBar > 0 )
		{
			data += '&hotelbar=1';
		}
		if ( envWellness > 0 )
		{
			data += '&wellness=1';
		}
		if ( envFitness > 0 )
		{
			data += '&fitness=1';
		}
		if ( envIndoorPool > 0 )
		{
			data += '&indoorpool=1';
		}
		if ( envRestaurant > 0 )
		{
			data += '&restaurant=1';
		}
		if ( envWWW > 0 )
		{
			data += '&www=1';
		}
		if ( envWlan > 0 )
		{
			data += '&wlan=1';
		}
		if ( envAirCpriv > 0 )
		{
			data += '&privccu=1';
		}
		if ( envAirCpub > 0 )
		{
			data += '&pubccu=1';
		}
		if ( envConf > 0 )
		{
			data += '&conf=1';
		}
		if ( envCarPark > 0 )
		{
			data += '&carpark=1';
		}
	
	if ( sendLimit >= 5 )
	{
		hotelsReq.open ( 'POST', docRoot + 'dostuff.php', true );
		hotelsReq.onreadystatechange = handleAjaxHotels;
		hotelsReq.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded" );
		hotelsReq.send ( data );
	}
	
	/* lookup_city
	* lookup_cityid
	* sm_field_stars_mode
	* sm_field_stars
	* arrivaldate
	* departuredate
	* field_just_os
	* olderyear
	* openingstart
	* openingend
	* field_env_golf
	* field_env_pool
	* field_env_hotelbar
	* field_env_wellness
	* field_env_fitness
	* field_env_indoorpool
	* field_env_restaurant
	* field_env_www
	* field_env_wlan
	* field_env_aircpriv
	* field_env_aircpub
	* field_env_conf
	* field_env_carpark
	*/
}

function handleAjaxHotels ( )
{
	switch(hotelsReq.readyState)
	{
		case 4:
			if ( hotelsReq.status != 200 && hotelsReq.status !== 0 )
			{
				// FEHLER!
				hotelsReq.innerHTML = '<span class="error">Fehler: ' + hotelsReq.status + '</span>';
			}
			else if ( hotelsReq.status == 0 )
			{
			}
			else
			{
				var obj = eval ( '(' + hotelsReq.responseText + ')' );
				var msgBox = document.getElementById('showMessage');
				
				if ( obj.num > 0 )
				{
					msgBox.innerHTML = __ ( 'resultsnum' );
					msgBox.className = 'resultinfo success';
					
					document.getElementById('doajaxsearch').disable = false;
					document.getElementById('resultsnum').innerHTML = obj.num;
				}
				else
				{
					
					document.getElementById('doajaxsearch').disable = true;
					msgBox.innerHTML = __ ( 'no_results' );
					msgBox.className = 'resultinfo error';
				}
			}
			break;
		default:
			return false;
			break;
	}
}

function ajaxCities ( )
{
	clearInterval ( searchAjaxIntVal );
	//var objCou = document.getElementById('lookup_country');
	var obj = document.getElementById('lookup_city');
		
		if ( obj.value.length > 0 )
		{
			var data = 'mode=city&city=' + obj.value;
			
			req.open ( 'POST', docRoot + 'dostuff.php', true );
			req.onreadystatechange = ajaxHandleCities;
			req.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded" );
			req.send ( data );
		}
}

function ajaxCountries ( )
{
	clearInterval ( searchAjaxIntVal );
	var obj = document.getElementById('lookup_country');
		
		if ( obj.value.length > 0 )
		{
			obj.parentNode.className = 'loading';
			var data = 'mode=country&country=' + obj.value;
			
			req.open ( 'POST', docRoot + 'dostuff.php', true );
			req.onreadystatechange = ajaxHandleCountries;
			req.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded" );
			req.send ( data );
		}
}

function ajaxHandleCities ( )
{
	switch(req.readyState)
	{
		case 4:
			if ( req.status != 200 && req.status !== 0 )
			{
				// FEHLER!
			}
			else if ( req.status == 0 )
			{
				// do nothin!
			}
			else
			{
				var rObj = eval ( '(' + req.responseText + ')' );

				var list = document.getElementById('city_results');
					removeChilds ( list, 'LI' );
				var obj = document.getElementById('lookup_city');
					obj.parentNode.className = 'inputs';

					list.parentNode.style.display = 'block';
					
					if ( typeof ( rObj.cities ) == 'object' && rObj.cities.length > 0 )
					{
						for ( i in rObj.cities )
						{
							var entry = document.createElement('LI');
							var entryLink = document.createElement('A');
								entryLink.innerHTML = rObj.cities[i].label + ', ' + rObj.cities[i].country;
								entryLink.href = 'javascript:void(0);';
								entryLink.useId = rObj.cities[i].id;
								entryLink.onclick = function ( ) {
									this.parentNode.parentNode.parentNode.style.display = 'none';
									document.getElementById('lookup_city').value = this.innerHTML;
									document.getElementById('lookup_cityid').value = this.useId;
								};
								entry.appendChild ( entryLink );
								
								list.appendChild ( entry );
						}
					}
					else
					{
						var entry = document.createElement('LI');
							entry.className = 'noentry';
							entry.innerHTML = __ ( 'noentry' );
							list.appendChild ( entry );
					}
			}
			break;
		default:
			return false;
			break;
	}
}

function ajaxHandleCountries ( )
{
	switch(req.readyState)
	{
		case 4:
			if ( req.status != 200 && req.status !== 0 )
			{
				// FEHLER!
			}
			else if ( req.status == 0 )
			{
				// do nothin!
			}
			else
			{
				var rObj = eval ( '(' + req.responseText + ')' );
				var list = document.getElementById('country_results');
				var obj = document.getElementById('lookup_country');
					obj.parentNode.className = 'inputs';

					list.parentNode.style.display = 'block';
					
					listchilds = list.getElementsByTagName('LI');
					
					if ( listchilds.length > 0 )
					{
						for ( i in listchilds )
						{
							if ( typeof ( listchilds[i] ) == 'object' )
							{
								list.removeChild ( listchilds[i] );
							}
						}
					}
					
					if ( typeof ( rObj.countries ) == 'object' && rObj.countries.length > 0 )
					{
						for ( i in rObj.countries )
						{
							var entry = document.createElement('LI');
							var entryLink = document.createElement('A');
								entryLink.innerHTML = rObj.countries[i].label;
								entryLink.onclick = function ( ) {
									this.parentNode.parentNode.parentNode.style.display = 'none';
									document.getElementById('lookup_country').value = this.innerHTML;
						
									document.getElementById('entrybox_city').style.display = 'block';
								};
								entry.appendChild(entryLink);
								
								list.appendChild ( entry );
						}
					}
					else
					{
						var entry = document.createElement('LI');
							entry.innerHTML = 'Kein Eintrag gefunden!';
							list.appendChild ( entry );
						
						document.getElementById('entrybox_city').style.display = 'none';
					}
			}
			break;
		default:
			return false;
			break;
	}
}

function openSearch ( id, obj )
{
	var searchBox = document.getElementById(id);
	
	if ( typeof ( searchBox ) == 'object' )
	{
		if ( obj.className == 'clabel' )
		{
			obj.className = 'olabel';
			searchBox.style.display = 'block';
		}
		else
		{
			obj.className = 'clabel';
			searchBox.style.display = 'none';
		}
	}
}

if(navigator.appName == "Microsoft Internet Explorer")
{
 var box = document.createElement ( 'DIV' );
	box.id = 'loginBox';
	box.style.position = "absolute";
	box.style.top = "50%";
	box.style.left = "50%";
	box.style.width = "480px";
	box.style.height = "220px";
	box.style.marginLeft = '-125px';
	box.style.marginTop = '-40px';
	box.style.backgroundColor = "#F0F0F0";
	box.style.border = "solid 1px #ACACAC";
	box.style.display = 'none';
	box.style.zIndex = 10001;
}

function updateLookUpCities ( val, objid )
{
	if ( typeof ( dosearch_countries[val] ) == 'object' )
	{
		var useObj = dosearch_countries[val];
	}
	else
	{
		var useObj = new Array ( );
		
		for ( i in dosearch_countries )
		{
			if ( typeof ( dosearch_countries[i] ) == 'object' )
			{
				for ( u in dosearch_countries[i] )
				{
					if ( typeof ( dosearch_countries[i][u] ) == 'string' )
					{
						useObj[u] = dosearch_countries[i][u];
					}
				}
			}
		}
	}

	var obj = document.getElementById(objid);
		obj.innerHTML = '';
		
		var chooseEl = document.createElement ( 'OPTION' );
			chooseEl.innerHTML = __ ( 'please_choose' );
			chooseEl.value = '0';
		obj.appendChild ( chooseEl );
		
		for ( i in useObj )
		{
			var foo = document.createElement ( 'OPTION' );
				foo.value = i;
				foo.innerHTML = useObj[i];
			obj.appendChild ( foo );
		}
}

$(document).ready(function() {
	try
	{
		req = new XMLHttpRequest();
		req2k9 = new XMLHttpRequest ( );
		searchAjax = new XMLHttpRequest();
		hotelsReq = new XMLHttpRequest();
	}
	catch (e)
	{
		try
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");
			req2k9 = new ActiveXObject("Msxml2.XMLHTTP");
			searchAjax = new ActiveXObject("Msxml2.XMLHTTP");
			hotelsReq = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e)
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");
				req2k9 = new ActiveXObject("Microsoft.XMLHTTP");
				searchAjax = new ActiveXObject("Microsoft.XMLHTTP");
				hotelsReq = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (failed)
			{
				req = null;
				req2k9 = null;
				searchAjax = null;
				hotelsReq = null;
			}
		}
	}

	var currDate = new Date ( );

	var box = document.createElement ( 'DIV' );
		box.id = 'hotelpicPreviewBox';

	var img = document.createElement ( 'IMG' );
		img.style.width = '200px';
		img.style.height = '150px';
		box.appendChild ( img );
		document.getElementsByTagName ( 'BODY' )[0].appendChild ( box );
	
	var images = document.getElementsByTagName ( 'IMG' );
	
	if ( document.getElementById ( 'nothumb' ) ) { // kein thumb auf bilder, die groesser als das thumb sind
	} else {
		for ( i in images ) {
			var el = images[i];
				switch ( el.className ) {
					case 'hotelpic':
						//el.onmouseover = startPreview;
						el.onmouseover = function ( ) {
							var box = document.getElementById('hotelpicPreviewBox');
								box.style.display = 'block';
							var img = box.getElementsByTagName ( 'IMG' )[0];
							var $src = str_replace ( "mini", "preview", this.src );
								$src = str_replace ( 'small', 'preview', $src );
								img.src = $src;

							this.onmousemove = function ( e ) {
								var box = document.getElementById('hotelpicPreviewBox');
								if ( document.all ) {
									e = window.event;
									x = e.clientX;
									y = e.clientY;
								} else {
									x = e.pageX;
									y = e.pageY;
								}
								
								box.style.top = ( ( y + 12 ) - str_replace ( 'px', '', box.style.height + "" ) )  + "px";
								box.style.left = ( x + 12 ) + "px";
							}
						};
						el.onmouseout = function ( ) {
							var box = document.getElementById('hotelpicPreviewBox');
								box.style.display = 'none';
							this.onmousemove = false;
						};
						break;
				}
		}
	}
		
	var links = document.getElementsByTagName ( 'A' );
	var editLinks = false;
		for ( i in links ) {
			if ( typeof ( links[i].parentNode ) != 'undefined' )
			{
				switch ( links[i].parentNode.className ) {
					case 'login':
					case 'login last':
						var rawlink = links[i].href;
						var label = links[i].innerHTML;
						
						var activateLink = document.createElement ( 'A' );
							activateLink.href = '#';
							activateLink.innerHTML = label;
						var parentObj = links[i].parentNode;

							parentObj.removeChild ( links[i] );
							parentObj.appendChild ( activateLink );
						
						var overLayer = document.createElement ( 'DIV' );
							overLayer.id = 'loginBoxOverLayer';
							
							document.getElementById('loginBox').getElementsByTagName('FORM')[0].action = rawlink;
						
						document.getElementById('loginBox').getElementsByTagName('A')[0].onclick = function ( ) {
							document.getElementById ( 'loginBoxOverLayer' ).style.display = 'none';
							document.getElementById ( 'loginBox' ).style.display = 'none';
						};
							
						document.getElementsByTagName('BODY')[0].appendChild ( overLayer );
							
						activateLink.href = 'javascript:void(0);';
						globalTimer = false;
						activateLink.onclick = function ( ) {
							if ( document.getElementById ( 'loginBox' ).style.display == 'none' ) {
								var selects = document.getElementsByTagName('SELECT');
									for ( i in selects ) {
										selects[i].visibility = false;
									}
								document.getElementById ( 'loginBoxOverLayer' ).style.display = 'block';
								document.getElementById ( 'loginBox' ).style.display = 'block';
								document.getElementById ( 'loginBox' ).getElementsByTagName('INPUT')[0].focus ( );
								//
							} else {
								document.getElementById ( 'loginBoxOverLayer' ).style.display = 'none';
								document.getElementById ( 'loginBox' ).style.display = 'none';
							}
							
							return false;
						}
						editLinks = true;
						break;
					default:
						break;
				}
			}
			if ( editLinks )
			{
				break;
			}
		}
		
		// Development Test!
		var qtObj = document.getElementById('qtInputParams');

		if ( typeof ( qtObj ) == 'object' && qtObj != null )
		{
			qtObj.onkeyup = function ( e ) { // e => event
				if ( this.value.length <= 0 )
				{
				}
				else if ( this.value > 0 )
				{
					
				}
				else
				{				
					var e = !e ? event : e;
					
					var keyCode = e.keyCode ? e.keyCode : e.which; 
				
					switch ( keyCode )
					{
						case 13: // Enter
						case 32: // SPACE
							addSearchValues ( this.value,keyCode );
							
							this.value = '';
							break;
						case 8: // Backspace
						case 9: // Tab
						case 17: // STRG (R)
						case 18: // ALT(GR)
						default:
							break;
					}
				}
			}
		}
		else
		{
		}
		
		var mMapMini = document.getElementById('minimap');
		
		if ( typeof ( mMapMini ) != 'undefined' && mMapMini !== null )
		{
			mMapMini.style.display = 'none';
		}
			
		var searchCity = document.getElementById('lookup_city');
		
			if ( typeof ( searchCity ) != 'undefined' && searchCity != null )
			{
				searchCity.onkeydown = searchCity.onkeyup = function ( )
				{
					var obj = document.getElementById('lookup_city');
						obj.parentNode.className = 'inputs loading';
					if ( typeof ( searchAjaxIntVal ) !== 'boolean' )
					{
						clearInterval ( searchAjaxIntVal );
						searchAjaxIntVal = false;
					}

					if ( this.value.length > 0 )
					{
						searchAjaxIntVal = setInterval ( ajaxCities, 1000 );
					}
					else
					{
						obj.parentNode.className = 'inputs';
					}
				}
			}
			
		var ajaxMask = document.getElementById('ajaxsearch');
			if ( typeof ( ajaxMask ) == 'object' && ajaxMask != null )
			{
				ajaxInFields = new Array ( );
				ajaxInFields = ajaxMask.getElementsByTagName('INPUT');
				if ( ajaxInFields.length > 0 )
				{
					if ( ajaxInFields.length > 0 )
					{
						for ( i in ajaxInFields )
						{
							if ( typeof ( ajaxInFields[i] ) == 'object' )
							{
								ajaxInFields[i].onblur = ajaxInFields[i].onfocus = function ( )
								{
									lookUpHotels ( );
								}
							}
						}
					}
				}
				else
				{
					//alert ( 'kein Element gefunden!' );
				}
			}
});/************************************************************************************************************
JS Calendar
Copyright (C) September 2006  DTHMLGoodies.com, Alf Magne Kalleland

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Dhtmlgoodies.com., hereby disclaims all copyright interest in this script
written by Alf Magne Kalleland.

Alf Magne Kalleland, 2006
Owner of DHTMLgoodies.com

************************************************************************************************************/

/* Update log:
(C) www.dhtmlgoodies.com, September 2005

Version 1.2, November 8th - 2005 - Added <iframe> background in IE
Version 1.3, November 12th - 2005 - Fixed top bar position in Opera 7
Version 1.4, December 28th - 2005 - Support for Spanish and Portuguese
Version 1.5, January  18th - 2006 - Fixed problem with next-previous buttons after a month has been selected from dropdown
Version 1.6, February 22nd - 2006 - Added variable which holds the path to images.
									Format todays date at the bottom by use of the todayStringFormat variable
									Pick todays date by clicking on todays date at the bottom of the calendar
Version 2.0	 May, 25th - 2006	  - Added support for time(hour and minutes) and changing year and hour when holding mouse over + and - options. (i.e. instead of click)
Version 2.1	 July, 2nd - 2006	  - Added support for more date formats(example: d.m.yyyy, i.e. one letter day and month).

// Modifications by Gregg Buntin
Version 2.1.1 8/9/2007  gfb   - Add switch to turn off Year Span Selection
                                This allows me to only have this year & next year in the drop down
                                     
Version 2.1.2 8/30/2007 gfb  - Add switch to start week on Sunday
                               Add switch to turn off week number display
                               Fix bug when using on an HTTPS page

*/
var turnOffYearSpan = false;     // true = Only show This Year and Next, false = show +/- 5 years
var weekStartsOnSunday = false;  // true = Start the week on Sunday, false = start the week on Monday
var showWeekNumber = true;  // true = show week number,  false = do not show week number

var languageCode = 'en';	// Possible values: 	en,ge,no,nl,es,pt-br,fr
							// en = english, ge = german, no = norwegian,nl = dutch, es = spanish, pt-br = portuguese, fr = french, da = danish, hu = hungarian(Use UTF-8 doctype for hungarian)

var calendar_display_time = true;

// Format of current day at the bottom of the calendar
// [todayString] = the value of todayString
// [dayString] = day of week (examle: mon, tue, wed...)
// [UCFdayString] = day of week (examle: Mon, Tue, Wed...) ( First letter in uppercase)
// [day] = Day of month, 1..31
// [monthString] = Name of current month
// [year] = Current year
var todayStringFormat = '[todayString] [UCFdayString]. [day]. [monthString] [year]';
var pathToImages = 'http://mynewhotel.com/simplify/js/jscalendar/images/';	// Relative to your HTML file

var speedOfSelectBoxSliding = 200;	// Milliseconds between changing year and hour when holding mouse over "-" and "+" - lower value = faster
var intervalSelectBox_minutes = 5;	// Minute select box - interval between each option (5 = default)

var calendar_offsetTop = 0;		// Offset - calendar placement - You probably have to modify this value if you're not using a strict doctype
var calendar_offsetLeft = 0;	// Offset - calendar placement - You probably have to modify this value if you're not using a strict doctype
var calendarDiv = false;

var MSIE = false;
var Opera = false;
if(navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('Opera')<0)MSIE=true;
if(navigator.userAgent.indexOf('Opera')>=0)Opera=true;


switch(languageCode){
	case "en":	/* English */
		var monthArray = ['January','February','March','April','May','June','July','August','September','October','November','December'];
		var monthArrayShort = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
		var dayArray = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'];
		var weekString = 'Week';
		var todayString = '';
		break;
	case "ge":	/* German */
		var monthArray = ['Januar','Februar','Mï¿½rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'];
		var monthArrayShort = ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'];
		var dayArray = ['Mon','Die','Mit','Don','Fre','Sam','Son'];
		var weekString = 'Woche';
		var todayString = 'Heute';
		break;
	case "no":	/* Norwegian */
		var monthArray = ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'];
		var monthArrayShort = ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Des'];
		var dayArray = ['Man','Tir','Ons','Tor','Fre','L&oslash;r','S&oslash;n'];
		var weekString = 'Uke';
		var todayString = 'Dagen i dag er';
		break;
	case "nl":	/* Dutch */
		var monthArray = ['Januari','Februari','Maart','April','Mei','Juni','Juli','Augustus','September','Oktober','November','December'];
		var monthArrayShort = ['Jan','Feb','Mar','Apr','Mei','Jun','Jul','Aug','Sep','Okt','Nov','Dec'];
		var dayArray = ['Ma','Di','Wo','Do','Vr','Za','Zo'];
		var weekString = 'Week';
		var todayString = 'Vandaag';
		break;
	case "es": /* Spanish */
		var monthArray = ['Enero','Febrero','Marzo','April','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
		var monthArrayShort =['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'];
		var dayArray = ['Lun','Mar','Mie','Jue','Vie','Sab','Dom'];
		var weekString = 'Semana';
		var todayString = 'Hoy es';
		break;
	case "pt-br":  /* Brazilian portuguese (pt-br) */
		var monthArray = ['Janeiro','Fevereiro','Mar&ccedil;o','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'];
		var monthArrayShort = ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'];
		var dayArray = ['Seg','Ter','Qua','Qui','Sex','S&aacute;b','Dom'];
		var weekString = 'Sem.';
		var todayString = 'Hoje &eacute;';
		break;
	case "fr":      /* French */
		var monthArray = ['Janvier','Fï¿½vrier','Mars','Avril','Mai','Juin','Juillet','Aoï¿½t','Septembre','Octobre','Novembre','Dï¿½cembre'];
		var monthArrayShort = ['Jan','Fev','Mar','Avr','Mai','Jun','Jul','Aou','Sep','Oct','Nov','Dec'];
		var dayArray = ['Lun','Mar','Mer','Jeu','Ven','Sam','Dim'];
		var weekString = 'Sem';
		var todayString = "Aujourd'hui";
		break;
	case "da": /*Danish*/
		var monthArray = ['januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december'];
		var monthArrayShort = ['jan','feb','mar','apr','maj','jun','jul','aug','sep','okt','nov','dec'];
		var dayArray = ['man','tirs','ons','tors','fre','l&oslash;r','s&oslash;n'];
		var weekString = 'Uge';
		var todayString = 'I dag er den';
		break;
	case "hu":	/* Hungarian  - Remember to use UTF-8 encoding, i.e. the <meta> tag */
		var monthArray = ['JanuÃ¡r','FebruÃ¡r','MÃ¡rcius','ï¿½?prilis','MÃ¡jus','JÃºnius','JÃºlius','Augusztus','Szeptember','OktÃ³ber','November','December'];
		var monthArrayShort = ['Jan','Feb','MÃ¡rc','ï¿½?pr','MÃ¡j','JÃºn','JÃºl','Aug','Szep','Okt','Nov','Dec'];
		var dayArray = ['HÃ©','Ke','Sze','Cs','PÃ©','Szo','Vas'];
		var weekString = 'HÃ©t';
		var todayString = 'Mai nap';
		break;
	case "it":	/* Italian*/
		var monthArray = ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'];
		var monthArrayShort = ['Gen','Feb','Mar','Apr','Mag','Giu','Lugl','Ago','Set','Ott','Nov','Dic'];
		var dayArray = ['Lun',';Mar','Mer','Gio','Ven','Sab','Dom'];
		var weekString = 'Settimana';
		var todayString = 'Oggi &egrave; il';
		break;
	case "sv":	/* Swedish */
		var monthArray = ['Januari','Februari','Mars','April','Maj','Juni','Juli','Augusti','September','Oktober','November','December'];
		var monthArrayShort = ['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'];
		var dayArray = ['M&aring;n','Tis','Ons','Tor','Fre','L&ouml;r','S&ouml;n'];
		var weekString = 'Vecka';
		var todayString = 'Idag &auml;r det den';
		break;
	case "cz":	/* Czech */
		var monthArray = ['leden','&#250;nor','b&#345;ezen','duben','kv&#283;ten','&#269;erven','&#269;ervenec','srpen','z&#225;&#345;&#237;','&#345;&#237;jen','listopad','prosinec'];
		var monthArrayShort = ['led','&#250;n','b&#345;','dub','kv&#283;','&#269;er','&#269;er-ec','srp','z&#225;&#345;','&#345;&#237;j','list','pros'];
		var dayArray = ['Pon','&#218;t','St','&#268;t','P&#225;','So','Ne'];
		var weekString = 't&#253;den';
		var todayString = '';
		break;	
}

if (weekStartsOnSunday) {
   var tempDayName = dayArray[6];
   for(var theIx = 6; theIx > 0; theIx--) {
      dayArray[theIx] = dayArray[theIx-1];
   }
   dayArray[0] = tempDayName;
}



var daysInMonthArray = [31,28,31,30,31,30,31,31,30,31,30,31];
var currentMonth;
var currentYear;
var currentHour;
var currentMinute;
var calendarContentDiv;
var returnDateTo;
var returnFormat;
var activeSelectBoxMonth;
var activeSelectBoxYear;
var activeSelectBoxHour;
var activeSelectBoxMinute;

var iframeObj = false;
//// fix for EI frame problem on time dropdowns 09/30/2006
var iframeObj2 =false;
function EIS_FIX_EI1(where2fixit)
{

		if(!iframeObj2)return;
		iframeObj2.style.display = 'block';
		iframeObj2.style.height =document.getElementById(where2fixit).offsetHeight+1;
		iframeObj2.style.width=document.getElementById(where2fixit).offsetWidth;
		iframeObj2.style.left=getleftPos(document.getElementById(where2fixit))+1-calendar_offsetLeft;
		iframeObj2.style.top=getTopPos(document.getElementById(where2fixit))-document.getElementById(where2fixit).offsetHeight-calendar_offsetTop;
}

function EIS_Hide_Frame()
{		if(iframeObj2)iframeObj2.style.display = 'none';}
//// fix for EI frame problem on time dropdowns 09/30/2006
var returnDateToYear;
var returnDateToMonth;
var returnDateToDay;
var returnDateToHour;
var returnDateToMinute;

var inputYear;
var inputMonth;
var inputDay;
var inputHour;
var inputMinute;
var calendarDisplayTime = false;

var selectBoxHighlightColor = '#D60808'; // Highlight color of select boxes
var selectBoxRolloverBgColor = '#E2EBED'; // Background color on drop down lists(rollover)

var selectBoxMovementInProgress = false;
var activeSelectBox = false;

function cancelCalendarEvent()
{
	return false;
}
function isLeapYear(inputYear)
{
	if(inputYear%400==0||(inputYear%4==0&&inputYear%100!=0)) return true;
	return false;

}
var activeSelectBoxMonth = false;
var activeSelectBoxDirection = false;

function highlightMonthYear()
{
	if(activeSelectBoxMonth)activeSelectBoxMonth.className='';
	activeSelectBox = this;


	if(this.className=='monthYearActive'){
		this.className='';
	}else{
		this.className = 'monthYearActive';
		activeSelectBoxMonth = this;
	}

	if(this.innerHTML.indexOf('-')>=0 || this.innerHTML.indexOf('+')>=0){
		if(this.className=='monthYearActive')
			selectBoxMovementInProgress = true;
		else
			selectBoxMovementInProgress = false;
		if(this.innerHTML.indexOf('-')>=0)activeSelectBoxDirection = -1; else activeSelectBoxDirection = 1;

	}else selectBoxMovementInProgress = false;

}

function showMonthDropDown()
{
	if(document.getElementById('monthDropDown').style.display=='block'){
		document.getElementById('monthDropDown').style.display='none';
		//// fix for EI frame problem on time dropdowns 09/30/2006
				EIS_Hide_Frame();
	}else{
		document.getElementById('monthDropDown').style.display='block';
		document.getElementById('yearDropDown').style.display='none';
		document.getElementById('hourDropDown').style.display='none';
		document.getElementById('minuteDropDown').style.display='none';
			if (MSIE)
		{ EIS_FIX_EI1('monthDropDown')}
		//// fix for EI frame problem on time dropdowns 09/30/2006

	}
}

function showYearDropDown()
{
	if(document.getElementById('yearDropDown').style.display=='block'){
		document.getElementById('yearDropDown').style.display='none';
		//// fix for EI frame problem on time dropdowns 09/30/2006
				EIS_Hide_Frame();
	}else{
		document.getElementById('yearDropDown').style.display='block';
		document.getElementById('monthDropDown').style.display='none';
		document.getElementById('hourDropDown').style.display='none';
		document.getElementById('minuteDropDown').style.display='none';
			if (MSIE)
		{ EIS_FIX_EI1('yearDropDown')}
		//// fix for EI frame problem on time dropdowns 09/30/2006

	}

}
function showHourDropDown()
{
	if(document.getElementById('hourDropDown').style.display=='block'){
		document.getElementById('hourDropDown').style.display='none';
		//// fix for EI frame problem on time dropdowns 09/30/2006
				EIS_Hide_Frame();
	}else{
		document.getElementById('hourDropDown').style.display='block';
		document.getElementById('monthDropDown').style.display='none';
		document.getElementById('yearDropDown').style.display='none';
		document.getElementById('minuteDropDown').style.display='none';
				if (MSIE)
		{ EIS_FIX_EI1('hourDropDown')}
		//// fix for EI frame problem on time dropdowns 09/30/2006
	}

}
function showMinuteDropDown()
{
	if(document.getElementById('minuteDropDown').style.display=='block'){
		document.getElementById('minuteDropDown').style.display='none';
		//// fix for EI frame problem on time dropdowns 09/30/2006
				EIS_Hide_Frame();
	}else{
		document.getElementById('minuteDropDown').style.display='block';
		document.getElementById('monthDropDown').style.display='none';
		document.getElementById('yearDropDown').style.display='none';
		document.getElementById('hourDropDown').style.display='none';
				if (MSIE)
		{ EIS_FIX_EI1('minuteDropDown')}
		//// fix for EI frame problem on time dropdowns 09/30/2006
	}

}

function selectMonth()
{
	document.getElementById('calendar_month_txt').innerHTML = this.innerHTML
	currentMonth = this.id.replace(/[^\d]/g,'');

	document.getElementById('monthDropDown').style.display='none';
	//// fix for EI frame problem on time dropdowns 09/30/2006
				EIS_Hide_Frame();
	for(var no=0;no<monthArray.length;no++){
		document.getElementById('monthDiv_'+no).style.color='';
	}
	this.style.color = selectBoxHighlightColor;
	activeSelectBoxMonth = this;
	writeCalendarContent();

}

function selectHour()
{
	document.getElementById('calendar_hour_txt').innerHTML = this.innerHTML
	currentHour = this.innerHTML.replace(/[^\d]/g,'');
	document.getElementById('hourDropDown').style.display='none';
	//// fix for EI frame problem on time dropdowns 09/30/2006
	EIS_Hide_Frame();
	if(activeSelectBoxHour){
		activeSelectBoxHour.style.color='';
	}
	activeSelectBoxHour=this;
	this.style.color = selectBoxHighlightColor;
}

function selectMinute()
{
	document.getElementById('calendar_minute_txt').innerHTML = this.innerHTML
	currentMinute = this.innerHTML.replace(/[^\d]/g,'');
	document.getElementById('minuteDropDown').style.display='none';
	//// fix for EI frame problem on time dropdowns 09/30/2006
				EIS_Hide_Frame();
	if(activeSelectBoxMinute){
		activeSelectBoxMinute.style.color='';
	}
	activeSelectBoxMinute=this;
	this.style.color = selectBoxHighlightColor;
}


function selectYear()
{
	document.getElementById('calendar_year_txt').innerHTML = this.innerHTML
	currentYear = this.innerHTML.replace(/[^\d]/g,'');
	document.getElementById('yearDropDown').style.display='none';
	//// fix for EI frame problem on time dropdowns 09/30/2006
				EIS_Hide_Frame();
	if(activeSelectBoxYear){
		activeSelectBoxYear.style.color='';
	}
	activeSelectBoxYear=this;
	this.style.color = selectBoxHighlightColor;
	writeCalendarContent();

}

function switchMonth()
{
	if(this.src.indexOf('left')>=0){
		currentMonth=currentMonth-1;;
		if(currentMonth<0){
			currentMonth=11;
			currentYear=currentYear-1;
		}
	}else{
		currentMonth=currentMonth+1;;
		if(currentMonth>11){
			currentMonth=0;
			currentYear=currentYear/1+1;
		}
	}

	writeCalendarContent();


}

function createMonthDiv(){
	var div = document.createElement('DIV');
	div.className='monthYearPicker';
	div.id = 'monthPicker';

	for(var no=0;no<monthArray.length;no++){
		var subDiv = document.createElement('DIV');
		subDiv.innerHTML = monthArray[no];
		subDiv.onmouseover = highlightMonthYear;
		subDiv.onmouseout = highlightMonthYear;
		subDiv.onclick = selectMonth;
		subDiv.id = 'monthDiv_' + no;
		subDiv.style.width = '56px';
		subDiv.onselectstart = cancelCalendarEvent;
		div.appendChild(subDiv);
		if(currentMonth && currentMonth==no){
			subDiv.style.color = selectBoxHighlightColor;
			activeSelectBoxMonth = subDiv;
		}

	}
	return div;

}

function changeSelectBoxYear(e,inputObj)
{
	if(!inputObj)inputObj =this;
	var yearItems = inputObj.parentNode.getElementsByTagName('DIV');
	if(inputObj.innerHTML.indexOf('-')>=0){
		var startYear = yearItems[1].innerHTML/1 -1;
		if(activeSelectBoxYear){
			activeSelectBoxYear.style.color='';
		}
	}else{
		var startYear = yearItems[1].innerHTML/1 +1;
		if(activeSelectBoxYear){
			activeSelectBoxYear.style.color='';

		}
	}

	for(var no=1;no<yearItems.length-1;no++){
		yearItems[no].innerHTML = startYear+no-1;
		yearItems[no].id = 'yearDiv' + (startYear/1+no/1-1);

	}
	if(activeSelectBoxYear){
		activeSelectBoxYear.style.color='';
		if(document.getElementById('yearDiv'+currentYear)){
			activeSelectBoxYear = document.getElementById('yearDiv'+currentYear);
			activeSelectBoxYear.style.color=selectBoxHighlightColor;;
		}
	}
}
function changeSelectBoxHour(e,inputObj)
{
	if(!inputObj)inputObj = this;

	var hourItems = inputObj.parentNode.getElementsByTagName('DIV');
	if(inputObj.innerHTML.indexOf('-')>=0){
		var startHour = hourItems[1].innerHTML/1 -1;
		if(startHour<0)startHour=0;
		if(activeSelectBoxHour){
			activeSelectBoxHour.style.color='';
		}
	}else{
		var startHour = hourItems[1].innerHTML/1 +1;
		if(startHour>14)startHour = 14;
		if(activeSelectBoxHour){
			activeSelectBoxHour.style.color='';

		}
	}
	var prefix = '';
	for(var no=1;no<hourItems.length-1;no++){
		if((startHour/1 + no/1) < 11)prefix = '0'; else prefix = '';
		hourItems[no].innerHTML = prefix + (startHour+no-1);

		hourItems[no].id = 'hourDiv' + (startHour/1+no/1-1);

	}
	if(activeSelectBoxHour){
		activeSelectBoxHour.style.color='';
		if(document.getElementById('hourDiv'+currentHour)){
			activeSelectBoxHour = document.getElementById('hourDiv'+currentHour);
			activeSelectBoxHour.style.color=selectBoxHighlightColor;;
		}
	}
}

function updateYearDiv()
{
    var yearSpan = 5;
    if (turnOffYearSpan) {
       yearSpan = 0;
    }
	var div = document.getElementById('yearDropDown');
	var yearItems = div.getElementsByTagName('DIV');
	for(var no=1;no<yearItems.length-1;no++){
		yearItems[no].innerHTML = currentYear/1 -yearSpan + no;
		if(currentYear==(currentYear/1 -yearSpan + no)){
			yearItems[no].style.color = selectBoxHighlightColor;
			activeSelectBoxYear = yearItems[no];
		}else{
			yearItems[no].style.color = '';
		}
	}
}

function updateMonthDiv()
{
	for(no=0;no<12;no++){
		document.getElementById('monthDiv_' + no).style.color = '';
	}
	document.getElementById('monthDiv_' + currentMonth).style.color = selectBoxHighlightColor;
	activeSelectBoxMonth = 	document.getElementById('monthDiv_' + currentMonth);
}


function updateHourDiv()
{
	var div = document.getElementById('hourDropDown');
	var hourItems = div.getElementsByTagName('DIV');

	var addHours = 0;
	if((currentHour/1 -6 + 1)<0){
		addHours = 	(currentHour/1 -6 + 1)*-1;
	}
	for(var no=1;no<hourItems.length-1;no++){
		var prefix='';
		if((currentHour/1 -6 + no + addHours) < 10)prefix='0';
		hourItems[no].innerHTML = prefix +  (currentHour/1 -6 + no + addHours);
		if(currentHour==(currentHour/1 -6 + no)){
			hourItems[no].style.color = selectBoxHighlightColor;
			activeSelectBoxHour = hourItems[no];
		}else{
			hourItems[no].style.color = '';
		}
	}
}

function updateMinuteDiv()
{
	for(no=0;no<60;no+=intervalSelectBox_minutes){
		var prefix = '';
		if(no<10)prefix = '0';

		document.getElementById('minuteDiv_' + prefix + no).style.color = '';
	}
	if(document.getElementById('minuteDiv_' + currentMinute)){
		document.getElementById('minuteDiv_' + currentMinute).style.color = selectBoxHighlightColor;
		activeSelectBoxMinute = document.getElementById('minuteDiv_' + currentMinute);
	}
}



function createYearDiv()
{

	if(!document.getElementById('yearDropDown')){
		var div = document.createElement('DIV');
		div.className='monthYearPicker';
	}else{
		var div = document.getElementById('yearDropDown');
		var subDivs = div.getElementsByTagName('DIV');
		for(var no=0;no<subDivs.length;no++){
			subDivs[no].parentNode.removeChild(subDivs[no]);
		}
	}


	var d = new Date();
	if(currentYear){
		d.setFullYear(currentYear);
	}

	var startYear = d.getFullYear()/1 - 5;

    var yearSpan = 10;
	if (! turnOffYearSpan) {
    	var subDiv = document.createElement('DIV');
    	subDiv.innerHTML = '&nbsp;&nbsp;- ';
    	subDiv.onclick = changeSelectBoxYear;
    	subDiv.onmouseover = highlightMonthYear;
    	subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
    	subDiv.onselectstart = cancelCalendarEvent;
    	div.appendChild(subDiv);
    } else {
       startYear = d.getFullYear()/1 - 0;
       yearSpan = 2;
    }

	for(var no=startYear;no<(startYear+yearSpan);no++){
		var subDiv = document.createElement('DIV');
		subDiv.innerHTML = no;
		subDiv.onmouseover = highlightMonthYear;
		subDiv.onmouseout = highlightMonthYear;
		subDiv.onclick = selectYear;
		subDiv.id = 'yearDiv' + no;
		subDiv.onselectstart = cancelCalendarEvent;
		div.appendChild(subDiv);
		if(currentYear && currentYear==no){
			subDiv.style.color = selectBoxHighlightColor;
			activeSelectBoxYear = subDiv;
		}
	}
	if (! turnOffYearSpan) {
    	var subDiv = document.createElement('DIV');
    	subDiv.innerHTML = '&nbsp;&nbsp;+ ';
    	subDiv.onclick = changeSelectBoxYear;
    	subDiv.onmouseover = highlightMonthYear;
    	subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
    	subDiv.onselectstart = cancelCalendarEvent;
    	div.appendChild(subDiv);
	}
	return div;
}

/* This function creates the hour div at the bottom bar */

function slideCalendarSelectBox()
{
	if(selectBoxMovementInProgress){
		if(activeSelectBox.parentNode.id=='hourDropDown'){
			changeSelectBoxHour(false,activeSelectBox);
		}
		if(activeSelectBox.parentNode.id=='yearDropDown'){
			changeSelectBoxYear(false,activeSelectBox);
		}

	}
	setTimeout('slideCalendarSelectBox()',speedOfSelectBoxSliding);

}

function createHourDiv()
{
	if(!document.getElementById('hourDropDown')){
		var div = document.createElement('DIV');
		div.className='monthYearPicker';
	}else{
		var div = document.getElementById('hourDropDown');
		var subDivs = div.getElementsByTagName('DIV');
		for(var no=0;no<subDivs.length;no++){
			subDivs[no].parentNode.removeChild(subDivs[no]);
		}
	}

	if(!currentHour)currentHour=0;
	var startHour = currentHour/1;
	if(startHour>14)startHour=14;

	var subDiv = document.createElement('DIV');
	subDiv.innerHTML = '&nbsp;&nbsp;- ';
	subDiv.onclick = changeSelectBoxHour;
	subDiv.onmouseover = highlightMonthYear;
	subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
	subDiv.onselectstart = cancelCalendarEvent;
	div.appendChild(subDiv);

	for(var no=startHour;no<startHour+10;no++){
		var prefix = '';
		if(no/1<10)prefix='0';
		var subDiv = document.createElement('DIV');
		subDiv.innerHTML = prefix + no;
		subDiv.onmouseover = highlightMonthYear;
		subDiv.onmouseout = highlightMonthYear;
		subDiv.onclick = selectHour;
		subDiv.id = 'hourDiv' + no;
		subDiv.onselectstart = cancelCalendarEvent;
		div.appendChild(subDiv);
		if(currentYear && currentYear==no){
			subDiv.style.color = selectBoxHighlightColor;
			activeSelectBoxYear = subDiv;
		}
	}
	var subDiv = document.createElement('DIV');
	subDiv.innerHTML = '&nbsp;&nbsp;+ ';
	subDiv.onclick = changeSelectBoxHour;
	subDiv.onmouseover = highlightMonthYear;
	subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
	subDiv.onselectstart = cancelCalendarEvent;
	div.appendChild(subDiv);

	return div;
}
/* This function creates the minute div at the bottom bar */

function createMinuteDiv()
{
	if(!document.getElementById('minuteDropDown')){
		var div = document.createElement('DIV');
		div.className='monthYearPicker';
	}else{
		var div = document.getElementById('minuteDropDown');
		var subDivs = div.getElementsByTagName('DIV');
		for(var no=0;no<subDivs.length;no++){
			subDivs[no].parentNode.removeChild(subDivs[no]);
		}
	}
	var startMinute = 0;
	var prefix = '';
	for(var no=startMinute;no<60;no+=intervalSelectBox_minutes){

		if(no<10)prefix='0'; else prefix = '';
		var subDiv = document.createElement('DIV');
		subDiv.innerHTML = prefix + no;
		subDiv.onmouseover = highlightMonthYear;
		subDiv.onmouseout = highlightMonthYear;
		subDiv.onclick = selectMinute;
		subDiv.id = 'minuteDiv_' + prefix +  no;
		subDiv.onselectstart = cancelCalendarEvent;
		div.appendChild(subDiv);
		if(currentYear && currentYear==no){
			subDiv.style.color = selectBoxHighlightColor;
			activeSelectBoxYear = subDiv;
		}
	}
	return div;
}

function highlightSelect()
{

	if(this.className=='selectBoxTime'){
		this.className = 'selectBoxTimeOver';
		this.getElementsByTagName('IMG')[0].src = pathToImages + 'down_time_over.gif';
	}else if(this.className=='selectBoxTimeOver'){
		this.className = 'selectBoxTime';
		this.getElementsByTagName('IMG')[0].src = pathToImages + 'down_time.gif';
	}

	if(this.className=='selectBox'){
		this.className = 'selectBoxOver';
		this.getElementsByTagName('IMG')[0].src = pathToImages + 'down_over.gif';
	}else if(this.className=='selectBoxOver'){
		this.className = 'selectBox';
		this.getElementsByTagName('IMG')[0].src = pathToImages + 'down.gif';
	}

}

function highlightArrow()
{
	if(this.src.indexOf('over')>=0){
		if(this.src.indexOf('left')>=0)this.src = pathToImages + 'left.gif';
		if(this.src.indexOf('right')>=0)this.src = pathToImages + 'right.gif';
	}else{
		if(this.src.indexOf('left')>=0)this.src = pathToImages + 'left_over.gif';
		if(this.src.indexOf('right')>=0)this.src = pathToImages + 'right_over.gif';
	}
}

function highlightClose()
{
	if(this.src.indexOf('over')>=0){
		this.src = pathToImages + 'close.gif';
	}else{
		this.src = pathToImages + 'close_over.gif';
	}

}

function closeCalendar(){

	document.getElementById('yearDropDown').style.display='none';
	document.getElementById('monthDropDown').style.display='none';
	document.getElementById('hourDropDown').style.display='none';
	document.getElementById('minuteDropDown').style.display='none';

	calendarDiv.style.display='none';
	if(iframeObj){
		iframeObj.style.display='none';
		 //// //// fix for EI frame problem on time dropdowns 09/30/2006
			EIS_Hide_Frame();}
	if(activeSelectBoxMonth)activeSelectBoxMonth.className='';
	if(activeSelectBoxYear)activeSelectBoxYear.className='';


}

function writeTopBar()
{

	var topBar = document.createElement('DIV');
	topBar.className = 'topBar';
	topBar.id = 'topBar';
	calendarDiv.appendChild(topBar);

	// Left arrow
	var leftDiv = document.createElement('DIV');
	leftDiv.style.marginRight = '1px';
	var img = document.createElement('IMG');
	img.src = pathToImages + 'left.gif';
	img.onmouseover = highlightArrow;
	img.onclick = switchMonth;
	img.onmouseout = highlightArrow;
	leftDiv.appendChild(img);
	topBar.appendChild(leftDiv);
	if(Opera)leftDiv.style.width = '16px';

	// Right arrow
	var rightDiv = document.createElement('DIV');
	rightDiv.style.marginRight = '1px';
	var img = document.createElement('IMG');
	img.src = pathToImages + 'right.gif';
	img.onclick = switchMonth;
	img.onmouseover = highlightArrow;
	img.onmouseout = highlightArrow;
	rightDiv.appendChild(img);
	if(Opera)rightDiv.style.width = '16px';
	topBar.appendChild(rightDiv);


	// Month selector
	var monthDiv = document.createElement('DIV');
	monthDiv.id = 'monthSelect';
	monthDiv.onmouseover = highlightSelect;
	monthDiv.onmouseout = highlightSelect;
	monthDiv.onclick = showMonthDropDown;
	var span = document.createElement('SPAN');
	span.innerHTML = monthArray[currentMonth];
	span.id = 'calendar_month_txt';
	monthDiv.appendChild(span);

	var img = document.createElement('IMG');
	img.src = pathToImages + 'down.gif';
	img.style.position = 'absolute';
	img.style.right = '0px';
	monthDiv.appendChild(img);
	monthDiv.className = 'selectBox';
	if(Opera){
		img.style.cssText = 'float:right;position:relative';
		img.style.position = 'relative';
		img.style.styleFloat = 'right';
	}
	topBar.appendChild(monthDiv);

	var monthPicker = createMonthDiv();
	monthPicker.style.left = '37px';
	monthPicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
	monthPicker.style.width ='60px';
	monthPicker.id = 'monthDropDown';

	calendarDiv.appendChild(monthPicker);

	// Year selector
	var yearDiv = document.createElement('DIV');
	yearDiv.onmouseover = highlightSelect;
	yearDiv.onmouseout = highlightSelect;
	yearDiv.onclick = showYearDropDown;
	var span = document.createElement('SPAN');
	span.innerHTML = currentYear;
	span.id = 'calendar_year_txt';
	yearDiv.appendChild(span);
	topBar.appendChild(yearDiv);

	var img = document.createElement('IMG');
	img.src = pathToImages + 'down.gif';
	yearDiv.appendChild(img);
	yearDiv.className = 'selectBox';

	if(Opera){
		yearDiv.style.width = '50px';
		img.style.cssText = 'float:right';
		img.style.position = 'relative';
		img.style.styleFloat = 'right';
	}

	var yearPicker = createYearDiv();
	yearPicker.style.left = '113px';
	yearPicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
	yearPicker.style.width = '35px';
	yearPicker.id = 'yearDropDown';
	calendarDiv.appendChild(yearPicker);


	var img = document.createElement('IMG');
	img.src = pathToImages + 'close.gif';
	img.style.styleFloat = 'right';
	img.onmouseover = highlightClose;
	img.onmouseout = highlightClose;
	img.onclick = closeCalendar;
	topBar.appendChild(img);
	if(!document.all){
		img.style.position = 'absolute';
		img.style.right = '2px';
	}



}

function writeCalendarContent()
{
	var calendarContentDivExists = true;
	if(!calendarContentDiv){
		calendarContentDiv = document.createElement('DIV');
		calendarDiv.appendChild(calendarContentDiv);
		calendarContentDivExists = false;
	}
	currentMonth = currentMonth/1;
	var d = new Date();

	d.setFullYear(currentYear);
	d.setDate(1);
	d.setMonth(currentMonth);

	var dayStartOfMonth = d.getDay();
	if (! weekStartsOnSunday) {
      if(dayStartOfMonth==0)dayStartOfMonth=7;
      dayStartOfMonth--;
   }

	document.getElementById('calendar_year_txt').innerHTML = currentYear;
	document.getElementById('calendar_month_txt').innerHTML = monthArray[currentMonth];
	document.getElementById('calendar_hour_txt').innerHTML = currentHour/1 > 9 ? currentHour : '0' + currentHour;
	document.getElementById('calendar_minute_txt').innerHTML = currentMinute/1 >9 ? currentMinute : '0' + currentMinute;

	var existingTable = calendarContentDiv.getElementsByTagName('TABLE');
	if(existingTable.length>0){
		calendarContentDiv.removeChild(existingTable[0]);
	}

	var calTable = document.createElement('TABLE');
	calTable.width = '100%';
	calTable.cellSpacing = '0';
	calendarContentDiv.appendChild(calTable);




	var calTBody = document.createElement('TBODY');
	calTable.appendChild(calTBody);
	var row = calTBody.insertRow(-1);
	row.className = 'calendar_week_row';
   if (showWeekNumber) {
      var cell = row.insertCell(-1);
	   cell.innerHTML = weekString;
	   cell.className = 'calendar_week_column';
	   cell.style.backgroundColor = selectBoxRolloverBgColor;
	}

	for(var no=0;no<dayArray.length;no++){
		var cell = row.insertCell(-1);
		cell.innerHTML = dayArray[no];
	}

	var row = calTBody.insertRow(-1);

   if (showWeekNumber) {
	   var cell = row.insertCell(-1);
	   cell.className = 'calendar_week_column';
	   cell.style.backgroundColor = selectBoxRolloverBgColor;
	   var week = getWeek(currentYear,currentMonth,1);
	   cell.innerHTML = week;		// Week
	}
	for(var no=0;no<dayStartOfMonth;no++){
		var cell = row.insertCell(-1);
		cell.innerHTML = '&nbsp;';
	}

	var colCounter = dayStartOfMonth;
	var daysInMonth = daysInMonthArray[currentMonth];
	if(daysInMonth==28){
		if(isLeapYear(currentYear))daysInMonth=29;
	}

	for(var no=1;no<=daysInMonth;no++){
		d.setDate(no-1);
		if(colCounter>0 && colCounter%7==0){
			var row = calTBody.insertRow(-1);
         if (showWeekNumber) {
            var cell = row.insertCell(-1);
            cell.className = 'calendar_week_column';
            var week = getWeek(currentYear,currentMonth,no);
            cell.innerHTML = week;		// Week
            cell.style.backgroundColor = selectBoxRolloverBgColor;
         }
		}
		var cell = row.insertCell(-1);
		if(currentYear==inputYear && currentMonth == inputMonth && no==inputDay){
			cell.className='activeDay';
		}
		cell.innerHTML = no;
		cell.onclick = pickDate;
		colCounter++;
	}


	if(!document.all){
		if(calendarContentDiv.offsetHeight)
			document.getElementById('topBar').style.top = calendarContentDiv.offsetHeight + document.getElementById('timeBar').offsetHeight + document.getElementById('topBar').offsetHeight -1 + 'px';
		else{
			document.getElementById('topBar').style.top = '';
			document.getElementById('topBar').style.bottom = '0px';
		}

	}

	if(iframeObj){
		if(!calendarContentDivExists)setTimeout('resizeIframe()',350);else setTimeout('resizeIframe()',10);
	}




}

function resizeIframe()
{
	iframeObj.style.width = calendarDiv.offsetWidth + 'px';
	iframeObj.style.height = calendarDiv.offsetHeight + 'px' ;


}

function pickTodaysDate()
{
	var d = new Date();
	currentMonth = d.getMonth();
	currentYear = d.getFullYear();
	pickDate(false,d.getDate());

}

function pickDate(e,inputDay)
{
	var month = currentMonth/1 +1;
	if(month<10)month = '0' + month;
	var day;
	if(!inputDay && this)day = this.innerHTML; else day = inputDay;

	if(day/1<10)day = '0' + day;
	if(returnFormat){
		returnFormat = returnFormat.replace('dd',day);
		returnFormat = returnFormat.replace('mm',month);
		returnFormat = returnFormat.replace('yyyy',currentYear);
		returnFormat = returnFormat.replace('hh',currentHour);
		returnFormat = returnFormat.replace('ii',currentMinute);
		returnFormat = returnFormat.replace('d',day/1);
		returnFormat = returnFormat.replace('m',month/1);

		returnDateTo.value = returnFormat;
		try{
			returnDateTo.onchange();
		}catch(e){

		}
	}else{
		for(var no=0;no<returnDateToYear.options.length;no++){
			if(returnDateToYear.options[no].value==currentYear){
				returnDateToYear.selectedIndex=no;
				break;
			}
		}
		for(var no=0;no<returnDateToMonth.options.length;no++){
			if(returnDateToMonth.options[no].value==parseFloat(month)){
				returnDateToMonth.selectedIndex=no;
				break;
			}
		}
		for(var no=0;no<returnDateToDay.options.length;no++){
			if(returnDateToDay.options[no].value==parseFloat(day)){
				returnDateToDay.selectedIndex=no;
				break;
			}
		}
		if(calendarDisplayTime){
			for(var no=0;no<returnDateToHour.options.length;no++){
				if(returnDateToHour.options[no].value==parseFloat(currentHour)){
					returnDateToHour.selectedIndex=no;
					break;
				}
			}
			for(var no=0;no<returnDateToMinute.options.length;no++){
				if(returnDateToMinute.options[no].value==parseFloat(currentMinute)){
					returnDateToMinute.selectedIndex=no;
					break;
				}
			}
		}
	}
	closeCalendar();

}

// This function is from http://www.codeproject.com/csharp/gregorianwknum.asp
// Only changed the month add
function getWeek(year,month,day){
   if (! weekStartsOnSunday) {
	   day = (day/1);
	} else {
	   day = (day/1)+1;
	}
	year = year /1;
    month = month/1 + 1; //use 1-12
    var a = Math.floor((14-(month))/12);
    var y = year+4800-a;
    var m = (month)+(12*a)-3;
    var jd = day + Math.floor(((153*m)+2)/5) +
                 (365*y) + Math.floor(y/4) - Math.floor(y/100) +
                 Math.floor(y/400) - 32045;      // (gregorian calendar)
    var d4 = (jd+31741-(jd%7))%146097%36524%1461;
    var L = Math.floor(d4/1460);
    var d1 = ((d4-L)%365)+L;
    NumberOfWeek = Math.floor(d1/7) + 1;
    return NumberOfWeek;
}

function writeTimeBar()
{
	var timeBar = document.createElement('DIV');
	timeBar.id = 'timeBar';
	timeBar.className = 'timeBar';

	var subDiv = document.createElement('DIV');
	subDiv.innerHTML = 'Time:';

	// hour selector
	var hourDiv = document.createElement('DIV');
	hourDiv.onmouseover = highlightSelect;
	hourDiv.onmouseout = highlightSelect;
	hourDiv.onclick = showHourDropDown;
	hourDiv.style.width = '30px';
	var span = document.createElement('SPAN');
	span.innerHTML = currentHour;
	span.id = 'calendar_hour_txt';
	hourDiv.appendChild(span);
	timeBar.appendChild(hourDiv);

	var img = document.createElement('IMG');
	img.src = pathToImages + 'down_time.gif';
	hourDiv.appendChild(img);
	hourDiv.className = 'selectBoxTime';

	if(Opera){
		hourDiv.style.width = '30px';
		img.style.cssText = 'float:right';
		img.style.position = 'relative';
		img.style.styleFloat = 'right';
	}

	var hourPicker = createHourDiv();
	hourPicker.style.left = '130px';
	//hourPicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
	hourPicker.style.width = '35px';
	hourPicker.id = 'hourDropDown';
	calendarDiv.appendChild(hourPicker);

	// Add Minute picker

	// Year selector
	var minuteDiv = document.createElement('DIV');
	minuteDiv.onmouseover = highlightSelect;
	minuteDiv.onmouseout = highlightSelect;
	minuteDiv.onclick = showMinuteDropDown;
	minuteDiv.style.width = '30px';
	var span = document.createElement('SPAN');
	span.innerHTML = currentMinute;

	span.id = 'calendar_minute_txt';
	minuteDiv.appendChild(span);
	timeBar.appendChild(minuteDiv);

	var img = document.createElement('IMG');
	img.src = pathToImages + 'down_time.gif';
	minuteDiv.appendChild(img);
	minuteDiv.className = 'selectBoxTime';

	if(Opera){
		minuteDiv.style.width = '30px';
		img.style.cssText = 'float:right';
		img.style.position = 'relative';
		img.style.styleFloat = 'right';
	}

	var minutePicker = createMinuteDiv();
	minutePicker.style.left = '167px';
	//minutePicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
	minutePicker.style.width = '35px';
	minutePicker.id = 'minuteDropDown';
	calendarDiv.appendChild(minutePicker);


	return timeBar;

}

function writeBottomBar()
{
	var d = new Date();
	var bottomBar = document.createElement('DIV');

	bottomBar.id = 'bottomBar';

	bottomBar.style.cursor = 'pointer';
	bottomBar.className = 'todaysDate';
	// var todayStringFormat = '[todayString] [dayString] [day] [monthString] [year]';	;;

	var subDiv = document.createElement('DIV');
	subDiv.onclick = pickTodaysDate;
	subDiv.id = 'todaysDateString';
	subDiv.style.width = (calendarDiv.offsetWidth - 95) + 'px';
	var day = d.getDay();
	if (! weekStartsOnSunday) {
      if(day==0)day = 7;
      day--;
   }

	var bottomString = todayStringFormat;
	bottomString = bottomString.replace('[monthString]',monthArrayShort[d.getMonth()]);
	bottomString = bottomString.replace('[day]',d.getDate());
	bottomString = bottomString.replace('[year]',d.getFullYear());
	bottomString = bottomString.replace('[dayString]',dayArray[day].toLowerCase());
	bottomString = bottomString.replace('[UCFdayString]',dayArray[day]);
	bottomString = bottomString.replace('[todayString]',todayString);


	subDiv.innerHTML = todayString + ': ' + d.getDate() + '. ' + monthArrayShort[d.getMonth()] + ', ' +  d.getFullYear() ;
	subDiv.innerHTML = bottomString ;
	bottomBar.appendChild(subDiv);

	var timeDiv = writeTimeBar();
	bottomBar.appendChild(timeDiv);

	calendarDiv.appendChild(bottomBar);



}
function getTopPos(inputObj)
{

  var returnValue = inputObj.offsetTop + inputObj.offsetHeight;
  while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetTop;
  return returnValue + calendar_offsetTop;
}

function getleftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetLeft;
  return returnValue + calendar_offsetLeft;
}

function positionCalendar(inputObj)
{
	calendarDiv.style.left = getleftPos(inputObj) + 'px';
	calendarDiv.style.top = getTopPos(inputObj) + 'px';
	if(iframeObj){
		iframeObj.style.left = calendarDiv.style.left;
		iframeObj.style.top =  calendarDiv.style.top;
		//// fix for EI frame problem on time dropdowns 09/30/2006
		iframeObj2.style.left = calendarDiv.style.left;
		iframeObj2.style.top =  calendarDiv.style.top;
	}

}

function initCalendar()
{
	if(MSIE){
		iframeObj = document.createElement('IFRAME');
		iframeObj.style.filter = 'alpha(opacity=0)';
		iframeObj.style.position = 'absolute';
		iframeObj.border='0px';
		iframeObj.style.border = '0px';
		iframeObj.style.backgroundColor = '#FF0000';
		//// fix for EI frame problem on time dropdowns 09/30/2006
		iframeObj2 = document.createElement('IFRAME');
		iframeObj2.style.position = 'absolute';
		iframeObj2.border='0px';
		iframeObj2.style.border = '0px';
		iframeObj2.style.height = '1px';
		iframeObj2.style.width = '1px';
		//// fix for EI frame problem on time dropdowns 09/30/2006
		// Added fixed for HTTPS
		iframeObj2.src = 'blank.html';
		iframeObj.src = 'blank.html';
		document.body.appendChild(iframeObj2);  // gfb move this down AFTER the .src is set
		document.body.appendChild(iframeObj);
	}

	calendarDiv = document.createElement('DIV');
	calendarDiv.id = 'calendarDiv';
	calendarDiv.style.zIndex = 1000;
	slideCalendarSelectBox();

	document.body.appendChild(calendarDiv);
	writeBottomBar();
	writeTopBar();



	if(!currentYear){
		var d = new Date();
		currentMonth = d.getMonth();
		currentYear = d.getFullYear();
	}
	writeCalendarContent();



}

function setTimeProperties()
{
	if(!calendarDisplayTime){
		document.getElementById('timeBar').style.display='none';
		document.getElementById('timeBar').style.visibility='hidden';
		document.getElementById('todaysDateString').style.width = '100%';


	}else{
		document.getElementById('timeBar').style.display='block';
		document.getElementById('timeBar').style.visibility='visible';
		document.getElementById('hourDropDown').style.top = document.getElementById('calendar_minute_txt').parentNode.offsetHeight + calendarContentDiv.offsetHeight + document.getElementById('topBar').offsetHeight + 'px';
		document.getElementById('minuteDropDown').style.top = document.getElementById('calendar_minute_txt').parentNode.offsetHeight + calendarContentDiv.offsetHeight + document.getElementById('topBar').offsetHeight + 'px';
		document.getElementById('minuteDropDown').style.right = '50px';
		document.getElementById('hourDropDown').style.right = '50px';
		document.getElementById('todaysDateString').style.width = '115px';
	}
}

function calendarSortItems(a,b)
{
	return a/1 - b/1;
}


function displayCalendar(inputField,format,buttonObj,displayTime,timeInput)
{
	if(displayTime)calendarDisplayTime=true; else calendarDisplayTime = false;
	
	if(inputField.value.length>6){ //dates must have at least 6 digits...
       if(!inputField.value.match(/^[0-9]*?$/gi)){
       	
			var items = inputField.value.split(/[^0-9]/gi);
			var positionArray = new Object();
			positionArray.m = format.indexOf('mm');
			if(positionArray.m==-1)positionArray.m = format.indexOf('m');
			positionArray.d = format.indexOf('dd');
			if(positionArray.d==-1)positionArray.d = format.indexOf('d');
			positionArray.y = format.indexOf('yyyy');
			positionArray.h = format.indexOf('hh');
			positionArray.i = format.indexOf('ii');
			
			this.initialHour = '00';
			this.initialMinute = '00';				
			var elements = ['y','m','d','h','i'];
			var properties = ['currentYear','currentMonth','inputDay','currentHour','currentMinute'];
			var propertyLength = [4,2,2,2,2];
			for(var i=0;i<elements.length;i++) {
				if(positionArray[elements[i]]>=0) {
					window[properties[i]] = inputField.value.substr(positionArray[elements[i]],propertyLength[i])/1;
				}					
			}			
			currentMonth--;
		}else{
			var monthPos = format.indexOf('mm');
			currentMonth = inputField.value.substr(monthPos,2)/1 -1;
			var yearPos = format.indexOf('yyyy');
			currentYear = inputField.value.substr(yearPos,4);
			var dayPos = format.indexOf('dd');
			tmpDay = inputField.value.substr(dayPos,2);

			var hourPos = format.indexOf('hh');
			if(hourPos>=0){
				tmpHour = inputField.value.substr(hourPos,2);
				currentHour = tmpHour;
				if(currentHour.length==1) currentHour = '0'
			}else{
				currentHour = '00';
			}
			var minutePos = format.indexOf('ii');
			if(minutePos>=0){
				tmpMinute = inputField.value.substr(minutePos,2);
				currentMinute = tmpMinute;
			}else{
				currentMinute = '00';
			}
		}
	}else{
		var d = new Date();
		currentMonth = d.getMonth();
		currentYear = d.getFullYear();
		currentHour = '08';
		currentMinute = '00';
		inputDay = d.getDate()/1;
	}

	inputYear = currentYear;
	inputMonth = currentMonth;


	if(!calendarDiv){
		initCalendar();
	}else{
		if(calendarDiv.style.display=='block'){
			closeCalendar();
			return false;
		}
		writeCalendarContent();
	}



	returnFormat = format;
	returnDateTo = inputField;
	positionCalendar(buttonObj);
	calendarDiv.style.visibility = 'visible';
	calendarDiv.style.display = 'block';
	if(iframeObj){
		iframeObj.style.display = '';
		iframeObj.style.height = '140px';
		iframeObj.style.width = '195px';
				iframeObj2.style.display = '';
		iframeObj2.style.height = '140px';
		iframeObj2.style.width = '195px';
	}

	setTimeProperties();
	updateYearDiv();
	updateMonthDiv();
	updateMinuteDiv();
	updateHourDiv();

}

function displayCalendarSelectBox(yearInput,monthInput,dayInput,hourInput,minuteInput,buttonObj)
{
	if(!hourInput)calendarDisplayTime=false; else calendarDisplayTime = true;

	currentMonth = monthInput.options[monthInput.selectedIndex].value/1-1;
	currentYear = yearInput.options[yearInput.selectedIndex].value;
	if(hourInput){
		currentHour = hourInput.options[hourInput.selectedIndex].value;
		inputHour = currentHour/1;
	}
	if(minuteInput){
		currentMinute = minuteInput.options[minuteInput.selectedIndex].value;
		inputMinute = currentMinute/1;
	}

	inputYear = yearInput.options[yearInput.selectedIndex].value;
	inputMonth = monthInput.options[monthInput.selectedIndex].value/1 - 1;
	inputDay = dayInput.options[dayInput.selectedIndex].value/1;

	if(!calendarDiv){
		initCalendar();
	}else{
		writeCalendarContent();
	}



	returnDateToYear = yearInput;
	returnDateToMonth = monthInput;
	returnDateToDay = dayInput;
	returnDateToHour = hourInput;
	returnDateToMinute = minuteInput;




	returnFormat = false;
	returnDateTo = false;
	positionCalendar(buttonObj);
	calendarDiv.style.visibility = 'visible';
	calendarDiv.style.display = 'block';
	if(iframeObj){
		iframeObj.style.display = '';
		iframeObj.style.height = calendarDiv.offsetHeight + 'px';
		iframeObj.style.width = calendarDiv.offsetWidth + 'px';
		//// fix for EI frame problem on time dropdowns 09/30/2006
		iframeObj2.style.display = '';
		iframeObj2.style.height = calendarDiv.offsetHeight + 'px';
		iframeObj2.style.width = calendarDiv.offsetWidth + 'px'
	}
	setTimeProperties();
	updateYearDiv();
	updateMonthDiv();
	updateHourDiv();
	updateMinuteDiv();

}

