var pb={contId:"phonebook",addContactLinkExp:".addContact",contactListEntryExp:"#contacts li",numberLabelClass:"labels",contactListEntryLabelClass:"label",selectedEntryClass:"selected",editContactLinkClass:"edit",useNumberLinkClass:"transfer",boldFieldClass:"bold",contactDetailsId:"contactDetails",contactFieldsId:"contactFields",contactNumberClass:"contactNumber",dynContactNumberClass:"selection",typeSelList:"ul > li",typeSelPosition:0,typeSelItemCount:3,contactNumberName:"data",contactNameId:"contactName",contactIdId:"contactId",saveLinkId:"saveContact",cancelInputLinkId:"cancelContactEdit",deleteLinkExp:".delete",viewClass:"view",selTypeBtnId:"selNumberType",typeSelectionExp:".selectionBox",errorMsgClass:"errorMsg",noDataId:"phonebookEmpty",loaderExp:"#phonebookBox .loader",submitBlocked:false,init:function(){$(pb.addContactLinkExp).live("click",function(e){e.preventDefault();if(!$("#"+pb.contId).data("viewLocked")){pb.addEntry();pb.toggleContactEdit(true)}});$(pb.contactListEntryExp).live("mouseover",function(){if(!$("#"+pb.contId).data("viewLocked")&&!$(this).data("showLinks")){window.clearTimeout(pb.to);pb.updateContactView($(this));$(pb.contactListEntryExp).removeClass("selected")}}).live("mouseout",function(){$(this).data("showLinks",false);if(!$("#"+pb.contId).data("viewLocked")){pb.to=window.setTimeout(function(){$(pb.contactListEntryExp).eq($("#"+pb.contId).data("selIndex")).addClass("selected");pb.updateContactView($(pb.contactListEntryExp+"."+pb.selectedEntryClass))},100)}});$("."+pb.editContactLinkClass).live("click",function(e){e.preventDefault();$par=$(this).parents(pb.contactListEntryExp);$(pb.contactListEntryExp).removeClass(pb.selectedEntryClass);$par.addClass(pb.selectedEntryClass);$("#"+pb.contId).data("selIndex",$(pb.contactListEntryExp).index($par));pb.updateContactView($par);pb.toggleContactEdit(true)});$("."+pb.useNumberLinkClass).live("click",function(e){e.preventDefault();var cData=$(this).data("connectionData");$(cb.modeTabExp+" a").eq(0).click();if($("#"+cb.targetId.b+":visible").length==0){cb.applyBInput()}cb.insertBNumber("+"+cData.cc,cData.number);cb.validateNumber("b")});$("#"+pb.cancelInputLinkId).click(function(e){e.preventDefault();if($("#"+pb.contactIdId).val()>0){pb.updateContactView($(pb.contactListEntryExp+"."+pb.selectedEntryClass))}else{pb.updateContactView();$(pb.contactListEntryExp+":first").remove();if($(pb.contactListEntryExp+":visible").length==0){$("#"+pb.noDataId).show();$("#"+pb.contactDetailsId).hide()}}pb.toggleContactEdit(false)});$("#"+pb.saveLinkId).click(function(e){e.preventDefault();if(!pb.submitBlocked){pb.submitBlocked=true;var con={contactId:$("#"+pb.contactIdId).val()};$("."+pb.contactNumberClass+", ."+pb.dynContactNumberClass).each(function(){var $input=$(this).find(":text");if(!con[$input.attr("name")]){con[$input.attr("name")]=new Array()}if($input.val()){var tgt=($input.attr("id")!=pb.contactNumberName)?$input.attr("id"):"";var prefix=($input.attr("name")==pb.contactNumberName)?tgt+"|":"";con[$input.attr("name")].push(prefix+$input.val())}});$.post("saveContact.do",con,function(data){if(data.error.message){pb.clearError();$err=$(document.createElement("div")).addClass(pb.errorMsgClass).text(data.error.message);if(data.error.fieldId){var $par=$("#"+data.error.fieldId).parents("."+pb.contactNumberClass+", ."+pb.dynContactNumberClass).addClass(cb.errorClass)}else{var $par=$("#"+pb.contactFieldsId).find("."+cb.errorClass)}$par.prepend($err);pb.submitBlocked=false}else{if(data.id){pb.submitBlocked=false;pb.loadContactData(data.id);if(data["new"]){location.replace("index.do?showPhonebook=true")}}}},"json")}});$(pb.deleteLinkExp).click(function(e){e.preventDefault();pb.removeEntry($(pb.contactListEntryExp+"."+pb.selectedEntryClass));if($(pb.contactListEntryExp+":visible").length==0){$("#"+pb.noDataId).show();$("#"+pb.contactDetailsId).hide()}});$("#"+pb.selTypeBtnId).click(function(e){e.preventDefault();e.stopPropagation();$(pb.typeSelectionExp).toggle();var pane=$("#"+pb.contactFieldsId).get(0);pane.scrollTop=pane.scrollHeight});$("#"+pb.contId).click(function(e){$(pb.typeSelectionExp).hide()});$(pb.typeSelectionExp).find("li").click(function(e){e.preventDefault();$(pb.typeSelectionExp).hide();cb.handleKeyboardSelUnbind($("."+pb.dynContactNumberClass).find(pb.typeSelList));pb.addNumber($(this).text())});$("#"+pb.selTypeBtnId).focus(function(){cb.handleKeyboardSelInit(0,3);$(cb.keysLevel).keydown(function(e){pb.handleTypeSelKeys(e)})});$("#"+pb.selTypeBtnId).blur(function(){cb.handleKeyboardSelUnbind($("."+pb.dynContactNumberClass).find(pb.typeSelList))});$("."+pb.dynContactNumberClass).find(pb.typeSelList).hover(function(){cb.keysListSelCurMouse=$(this);$("."+pb.dynContactNumberClass).find(pb.typeSelList+":nth-child("+cb.keysListSelPosition+")").removeClass(cb.keysListSelExpSelected);$(this).addClass(cb.keysListSelExpSelected);cb.keysListSelPosition=$("."+pb.dynContactNumberClass+" ul > li").index($(this))+1},function(){$("."+pb.dynContactNumberClass).find(pb.typeSelList).each(function(){$(this).removeClass(cb.keysListSelExpSelected)});cb.keysListSelPosition=0})},handleTypeSelKeys:function($event){if(cb.keysListSelKeys.down===$event.which&&$(pb.typeSelectionExp).is(":hidden")){$event.preventDefault();$(pb.typeSelectionExp).show();return}else{if((cb.keysListSelKeys.enter===$event.which)&&$(pb.typeSelectionExp).is(":visible")){$event.preventDefault();pb.addNumber($("."+pb.dynContactNumberClass).find(pb.typeSelList+":nth-child("+cb.keysListSelPosition+")").text());$(pb.typeSelectionExp).hide();cb.handleKeyboardSelUnbind($("."+pb.dynContactNumberClass).find(pb.typeSelList));$($event.target).parent().parent().parent().prev().find("input").focus()}else{if(cb.keysListSelKeys.tab===$event.which&&$(pb.typeSelectionExp).is(":visible")){$event.preventDefault();$(pb.typeSelectionExp).hide();cb.keysListSelPosition=0;$("#"+pb.selTypeBtnId).blur();$($event.target).parent().parent().next().find("input").focus()}else{if($event.which===cb.keysListSelKeys.tab&&cb.keysListSelPosition==0){$(pb.typeSelectionExp).hide();cb.keysListSelPosition=0}else{cb.handleKeyboardListSelection($event,"."+pb.dynContactNumberClass,pb.typeSelList,cb.keysListSelExpSelected,cb.keysListSelKeys)}}}}},toggleContactEdit:function(edit){$("#"+pb.contId).data("viewLocked",edit);if(edit){$("#"+pb.contactDetailsId).removeClass(pb.viewClass).find("input").attr("disabled","");if($("#"+pb.contactNameId).val()==""){$("#"+pb.contactNameId).focus()}}else{$("#"+pb.contactDetailsId).addClass(pb.viewClass).find("input").attr("disabled","disabled")}},loadContactData:function(selId){if(!pb.submitBlocked){pb.submitBlocked=true;$(pb.contactListEntryExp).remove(":visible");$(pb.loaderExp).show();$.getJSON("getContacts.do",function(contacts){$(pb.loaderExp).hide();var i=0;for(el in contacts){pb.addEntry(contacts[el]);var con=$(this).data("contactData");for(el2 in contacts[el].data){var $new=$(document.createElement("a")).attr({href:"",title:contacts[el].data[el2].value+" anrufen"}).addClass(pb.useNumberLinkClass).data("connectionData",contacts[el].data[el2]).text(contacts[el].data[el2].key);var $new2=$(document.createTextNode(" "));$new2.insertBefore($new.insertBefore($(pb.contactListEntryExp+":visible").eq(i).find(".last").prev("label")))}i++}var $sel=$(pb.contactListEntryExp+":nth-child(2)");if(selId){$(pb.contactListEntryExp).each(function(){if(con&&con.id==selId){$sel=$(this)}})}$("#"+pb.contId).data("selIndex",$(pb.contactListEntryExp).index($sel));pb.updateContactView($sel);$sel.find("a").show();pb.submitBlocked=false})}},updateContactView:function($src){pb.clearError();var $first=$("."+pb.contactNumberClass+":first");$first.nextAll().remove("."+pb.contactNumberClass);$("."+pb.dynContactNumberClass).find(":text").val("");if($src){$(pb.contactListEntryExp).find("."+pb.numberLabelClass).hide();$src.addClass(pb.selectedEntryClass).find("."+pb.numberLabelClass).show();var con=$src.data("contactData");pb.toggleContactEdit(false);if(con){$("#"+pb.contactNameId).val(con.name);$("#"+pb.contactIdId).val(con.id);for(el in con.data){var $sec=pb.createNumber($first,con.data[el]);$first.after($sec);$first=$sec}}$src.data("showLinks",true).find("a").show()}else{$("#"+pb.contactNameId).val("");$("#"+pb.contactIdId).val("0")}if($(pb.contactListEntryExp+":visible").length==0){$("#"+pb.noDataId).show();$("#"+pb.contactDetailsId).hide()}},createNumber:function($src,data,ascType){var $tgt=$src.clone();var label=data.key;if(ascType){$("."+pb.contactNumberClass).each(function(){if($(this).find(":text").attr("id")==label){label=label.replace(/^(\D+)(\d*)$/,"$1");label+=((RegExp.$2)?Number(RegExp.$2)+1:"2")}})}$tgt.find("label").text(label+":").attr("for",label).next().find(":text").attr("id",label).attr("name",pb.contactNumberName).removeClass(pb.boldFieldClass).val(data.value);return $tgt},addNumber:function(type){pb.clearError();var $sel=$("."+pb.dynContactNumberClass).find(":text");var $new=pb.createNumber($("."+pb.contactNumberClass+":first"),{key:type,value:$sel.val()},true);$new.find(":text, :password").focus(function(){com.handleFieldFocus($(this))});$new.find(":text, :password").blur(function(){com.handleFieldBlur($(this))});$new.insertAfter($("."+pb.contactNumberClass+":last")).find(":text").focus();$sel.val("")},addEntry:function(el){var $par=$(pb.contactListEntryExp).parent();var $o=$(pb.contactListEntryExp).removeClass(pb.selectedEntryClass).eq(0).clone();if(!el){$o.addClass(pb.selectedEntryClass).prependTo($par);pb.updateContactView()}else{$o.appendTo($par).data("contactData",el).find("."+pb.contactListEntryLabelClass).text(el.name)}$("#"+pb.noDataId).hide();$("#"+pb.contactDetailsId).show();$o.show()},removeEntry:function($o){$.getJSON("deleteContact.do",{contactId:$("#"+pb.contactIdId).val()},function(){$o.remove();pb.toggleContactEdit(false);pb.updateContactView()})},clearError:function(){$("."+pb.errorMsgClass).remove();$("."+pb.contactNumberClass+", ."+pb.dynContactNumberClass).removeClass(cb.errorClass)},mozFade:function($o,show){if(show){$o.find("#"+pb.contactFieldsId).fadeIn("slow");$o.find(pb.contactListEntryExp).parent().fadeIn("slow")}else{$o.find("#"+pb.contactFieldsId).fadeOut("slow");$o.find(pb.contactListEntryExp).parent().fadeOut("slow")}}};$(function(){pb.init()});