// hack gmarkermanager to contain a method for clearing all contents
GMarkerManager.prototype.clearMarkers = function() {
	var me = this;
	//
	// clear currently shown
	if (me.Wd > 0) {
		me.Id(me.K, me.Kd);
	}
	// 
	// reset arrays
	var maxZoom = me.df;
	var maxWidth = 256;
 	for (var zoom = 0; zoom < maxZoom; ++zoom){
	    me.ed[zoom] = [];
	    me.oc[zoom] = 0;
	    me.gc[zoom] = Math.ceil(maxWidth/me.Ec);
	    maxWidth <<= 1;
	 }
	me.refresh();
}

function LookupEmbedded(map) {
	if (GBrowserIsCompatible()) {
		this._lastPane = null;
		this._banks = null;
		this.shown = false;
		this.mapname = map;
		this.init();
	}
	this.lastBranch = null;
	this.bookMode = false;
	this.branchId = null;
	this.branchName = null;
}
LookupEmbedded.prototype.init = function() {
    this.container_div = "advisor_map";
    this.include_header = false;
    this.include_footer = false;
    this.show_order_meeting = true;
    this.embeded_layout = true;

	this.closeZoomLevel = 7;
	this.entryZoomLevel = 12;
	// setup icons
	this.icon = new GIcon();
	this.icon.image = base_path + "images/google_map_icon.png";
	this.icon.iconAnchor = new GPoint(4, 19);
	this.icon.iconSize = new GSize(23, 37);
	this.pointIcon = new GIcon();
	this.pointIcon.image = base_path + "images/google_map_point.gif";
	this.pointIcon.iconAnchor = new GPoint(15, 15);
	this.pointIcon.iconSize = new GSize(30, 30);
	
	// find tabs if exist
	var ul = $$("#lookuptabs ul");
	if (ul && ul.length > 0 && (ul = ul[0])) {
		appendChildNodes(ul, LI({id:"lookup_tab_address"}, A({href:"page?action=lookup_address",onclick:"return lookup_embedded .showSearchByAddress();"},"Søg på adresse")));
		this.showMap();
		
		// if list, fix selects
		if ($("lookup_bank")) {
			this.state = "list";
			setNodeAttribute("lookup_bank", "onchange", "lookup_embedded .selectBank(this.options[this.selectedIndex].value);");
			setNodeAttribute("lookup_branch", "onchange", "lookup_embedded .selectBranch(this.options[this.selectedIndex].value);");
		}
		
		// if zip-search, fix find
		if ($("lookup_zip_submit")) {
			this.state = "zip";
			setNodeAttribute("lookup_zip_submit", "onclick", "return lookup_embedded .searchZip(this.form.zip.value);");
		}
		
	}
	
	// find and fix link at "find advisor"-form
	var find_adv_form = $("lookup_panel");
	if (find_adv_form) {
		setNodeAttribute(find_adv_form, "onsubmit", "return lookup_embedded .showSearchByZip(this.zip.value);");
	}
};
LookupEmbedded.prototype.showSearchByZip = function(zip) {
	if ($('findbank-loader')) {
		$('findbank-loader').style.display = 'inline';
	}
	try {
	// handle only if necessary
	if (this.state == "zip") {
		if (zip) {
			setNodeAttribute("lookup_zip", "value", zip);
			this.searchZip(zip);
		}
		return false;
	}
	this.show(true);
	
	// remove current fieldsets
	replaceChildNodes("lookup_form",
		FIELDSET(null,
			LABEL({'for':"lookup_zip"}, "Postnummer"),
			BR(),
			INPUT({'type':"text",'name':"zip",'id':"lookup_zip"}),
			INPUT({'type':"submit",'value':"Find",'onclick':"return lookup_embedded .searchZip(this.form.zip.value);"}),
			createLoader({id:'lookup-zip-loader',cssClass:'lookup-zip-loader'})
		)
	);
	setNodeAttribute("lookup_form", "onsubmit", "return lookup_embedded .searchZip(-1);");
	
	// select proper tab
	removeElementClass($$("#lookuptabs li"), "selected");
	addElementClass("lookup_tab_zip", "selected");
	
	// if zip, prefill
	if (zip) {
		setNodeAttribute("lookup_zip", "value", zip);
		this.searchZip(zip);
	}
	
	// end
	json(
		"help",
		{'key':"page.searchbank.zip"},
		bind(replaceChildNodes,this,"contents_info")
	);
	thepage.updateLocation("Find din nærmeste rådgiver","lookup_zip");
	
	return false;
	
	} catch (e) {
		myerror(e);
		return false;
	}
};
LookupEmbedded.prototype.showSearchByAddress = function() {
	// handle only if necessary
	if (this.state == "address") return false;
	this.show();
	
	// add address fieldset
	replaceChildNodes("lookup_form",
		FIELDSET(null,
			LABEL({'for':"lookup_address"}, "Adresse"), 
			BR(), 
			INPUT({'type':"text",name:"address",id:"lookup_address"})
		),
		// add zip fieldset
		FIELDSET(null,
			LABEL({'for':"lookup_zip"}, "Postnummer"),
			BR(),
			INPUT({'type':"text",name:"zip",id:"lookup_zip"}),
			INPUT({'type':"submit",value:"Find",onclick:"return lookup_embedded .searchAddress(this.form.address.value, this.form.zip.value);"}),
			createLoader({id:'lookup-address-loader',cssClass:'lookup-zip-loader'})
		)
	);
	setNodeAttribute("lookup_form", "onsubmit", "return lookup_embedded .searchAddress();");
	
	// select proper tab
	removeElementClass($$("#lookuptabs li"), "selected");
	addElementClass("lookup_tab_address", "selected");
	json(
		"help",
		{'key':"page.searchbank.address"},
		bind(replaceChildNodes,this,"contents_info")
	);
	
	thepage.updateLocation("Find din nærmeste rådgiver","lookup_address");
	// end
	return false;
};
LookupEmbedded.prototype.selectBankBox= function (pi_id){
		//for frontpage lookup box
		this.showSearchByList();
		//this.selectBank(pi_id);
		var options = $("lookup_bank").options;
		
		for(var i = 1; i < options.length; i++) { // do not ask why from 1 :) i have no idea why element 0 contain correct id
		    if (options[i].value == pi_id) {
		        $("lookup_bank").selectedIndex = i;
		        break;
		    }
		}
		//ensure lookup_branch have been initialized
		setNodeAttribute("lookup_branch", "onchange", "lookup_embedded .selectBranch(this.options[this.selectedIndex].value);");
		window.setTimeout(bind(function(pi_id) {
				this.selectBank(pi_id);
			}, this, pi_id), 1000);
	return false;
}
LookupEmbedded.prototype.showSearchByList = function() {
	// handle only if necessary
	if (this.state == "list") return false;
	this.allShown = false;
	this.show();
	
	// remove current fieldsets
	this.removeFieldSets();
	
	// add first select
	var s1 = SELECT({name: "bank", id:"lookup_bank"});
	appendChildNodes(s1, OPTION({value:"__empty__"}, "Vælg pengeinstitut"));
	for (var i = 0; i < this._banks.length; i++) {
		appendChildNodes(s1, OPTION({value:this._banks[i].id}, this._banks[i].name));
	}
	var opts = new Object();
	opts["for"] = "lookup_bank";
	this.addFieldSet(FIELDSET(null, LABEL(opts, "Pengeinstitut"), BR(), s1));
	setNodeAttribute("lookup_bank", "onchange", "lookup_embedded .selectBank(this.options[this.selectedIndex].value);");
	
	// add second select
	var s2 = SELECT({name: "branch", id:"lookup_branch", disabled:true}, OPTION("Vælg en filial"));
	opts["for"] = "lookup_branch";
	this.addFieldSet(FIELDSET(null, LABEL(opts, "Filial"), BR(), s2, createLoader({id:'lookup-list-loader',cssClass:'lookup-zip-loader'})));
	setNodeAttribute("lookup_branch", "onchange", "lookup_embedded .selectBranch(this.options[this.selectedIndex].value);");
	
	// select proper tab
	removeElementClass($$("#lookuptabs li"), "selected");
	addElementClass("lookup_tab_list", "selected");
	json(
		"help",
		{'key':"page.searchbank.list"},
		bind(replaceChildNodes,this,"contents_info")
	);
	thepage.updateLocation("Find din nærmeste rådgiver", "lookup_list");
	// end
	return false;
};
LookupEmbedded.prototype.removeFieldSets = function() {
	return removeElement($$(".lookup fieldset"));
};
LookupEmbedded.prototype.addFieldSet = function(fs) {
	appendChildNodes($("lookup_form"), fs);
};
LookupEmbedded.prototype.show = function(zipsearch) {
	//if (!$("lookuptabs")) {
		// tabs
		var tablist = new Array();
		var p = {'id':"lookup_tab_zip"};
		p["class"] = "first";
		tablist[0] = LI(p, A({'onclick':"return lookup_embedded .showSearchByZip();"}, "Søg på postnummer"));
		tablist[1] = LI({id:"lookup_tab_list"}, A({onclick:"return lookup_embedded .showSearchByList();"}, "Pengeinstitutter"));
		tablist[2] = LI({id:"lookup_tab_address"}, A({onclick:"return lookup_embedded .showSearchByAddress();"}, "Søg på adresse"));
		var tabs = DIV({id:"lookuptabs"}, UL(null, tablist));
		
		// main content
		var desc = P({'id':"contents_info",'class':"no_print"});
		var form = FORM({'id':"lookup_form",'method':"get"});
		setNodeAttribute(form, 'onsubmit', "return false;");
		var maindiv = DIV({'id':"page",'class':"lookup"}, desc, form);
		// map
		var mapdiv = DIV({id:"lookup_map_embedded"});
		
		// set all
        var elements = new Array();
        if ( this.include_header ) {
            elements.push(H1({'id':"mainheader",'class':"fullheader"},"Find din nærmeste rådgiver"));
        }
        elements.push(tabs);
        elements.push(maindiv);
        elements.push(mapdiv);
        if ( this.include_header ) {
            elements.push(footer());
        }
		replaceChildNodes(this.container_div, elements);
		toolbox();
	//}
	if (!zipsearch) tstat("Find rådgiver", "Find din nærmeste rådgiver","Velkommen,Find din nærmeste rådgiver")
	// show map
	this.resetMap();
};

LookupEmbedded.prototype.showMap = function() {
	replaceChildNodes(this.mapname,"");
	this.map = new GMap2($(this.mapname));
	this.map.addControl(new GSmallMapControl());
	this.map.enableDoubleClickZoom();

	this.getBanks();
}
LookupEmbedded.prototype.resetMap = function() {
	this.showMap();
	this.map.clearOverlays();
	this.map.setCenter(new GLatLng(56.29, 10.6), this.closeZoomLevel);
	
	if (this.mgr) {
		this.mgr.clearMarkers();
	}
};
LookupEmbedded.prototype.getBanks = function() {
	json("lookup_all", {}, bind(this.onGetBanks, this));
};

LookupEmbedded.prototype.searchZip = function(zip, evt) {
	if ($("error_box")) {
		$("error_box").style.display = "none";
	}
	if ($('lookup-zip-loader')) {
		$('lookup-zip-loader').style.display = 'inline';
	}
	if (zip == -1) {
		zip  = $("lookup_zip").value;
	}

	//stat("Google Maps :: Postnummer:: "+zip);
	tstat("Find rådgiver", "Find rådgiver - Søg på postnummer","Velkommen,Find rådgiver,Søg på postnummer"
		 ,{'prop19':""+zip
		 ,'prop20':"Postnummer"
		 ,'eVar19':""+zip
		 ,'eVar20':"Postnummer"
		 ,'events':"event9"
		 });
		 
	if (! zip || isNaN(zip) || (typeof(zip) == "string" && zip.length != 4 )) {
		json(
			"help",
			{'key':"error.user.bad.zip"},
			bind(showErrorBox, this, "lookup_zip")
		);
		if (evt) evt.stop();
		return false;
	}
	
	this.getBranchList(zip);
	
	json("lookup_address", {zip:zip}, bind(this.onAddress, this));
	if (evt) evt.stop();
	return false;
};
LookupEmbedded.prototype.getBranchList =function(zip){
	//shows list of branches for a zip
	if($('zip_list')) removeElement('zip_list');
	if (!zip || !this.branchesById)return false;
	
	//log("generating table");
	var btable = TABLE({'width':"493px",'cellpadding':"0",'cellspacing':"0",'border':"0"});
	//only shown on print:
	var zipinfo=DIV({'class':"print",'style':"font-family:verdana;font-size:10px;font-weight:bold;text-align:left"}
		,"Pengeinstitutter i postnummer "+zip+":" 
		);
	//<caption style="font-family:verdana;font-size:12px;font-weight:bold;text-align:left">...</caption>
	appendChildNodes(btable,
		THEAD({},
			TR({}
				,TH({'class':"zip_header"},"Pengeinstitut")
				,TH({'class':"zip_header"},"Adresse")
				,TH({'class':"zip_header",'style':"width:100px;"},"Telefon")
		)
	));
	
	var zip_tb=TBODY({'id':"ziplist_tb"});
	
	for (var j in this.branchesById) {
		
		var branch = this.branchesById[j];
		if (branch.zip == zip) appendChildNodes(zip_tb,this.branchRow(branch));
	
	}
	
	appendChildNodes(btable,zip_tb);
	
	insertSiblingNodesAfter($("lookup_map_embedded")
		,DIV({'id':"zip_list"}
			,zipinfo
			,btable
	));		
}
LookupEmbedded.prototype.branchRow = function (branch){
	var row = TR({'onclick':"lookup_embedded .getBranchPopup("+branch.id+");"},
		TD({'class':"zip_cell",'style':"color: #484848;font-size: 10px;text-decoration: underline;"},this.getBankName(branch.bankId))
		,TD({'class':"zip_cell",'style':"font-size: 10px;"},branch.address)
		,TD({'class':"zip_cell",'style':"font-size: 10px;"},branch.phone)
	);
	return row;
}
LookupEmbedded.prototype.getBranchPopup = function(id){
	var branch=this.branchesById[id];
	var bank=this.banksById[branch.bankId];
	var marker=this.createMarker(branch,bank);
	this.showBubble(marker,branch,bank);
	$("lookup_map_embedded").scrollIntoView(true);
}
LookupEmbedded.prototype.searchAddress = function(address,zip) {
	if (!address) {
		address = $("lookup_address").value;
	}
	if ($('lookup-address-loader')) {
		$('lookup-address-loader').style.display = 'inline';
	}
	if (!zip) {
		zip = $("lookup_zip").value;
	}
	//stat("Google Maps :: Adresse");
	tstat("Find rådgiver", "Find rådgiver - Søg på adresse","Velkommen,Find rådgiver,Søg på adresse"
		 ,{'prop19':""+address+","+zip
		 ,'prop20':"Adresse"
		 ,'eVar19':""+address+","+zip
		 ,'eVar20':"Adresse"
		 ,'events':"event9"
		 });
		 
	if ($("error_box")) {
		$("error_box").style.display = "none";
	}
	var parms = {};
	if (! zip || isNaN(zip) || zip.length != 4) {
		json(
			"help",
			{'key':"error.user.bad.zip"},
			bind(showErrorBox, this, "lookup_zip")
		);
		return false;
	}
	if ($("ziperror")) {
		removeElement("ziperror");
	}
	if (address) parms.address = address;
	if (zip) parms.zip = zip;
	json("lookup_address", parms, bind(this.onAddress, this));
	return false;
};
LookupEmbedded.prototype.onGetBanks = function(result) {
	//log("getbanks");
	var lowerCaseNameComparator = function(a,b) { return compare(a.name.toLowerCase(), b.name.toLowerCase()); }
	this._banks = result.banks;
	this._banks.sort(lowerCaseNameComparator);
	var banks_length = this._banks.length;
	
	this.banksById = new Array();
	this.branchesById = new Array();
	
	for (var i = 0; i < this._banks.length; i++) {
		var bank = this._banks[i];
		this.banksById[bank.id] = bank;
		if (bank.branches) {
	  	  	bank.branches.sort(lowerCaseNameComparator);

			var branches_length = bank.branches.length;
			for (var j=0; j<branches_length; j++) {
				var branch = bank.branches[j];
				this.branchesById[branch.id] = branch;
			}
		}
	}
	// fix if all must be shown at startup
	if (this.allShown) {
		this.allShown = false;
		this.showAll();
	}
	if ($('lookup_bank_front') && !$('lookup_bank_front').options.length>0){
		this.handleFrontPi();
	}
	
	if ($('lookup_zip')) this.getBranchList($('lookup_zip').value);
	else this.getBranchList();
};
LookupEmbedded.prototype.handleFrontPi = function(){
	//log("filling list for bank front select");
	appendChildNodes($('lookup_bank_front'), OPTION({value:"__empty__"}, "Vælg pengeinstitut"));
		
	for (var i = 0; i < this._banks.length; i++) {
		appendChildNodes($('lookup_bank_front'), OPTION({value:this._banks[i].id}, this._banks[i].name));
	}
	setNodeAttribute("lookup_bank_front", "onchange", "lookup_embedded .selectBankBox(this.options[this.selectedIndex].value);");
}
LookupEmbedded.prototype.onAddress = function(result) {
	if (result && result.locations && result.locations.length > 0) {
		var point = result.locations[0];
		if (point.lat && point.lng) {
			var pos = new GLatLng(point.lat, point.lng);
			this.map.setCenter(pos, this.entryZoomLevel);
			this.showAll();
			this.showPoint(pos);
		}
	}
	if ($('lookup-zip-loader')) {
		$('lookup-zip-loader').style.display = 'none';
	}
	if ($('lookup-address-loader')) {
		$('lookup-address-loader').style.display = 'none';
	}
	if ($('findbank-loader')) {
		$('findbank-loader').style.display = 'none';
	}
}
LookupEmbedded.prototype.selectBank = function(bankId) {
	if ($('lookup-list-loader')) {
		$('lookup-list-loader').style.display = 'inline';
	}
	if (bankId == "__empty__") {
		$("lookup_branch").selectedIndex = 0;
		$("lookup_branch").disabled = true;
		replaceChildNodes("lookup_branch",OPTION(null,"Vælg pengeinstitut"));
		this.map.setCenter(new GLatLng(56.29, 10.6), this.closeZoomLevel);
		this.map.clearOverlays();
		this.mgr.clearMarkers();
		return;
	}
	if (this.mgr) {
		this.mgr.clearMarkers();
	}
	var bank = this.banksById[bankId];
	var markers = new Array();
	//stat("Google Maps :: Liste :: "+bank.name);
	tstat("Find rådgiver", "Find rådgiver - Søg på pengeinstitut","Velkommen,Find rådgiver,Søg på pengeinstitut"
		 ,{'prop19':""+bank.name
		 ,'prop20':"Pengeinstitut"
		 ,'eVar19':""+bank.name
		 ,'eVar20':"Pengeinstitut"
		 ,'events':"event9"
		 });
		 
		
	if (bank && bank.branches) {
		var branches_length = bank.branches.length;
		var select = new SelectWrapper("lookup_branch");
		select.clear();
		var op = SelectWrapper.createOption("Vælg en filial", -1);
		select.add(op)
		for (var j=0; j<branches_length; j++) {
			var branch = bank.branches[j];
			if (branch.latitude > 0 && branch.longitude > 0) {
				if (!branch.marker) {
					var marker = this.createMarker(branch, bank);
					branch.marker = marker;
				}
				markers.push(branch.marker);
				var op = SelectWrapper.createOption(branch.name, branch.id);
				select.add(op);
			}
		}
		select.setDisabled(false);
	}
	this.map.clearOverlays();
	this.map.setCenter(new GLatLng(56.29, 10.6), this.closeZoomLevel);
	this.showMarkers(markers);
	if ($('lookup-list-loader')) {
		$('lookup-list-loader').style.display = 'none';
	}
}
LookupEmbedded.prototype.showAll = function() {
	//if (this.allShown) return;
	var markers = new Array();
	for (var j in this.branchesById) {
		var branch = this.branchesById[j];
		
		if (branch.latitude > 0 && branch.longitude > 0) {
			if (!branch.marker) {
				var marker = this.createMarker(branch, this.banksById[branch.bankId]);
				//log(branch);
				branch.marker = marker;
			}
			markers.push(branch.marker);
		}
	}
	this.showMarkers(markers);
	this.allShown = true;
}
LookupEmbedded.prototype.selectBranch = function(branchId) {
	if ($('lookup-list-loader')) {
		$('lookup-list-loader').style.display = 'inline';
	}
		
	// is branch id valid?
	if (isNaN(branchId) || branchId <= 0) return false;
	
	var branch = this.branchesById[branchId];
	
	// does branch and marker exist?
	if (!branch || !branch.marker) return false;
	
	this.map.setCenter(branch.marker.getPoint(), this.entryZoomLevel);
	this.showBubble(branch.marker, branch, this.banksById[branch.bankId]);
	tstat("Find rådgiver", "Find rådgiver - Søg på filial","Velkommen,Find rådgiver,Søg på filial"
		 ,{'prop19':""+branch.name
		 ,'prop20':"Filial"
		 ,'eVar19':""+branch.name
		 ,'eVar20':"Filial"
		 ,'events':"event9"
		 });
	if ($('lookup-list-loader')) {
		$('lookup-list-loader').style.display = 'none';
	}
	return true;
	
}
LookupEmbedded.prototype.updatePrintBranch= function(branch,bank){
	var invisiblecard=
		DIV({'id':"inv_branch",'class':"print",'style':"width:300px;margin:50px;"},
			  IMG({
			  	'src':"/TKdkcms/uploads/pilogo/" + bank.externalId + ".png",
			  	'style': "margin: 0;"
			  	}),
			  P({'style':"color: #878484;"},
			    bank.name, BR(),
			    branch.name, BR(),
			    branch.address, BR(),
			    branch.zip + " " + branch.city, BR(),
			    "Tlf. " + branch.phone,BR(),
			    A({
				    	'href'	:"http://" + branch.homepage,
				    	'target':"_blank",
				    	'class'	:"a_link"
			    	},
			      branch.homepage.substring(0,
			      			branch.homepage.indexOf("/") == -1 
								? branch.homepage.length
								: branch.homepage.indexOf("/")
							)
			    ),
			    BR()
			   )
			);
			//cleanup
			if($('inv_branch')) removeElement('inv_branch'); 
			//add hidden card (class print)
			insertSiblingNodesBefore("lookup_map_embedded",invisiblecard);
}
LookupEmbedded.prototype.getBranchName = function(branchId) {
	if (this.branchesById[branchId])
		return this.branchesById[branchId].name;
	return null;
}
LookupEmbedded.prototype.getBankName = function(bankId) {
	if (this.banksById[bankId])
		return this.banksById[bankId].name;
	return null;
}
LookupEmbedded.prototype.showMarkers = function(markers) {
	this.allShown = false;
	try {
		this.mgr = new GMarkerManager(this.map);
		this.mgr.clearMarkers();
		this.mgr.addMarkers(markers, 2);
		this.mgr.refresh();
	} catch (e) {
		myerror(e);
	}
		
}
LookupEmbedded.prototype.createMarker = function(branch, bank) {
	var pos = new GLatLng(branch.latitude, branch.longitude);
	var marker = new GMarker(pos, {title: (bank ? bank.name + " - " : "") + branch.name, icon: this.icon});
	GEvent.addListener(marker, "click", bind(this.showBubble, this, marker, branch, bank));
	return marker;
}
LookupEmbedded.prototype.showPoint = function(pos) {
	// remove old
	/*
	if (this.previousMarker)
		this.map.removeOverlay(this.previousMarker);
	
	// create new
	this.previousMarker = new GMarker(pos, {title: "Her er du", icon: this.pointIcon});
	
	// add
	this.map.addOverlay(this.previousMarker);
	*/
}				
LookupEmbedded.prototype.showBubble = function(marker, branch, bank) {
	try {
		var tabs = new Array();
		var select = INPUT({'id':"bubble_submit",'type':"submit",value:"Vælg dette pengeinstitut",'class':"submit", 'style':"width: 169px;"});
		var bookMetting = INPUT({'id':"bubble_submit",'type':"submit",value:"Bestil møde",'class':"submit", 'style':"width: 169px;"});

        var extendedInfo = SPAN({});
        if ( bank.advisorName && bank.advisorDescription ) {
            extendedInfo = DIV({},
                IMG({
                    'src':"/TKdkcms/uploads/piadvisor/" + bank.externalId + ".png",
                    'style': "margin: 3px; float: left;"
                }),
                SPAN({},bank.advisorDescription)
            );
        }
        tabs.push(new GInfoWindowTab( bank.name,
			DIV(null,
			  extendedInfo,
			  IMG({
			  	'src':"/TKdkcms/uploads/pilogo/" + bank.externalId + ".png",
			  	'style': "margin: 0;"
			  	}),
			  P({'style':"color: #878484;"},
			    bank.name, BR(),
			    branch.name, BR(),
			    branch.address, BR(),
			    branch.zip + " " + branch.city, BR(),
			    "Tlf. " + branch.phone,BR(),
			    A({
				    	'href'	:"http://" + branch.homepage,
				    	'target':"_blank",
				    	'class'	:"a_link"
			    	},
			      branch.homepage.substring(0,
			      			branch.homepage.indexOf("/") == -1 
								? branch.homepage.length
								: branch.homepage.indexOf("/")
							)
			    ),
			    BR(),
			    DIV(
			    	{'style' :"margin-left: 20px; text-align: center;"}
			    	,select
			    	,BR()
			    	,bookMetting
			    )
			  )
			)
		));
		/*tabs.push(new GInfoWindowTab( bank.name+"othertab",
			DIV(null,
			
			  P({'style':"color: #878484;"},
			   "testing tabs"
			  )
			)
		));*/
		this.map.openInfoWindowTabs(marker.getPoint(), tabs);
		connect(select, "onclick", bind(this.saveBranch, this, branch.id));
		//connect(bookMetting, "onclick", bind(bank_book.show, bank_book, branch.id));
		connect(bookMetting, "onclick", bind(this.saveBranchAndBook, this, branch.id));
		//keep print uptodate:
		this.updatePrintBranch(branch,bank);
	} catch (e) {
		myerror(e);
	}
};			
LookupEmbedded.prototype.saveBranch = function(branchId) {
	//stat("Google Map :: Valgt filial :: "+this.getBankName(this.branchesById[branchId].bankId)+" :: "+this.getBranchName(branchId));
	var branchname=this.getBranchName(branchId);
	var bname = this.banksById[this.branchesById[branchId].bankId].name
	if (bname) branchname=bname + " " + branchname;
	//if it was bubble submit, do extra stats
	tstatPiChoice($('bubble_submit'), branchname);
	/*
	tstat("Find rådgiver", "Find rådgiver - Søg på filial","Velkommen,Find rådgiver,Søg på filial"
		 ,{'prop19':""+branchname
		 ,'prop20':"Filial"
		 ,'eVar19':""+branchname
		 ,'eVar20':"Filial"
		 ,'events':"event9"
		 });
	*/
	this.branchId = branchId;
	json("lookup_save", {branch_id:branchId,'save':true}, bind(this.onSaveBranch, this));
}
LookupEmbedded.prototype.saveBranchAndBook = function(bid){
	//log("savebranchandbook");
	this.saveBranch(bid);
	bank_book.show(bid);
}
LookupEmbedded.prototype.fetchAndShowBranch = function(branchId) {
	var b = branchId; 
	if (!branchId) {
		b = this.branchId;
	}
	var pi = parseQueryString(document.location.search).pi;
	if (pi) {
		json("lookup_bank", {'bank_id':pi}, bind(this.onSaveBranchForPi, this));
	}
	if(!b) { //pi
		return;
	}
	json("lookup_save", {'branch_id':b,'save':false}, bind(this.onSaveBranch, this));
}			
LookupEmbedded.prototype.onSaveBranchForPi = function(bankInfo) {
 if (bankInfo) {
  if ($("advisor")) removeElement("advisor");
   if ($("bankcard")) removeElement("bankcard");
   var bankcard =
    DIV({'id':"bankcard"},
     IMG({'src':"resources/images/visit_top.gif",'style':"width: 175px"},null),
     DIV({'id':"bankcard_background"},
      DIV({'id':"bankcard_logo"},
       IMG({
       'id' :"bank_logo_img",
       'src' :"/TKdkcms/uploads/pilogo/" + bankInfo.externalId + ".png",
       'onload':"$('bank_logo_img').style.height = 'auto';"
       })
       ),
       DIV({'id':"bankcard_inside"},
        UL(null,
         LI({'style':"height: 8px;"}," "),
         LI(null,
         A( {
         'href' :"page?action=lookup_list",
         'onclick' :"return lookup_embedded .externalInit(" + bankInfo.id + ")",
         'class' :"a_dot_link"
         },
         "Vælg filial"
         )
        )
       )
      )
     ),
     IMG({'src':"resources/images/visit_bottum.gif",'style':"width: 175px"},null)
    );
   appendChildNodes("mypage",bankcard);
   if (this.bookMode) {
   bank_book.show(branchInfo.bankId);
  }
 }
}
LookupEmbedded.prototype.externalInit = function(bankId) {
	json("lookup_all", {}, bind(
		function(bankId, result) {
			this.onGetBanks(result);
			this.showSearchByList();
			var options = $("lookup_bank").options;
			for(var i = 1; i < options.length; i++) { // do not ask why from 1 :) i have no idea why element 0 contain correct id
			    if (options[i].value == bankId) {
			        $("lookup_bank").selectedIndex = i;
			        break;
			    }
			}
			// for some reason we need to wait before we do this.
			// thus wait 1 second to make sure the above is completed and on scene
			window.setTimeout(bind(function(bankId) {
				this.selectBank(bankId);
			}, this, bankId), 1000);
			return false;
		}, this, bankId
		)
	);
	return false;
	
}
LookupEmbedded.prototype.onSaveBranch = function(branchInfo) {
	if (branchInfo) {
		if ($("advisor")) removeElement("advisor");
		if ($("bankcard")) removeElement("bankcard");
		this.lastBranch = branchInfo.bankId;
		this.branchName = branchInfo.branch;
		var bankcard = 
		DIV({'id':"bankcard"},
			IMG({'src':"resources/images/visit_top.gif",'style':"width: 175px"},null),
			DIV({'id':"bankcard_background"},
				DIV({'id':"bankcard_logo"},
					IMG({
						'id'	:"bank_logo_img",
						'src'	:"/TKdkcms/uploads/pilogo/" + branchInfo.externalId + ".png",
						'onload':"$('bank_logo_img').style.height = 'auto';"
					})
				),
				DIV({'id':"bankcard_inside"},
					UL(null,
						LI(null,branchInfo.branch),
						LI(null,branchInfo.address),
						LI(null,branchInfo.zip + " " + branchInfo.city),
						LI(null,"Tlf. " + branchInfo.phone),
						LI({'style':"height: 3px;"}," "),
						LI({'style':"overflow: hidden; text-overflow: ellipsis; width: 158px;"},A({
									'href'	:"http://"+branchInfo.website,
									'target':"_blank",
									'class'	:"a_link"
								},
							branchInfo.website.substring(0,branchInfo.website.indexOf("/") == -1 
								? branchInfo.website.length
								:branchInfo.website.indexOf("/")
							))),
						LI({'style':"height: 8px;"}," "),
						LI(null,
							A(	{
									'href'		:"page?action=bank_book&bank_id=" + branchInfo.branchId,
									'onclick'	:"return bank_book.show(" + branchInfo.branchId + ");",
									'class'		:"a_dot_link"
								},
								"Bestil møde"
							)
						),
						LI(null,
							A(	{
									'href'		:"page?action=lookup_zip",
									'onclick'	:"lookup = new Lookup('lookup_map_embedded');lookup_embedded .showSearchByZip(" + myplanner.getZip() + "); return false;",
									'class'		:"a_dot_link"
								},
								"Vælg nyt pengeinstitut"
							)
						)
					)
				)
			),
			IMG({'src':"resources/images/visit_bottum.gif",'style':"width: 175px"},null)
		);
		appendChildNodes("mypage",bankcard);
		if (this.bookMode) {
			bank_book.show(branchInfo.bankId);
		}
		setNodeAttribute("book_panel",'onsubmit', "return bank_book.show(" + branchInfo.branchId + ");");
	}
}

addLoadEvent(function () {
        lookup_embedded = new LookupEmbedded("lookup_map_embedded");
});
