/* 
 * DasÖrtliche Javascript Library
 * Copyright (C) 2008 TENSQUARE gmbh
 */
if(!$oe$||!$||!$oe$.ui){throw new Error("Core libs missing");
}(function(){var SB_DEFAULT_SELECTOR_CLASS="bgfocus";
var SB_DEFAULT_CLASS="bgfocusimg";
var SB_ITEM_CLASS="subnava";
var SB_SPECIALITEM_CLASS="subnav_selectbox";
var SB_SPECIAL_BUTTON="selectbox_btn";
var SB_SPECIAL_BUTTON_LINK="selectbox_btn_link";
var SB_ID_POSTFIX="toSearch";
var SB_SPEZIALS_SELECTOR="#subnav li:last";
var SB_CONTAINER_SELECTOR="#searchbox";
var SB_ACTIVE_CLASS="on";
var SB_CI_PARAM="ci";
var SB_CIID_PARAM="ciid";
var SB_KGS_PARAM="kgs";
var SB_ZIP_PARAM="plz";
var SB_DISTRICT_PARAM="district";
var SB_S_KW="std_suchwort",SB_S_CI="std_ort",SB_S_CIR="std_ortmerken";
var SB_A_NA="adv_nachname",SB_A_ST="adv_strasse",SB_A_NO="adv_nr",SB_A_ZIP="adv_plz",SB_A_CI="adv_ort";
var SB_R_KW="umkreis_suchwort",SB_R_CI="umkreis_ort",SB_R_ST="umkreis_strasse",SB_R_NO="umkreis_nr";
var SB_B_TI="busbahn_zeit",SB_B_CI="busbahn_startort";
var SB_N_TI="notapo_uhrzeit";
var SB_C_CI="geld_suchort",SB_C_ST="geld_strasse",SB_C_NO="geld_nr";
var SB_M_CI="kino_film_standort";
var SB_P_ST="notapo_strasse",SB_P_NO="notapo_nr",SB_P_CI="notapo_ort";
var SB_Z_ST="plz_strasse",SB_Z_NO="plz_nr",SB_Z_CI="plz_ort",SB_Z_ZIP="plz_plz";
var SB_J_KW="stellen_was",SB_J_CI="stellen_ort",SB_J_CIR="stellen_ortmerken";
var SB_E_KW="veranst_wen_was",SB_E_CI="veranst_ort";
var SB_AC_ST="vorw_strasse",SB_AC_No="vorw_nr",SB_AC_CI="vorw_ort";
var INPUTS_NO={};
INPUTS_NO[SB_S_CI]=[SB_A_ZIP,SB_Z_ZIP];
INPUTS_NO[SB_R_CI]=[SB_A_ZIP,SB_Z_ZIP];
INPUTS_NO[SB_B_CI]=[SB_A_ZIP,SB_Z_ZIP];
INPUTS_NO[SB_C_CI]=[SB_A_ZIP,SB_Z_ZIP];
INPUTS_NO[SB_M_CI]=[SB_A_ZIP,SB_Z_ZIP];
INPUTS_NO[SB_P_CI]=[SB_A_ZIP,SB_Z_ZIP];
INPUTS_NO[SB_J_CI]=[SB_A_ZIP,SB_Z_ZIP];
INPUTS_NO[SB_E_CI]=[SB_A_ZIP,SB_Z_ZIP];
INPUTS_NO[SB_AC_CI]=[SB_A_ZIP,SB_Z_ZIP];
INPUTS_NO[SB_A_ZIP]=[SB_S_CI,SB_R_CI,SB_B_CI,SB_C_CI,SB_M_CI,SB_P_CI,SB_J_CI,SB_E_CI,SB_AC_CI];
INPUTS_NO[SB_Z_ZIP]=[SB_S_CI,SB_R_CI,SB_B_CI,SB_C_CI,SB_M_CI,SB_P_CI,SB_J_CI,SB_E_CI,SB_AC_CI];
var INPUTS={};
INPUTS[SB_S_KW]=[SB_A_NA,SB_R_KW,SB_J_KW,SB_E_KW];
INPUTS[SB_S_CI]=[SB_R_CI,SB_C_CI,SB_M_CI,SB_P_CI,SB_J_CI,SB_E_CI,SB_AC_CI,SB_A_CI,SB_Z_CI];
INPUTS[SB_S_CIR]=[SB_J_CIR];
INPUTS[SB_A_NA]=[SB_S_KW,SB_R_KW,SB_J_KW,SB_E_KW];
INPUTS[SB_A_CI]=[SB_S_CI,SB_Z_CI,SB_R_CI,SB_C_CI,SB_M_CI,SB_P_CI,SB_J_CI,SB_E_CI,SB_AC_CI];
INPUTS[SB_A_ST]=[SB_R_ST,SB_C_ST,SB_P_ST,SB_Z_ST,SB_AC_ST];
INPUTS[SB_A_NO]=[SB_R_NO,SB_C_NO,SB_P_NO,SB_Z_NO,SB_AC_No];
INPUTS[SB_A_ZIP]=[SB_Z_ZIP];
INPUTS[SB_R_KW]=[SB_A_NA,SB_S_KW,SB_J_KW,SB_E_KW];
INPUTS[SB_R_CI]=[SB_S_CI,SB_C_CI,SB_M_CI,SB_P_CI,SB_J_CI,SB_E_CI,SB_AC_CI,SB_A_CI,SB_Z_CI];
INPUTS[SB_R_ST]=[SB_A_ST,SB_C_ST,SB_P_ST,SB_Z_ST,SB_AC_ST];
INPUTS[SB_R_NO]=[SB_A_NO,SB_C_NO,SB_P_NO,SB_Z_NO,SB_AC_No];
INPUTS[SB_B_TI]=[SB_N_TI];
INPUTS[SB_C_CI]=[SB_S_CI,SB_R_CI,SB_M_CI,SB_P_CI,SB_J_CI,SB_E_CI,SB_AC_CI,SB_A_CI,SB_Z_CI];
INPUTS[SB_C_ST]=[SB_R_ST,SB_P_ST,SB_A_ST,SB_Z_ST,SB_AC_ST];
INPUTS[SB_C_NO]=[SB_A_NO,SB_R_NO,SB_P_NO,SB_Z_NO,SB_AC_No];
INPUTS[SB_M_CI]=[SB_S_CI,SB_R_CI,SB_C_CI,SB_P_CI,SB_J_CI,SB_E_CI,SB_AC_CI,SB_A_CI,SB_Z_CI];
INPUTS[SB_N_TI]=[SB_B_TI];
INPUTS[SB_P_CI]=[SB_S_CI,SB_R_CI,SB_M_CI,SB_C_CI,SB_J_CI,SB_E_CI,SB_AC_CI,SB_A_CI,SB_Z_CI];
INPUTS[SB_P_ST]=[SB_R_ST,SB_C_ST,SB_A_ST,SB_Z_ST,SB_AC_ST];
INPUTS[SB_P_NO]=[SB_R_NO,SB_C_NO,SB_A_NO,SB_Z_NO,SB_AC_No];
INPUTS[SB_Z_ST]=[SB_R_ST,SB_C_ST,SB_P_ST,SB_A_ST,SB_AC_ST];
INPUTS[SB_Z_NO]=[SB_R_NO,SB_C_NO,SB_P_NO,SB_A_NO,SB_AC_No];
INPUTS[SB_Z_CI]=[SB_A_CI,SB_S_CI,SB_R_CI,SB_C_CI,SB_M_CI,SB_P_CI,SB_J_CI,SB_E_CI,SB_AC_CI];
INPUTS[SB_Z_ZIP]=[SB_A_ZIP];
INPUTS[SB_J_KW]=[SB_A_NA,SB_R_KW,SB_S_KW,SB_E_KW];
INPUTS[SB_J_CI]=[SB_S_CI,SB_R_CI,SB_M_CI,SB_P_CI,SB_C_CI,SB_E_CI,SB_AC_CI,SB_A_CI,SB_Z_CI];
INPUTS[SB_J_CIR]=[SB_S_CIR];
INPUTS[SB_E_KW]=[SB_A_NA,SB_R_KW,SB_J_KW,SB_S_KW];
INPUTS[SB_E_CI]=[SB_S_CI,SB_R_CI,SB_M_CI,SB_P_CI,SB_J_CI,SB_C_CI,SB_AC_CI,SB_A_CI,SB_Z_CI];
INPUTS[SB_AC_ST]=[SB_R_ST,SB_C_ST,SB_P_ST,SB_Z_ST,SB_A_ST];
INPUTS[SB_AC_No]=[SB_R_NO,SB_C_NO,SB_P_NO,SB_Z_NO,SB_A_NO];
INPUTS[SB_AC_CI]=[SB_S_CI,SB_R_CI,SB_M_CI,SB_P_CI,SB_J_CI,SB_E_CI,SB_C_CI,SB_A_CI,SB_Z_CI];
var SB_TYPES={search_std:{idSuffix:"Standardsuche",fields:[SB_S_KW,SB_S_CI,SB_S_CIR]},search_ext:{idSuffix:"ErweiterteSuche",fields:[SB_A_NA,SB_A_ST,SB_A_NO,SB_A_ZIP,SB_A_CI]},search_radius:{idSuffix:"Umkreissuche",fields:[SB_R_KW,SB_R_CI,SB_R_ST,SB_R_NO]},search_inverse:{idSuffix:"Rueckwaertssuche",fields:[SB_B_TI,SB_B_CI]},search_transport:{special:true,idSuffix:"BusBahn",fields:[SB_N_TI]},search_atm:{special:true,idSuffix:"Geldautomaten",fields:[SB_C_CI,SB_C_ST,SB_C_NO]},search_cinema:{special:true,idSuffix:"Filme",fields:[SB_M_CI]},search_pha:{special:true,idSuffix:"Notapotheken",fields:[SB_P_ST,SB_P_NO,SB_P_CI]},search_zip:{special:true,idSuffix:"PLZ",fields:[SB_Z_ST,SB_Z_NO,SB_Z_ZIP,SB_Z_CI]},search_job:{special:true,idSuffix:"Stellenagebote",fields:[SB_J_KW,SB_J_CI,SB_J_CIR]},search_event:{special:true,idSuffix:"Veranstaltungen",fields:[SB_E_KW,SB_E_CI]},search_areacode:{special:true,idSuffix:"Vorwahlen",fields:[SB_AC_ST,SB_AC_No,SB_AC_CI]}};
var search=$oe$.getNamespace("search");
var DEFAULT_OPTIONS={language:"de",reg:false,autoComplete:{delay:200,minChars:2,useMore:true,moreURL:"",moreParams:"",selectParams:"zvo_ok=4",onChangeTerm:null}};
this.getTypeByIdSuffix=function(idSuffix){var t=false;
for(var type in SB_TYPES){if(SB_TYPES[type].idSuffix==idSuffix){return SB_TYPES[type];
}}return null;
};
function SearchboxHandler(onClickFn,sbOptions,addParams,onAfterChangeFn){var self=this;
var onClick=onClickFn;
var onAfterChange=onAfterChangeFn;
var autoCompleter=null;
var wizAutoCompleter=null;
var autoComplete=null;
this.types=SB_TYPES;
if(!sbOptions){sbOptions=DEFAULT_OPTIONS;
}if(sbOptions.autoComplete){autoComplete=$.extend(DEFAULT_OPTIONS.autoComplete,sbOptions.autoComplete);
}var options=$.extend(sbOptions,DEFAULT_OPTIONS);
this.options=options;
if(autoComplete){options.autoComplete=autoComplete;
if(options.autoComplete.minChars<2){options.autoComplete.minChars=2;
}}var selectedItem=null;
var prevSelectedItem=null;
var selector=new SpecialSelectorHandler();
this.bindEvents=function(){var items=$("#subnav a, #subnav_selectbox a");
for(var i=0;
i<items.length;
i++){var item=items[i];
if(!item.id){continue;
}var arr=item.id.split("_");
if(arr.length<2||arr[0]!=SB_ID_POSTFIX){continue;
}var searchType=getTypeByIdSuffix(arr[1]);
if(!searchType){continue;
}searchType.item=item;
$(item).bind("click",self,onItemClick);
item.searchType=searchType;
if(($(item).parent()).hasClass(SB_ACTIVE_CLASS)){selectedItem=item;
}}selectItem();
if(!selectedItem){return;
}updateType(selectedItem.searchType,$(SB_CONTAINER_SELECTOR).html(),addParams);
doPostSelections();
selector.bindEvents();
};
this.select=function(type){if(!type.item){return;
}if(type==prevSelectedItem.searchType){return;
}$(type.item).click();
};
function doPostSelections(){buildHiddenFields();
bindInputDefaults();
prevSelectedItem=selectedItem;
onAfterItemChange(selectedItem.searchType);
}this.getValues=function(){var result=[];
var inputFields=$(SB_CONTAINER_SELECTOR+" input");
for(var i=0;
i<inputFields.length;
i++){var item=inputFields[i];
if($v$.tools.isCheckbox(item)&&!item.checked){continue;
}result[item.name]=$(item).val();
}return result;
};
this.getValuesAsQueryString=function(){return $oe$.obj.toQueryString(this.getValues(),false,escape);
};
function selectItem(){if(!selectedItem){return;
}var language=$v$.languages.getLanguage(options.language);
if(!selectedItem.searchType.special){($(selectedItem).parent()).addClass(SB_ACTIVE_CLASS);
$("#"+SB_SPECIAL_BUTTON_LINK).html(language.search.special.linkText);
}else{($("#"+SB_SPECIAL_BUTTON).parent()).addClass("on_last");
$("#"+SB_SPECIAL_BUTTON_LINK).html($(selectedItem).html());
}}function unselectItem(){if(!prevSelectedItem){return;
}if(!prevSelectedItem.searchType.special){($(prevSelectedItem).parent()).removeClass(SB_ACTIVE_CLASS);
}else{($("#"+SB_SPECIAL_BUTTON).parent()).removeClass("on_last");
}}function onItemClick(item){$oe$.log("Click"+this.searchType);
if(autoCompleter){autoCompleter.hideResultsNow();
}if(wizAutoCompleter){wizAutoCompleter.hideResultsNow();
}selector.hideSelectbox();
selectedItem=this;
var searchTypeInfos={lifeTime:new Date().getTime()-selectedItem.searchType.lifeTime,filled:selectedItem.searchType.filled?true:false};
if((!$oe$.val.isFunction(onClick))||onClick(selectedItem.searchType,searchTypeInfos)){internalSetHTML(selectedItem.searchType,selectedItem.searchType.html,selectedItem.searchType.addParams,true);
}stopEvent(item);
}function onAfterItemChange(item){$oe$.log("onAfterItemChange"+this.searchType);
if($oe$.val.isFunction(onAfterChange)){onAfterChange(selectedItem.searchType);
}}function addHiddenFields(hiddens){var forms=$(SB_CONTAINER_SELECTOR+" fieldset");
for(i=0;
i<forms.length;
i++){for(var j=0;
j<hiddens.length;
j++){if(i==0){$(forms[i]).prepend(hiddens[j]);
}else{$(hiddens[j]).clone().prependTo(forms[i]);
}}}}function getHiddenFields(){var hiddens=[];
var forms=$(SB_CONTAINER_SELECTOR+" fieldset");
if(forms.length==0){return hiddens;
}var inputs=$(forms[0]).children("input[type='hidden']");
for(i=0;
i<inputs.length;
i++){if(inputs[i].type!="hidden"){continue;
}if(prevSelectedItem.searchType.addParams&&prevSelectedItem.searchType.addParams[inputs[i].name]){continue;
}hiddens.push(inputs[i]);
}return hiddens;
}function updateType(searchType,html,addParams){searchType.html=html;
searchType.lifeTime=new Date().getTime();
searchType.filled=true;
searchType.addParams=addParams?$v$.tools.getAsObject(addParams):{};
}this.setHTML=function(type,html,addParams){if(type==prevSelectedItem.searchType){return;
}internalSetHTML(type,html,addParams);
};
function internalSetHTML(type,html,addParams,direkt){updateType(type,html,addParams);
if(selectedItem.searchType!=type&&!direkt){return;
}selectItem();
unselectItem();
var el,value,j,i;
var values={};
var checks={};
var hiddens=getHiddenFields();
fields=prevSelectedItem.searchType.fields;
for(i=0;
i<fields.length;
i++){el=$("#"+fields[i])[0];
if(!el||!el.id){continue;
}if($(el).val()){value=$(el).val();
if($v$.tools.isCheckbox(el)){if(!el.checked){value="";
}else{checks[el.id]=el.checked;
}}values[el.id]=value;
}}$(SB_CONTAINER_SELECTOR).html(html);
addHiddenFields(hiddens);
for(value in values){var used=false;
var isNumber=$v$.tools.isNumber(values[value]);
if(isNumber){arr=INPUTS_NO[value];
if(arr){arr.push(value);
for(j=0;
j<arr.length;
j++){el=$("#"+arr[j]);
if(!el||el.length!=1){continue;
}$(el[0]).val(values[value]);
used=true;
break;
}}}if(used){continue;
}var arr;
arr=INPUTS[value];
if(!arr){continue;
}arr.push(value);
for(j=0;
j<arr.length;
j++){el=$("#"+arr[j]);
if(!el||el.length!=1){continue;
}if($v$.tools.isCheckbox(el[0])){el[0].checked=$oe$.val.isDefined(checks[value]);
}else{$(el[0]).val(values[value]);
}}}doPostSelections();
}function buildHiddenFields(){function createHiddenField(form,name,value){if($(form).find("input[name='"+name+"']").length>0){return;
}var input=$v$.tools.createEl("input");
input.type="hidden";
input.name=name;
if(value){input.value=value;
}$(form).prepend(input);
}var names=[SB_CIID_PARAM,SB_DISTRICT_PARAM,SB_KGS_PARAM,SB_ZIP_PARAM];
var forms=$(SB_CONTAINER_SELECTOR+" fieldset");
for(var i=0;
i<forms.length;
i++){for(var j=0;
j<names.length;
j++){createHiddenField(forms[i],names[j]);
}for(param in selectedItem.searchType.addParams){createHiddenField(forms[i],param,selectedItem.searchType.addParams[param]);
}var params=$v$.tools.getAsObject(options.autoComplete.selectParams);
for(param in params){createHiddenField(forms[i],param);
}}}this.setAutoCompleteData=function(item,term,data,autoCompleteOptions){var show=(item.currentTerm==term);
if(autoCompleteOptions.minChars<2){autoCompleteOptions.minChars=2;
}autoCompleteOptions=$.extend(options.autoComplete,autoCompleteOptions);
$(item).setOptions(buildAcOptions(autoCompleteOptions,data),term,show);
};
function buildAcOptions(autoCompleteOptions,data){autoCompleteOptions=$v$.tools.getAsObject(autoCompleteOptions);
var language=$v$.languages.getLanguage(options.language);
var moreURL=autoCompleteOptions.moreURL;
var params=$v$.tools.getAsObject(autoCompleteOptions.moreParams);
params=$.extend({},self.getValues(),params);
params=$oe$.obj.extend(params,selectedItem.searchType.addParams);
var selectParams=$v$.tools.getAsObject(autoCompleteOptions.selectParams);
var acOptions=$.extend({},autoCompleteOptions);
acOptions.moreParams=params;
acOptions.selectParams=selectParams;
acOptions.moreText=language.search.more.linkText;
acOptions.moreValueParam=SB_CI_PARAM;
acOptions.cityParam=SB_CIID_PARAM;
acOptions.kgsParam=SB_KGS_PARAM;
acOptions.districtParam=SB_DISTRICT_PARAM;
acOptions.zipParam=SB_ZIP_PARAM;
acOptions.cacheLength=1000;
acOptions.data=data;
return acOptions;
}function bindAutoCompleteFields(){function bindAutoCompleteFieldByType(inputType){if($("#"+inputType).length==0){return;
}var acOptions=buildAcOptions(self.options.autoComplete);
var data=self.options.autoComplete.data;
ali=self.options;
autoCompleter=$("#"+inputType).autocomplete(data,acOptions);
wizAutoCompleter=$(".wiz_leftbox #Ort_PLZ").autocomplete(data,acOptions);
$("body").bind("click",self,function(){autoCompleter.hideResultsNow();
wizAutoCompleter.hideResultsNow();
});
}var fields=[SB_S_CI,SB_R_CI,SB_C_CI,SB_M_CI,SB_P_CI,SB_J_CI,SB_E_CI,SB_AC_CI,SB_A_CI,SB_Z_CI];
for(var i=0;
i<fields.length;
i++){bindAutoCompleteFieldByType(fields[i]);
}}function bindInputDefaults(){$("."+SB_DEFAULT_SELECTOR_CLASS).defaultBg({className:SB_DEFAULT_CLASS});
}}function SpecialSelectorHandler(){var self=this;
var searchType=searchType;
var onClick=onClick;
this.bindEvents=function(){$("#"+SB_SPECIAL_BUTTON).bind("click",self,onClick);
$("#"+SB_SPECIALITEM_CLASS).bind("mouseleave",self,onMouseLeave);
};
function onClick(ev){$("#"+SB_SPECIALITEM_CLASS).slideDown("normal");
return false;
}function onMouseLeave(ev){hideSelectbox();
}function hideSelectbox(){$("#"+SB_SPECIALITEM_CLASS).hide();
}this.hideSelectbox=hideSelectbox;
}search.SearchboxHandler=SearchboxHandler;
search.SB_TYPES=SB_TYPES;
}());

