/**
 * @author insyma AG (HAGS)
 * @copyright insyma AG
 * @version 1.0
 * @projectDescription insyma JavaScript Library eMap Module
 */
var insymaEmap = {
	// Google Map Object
	map:"",
	// Geocoding Object
	geocoder:"",
	// Marker Manager Object
	marker:"",
	
	// Array with all Marker Objects
	batch:[],
	// Array with all HTML's for the InfoWindow of the Marker
	htmls:[],
	// Kind of Hash Table if the index of batch and fil Array are diffrent
	resultList:[],
	
	init:function(){
		// Check the Browser and if the fil Object exists (File containing all locations)
		if(GBrowserIsCompatible() && typeof fil != "undefined") {
			insymaEmap.Map.init();
			insymaEmap.geocoder = new GClientGeocoder();
			insymaEmap.Marker.init();
			insymaEmap.Search.init();
			insymaEmap.Helper.init();
			insymaEmap.List.init();
			
			insymaUtil.addEvent(window,'unload',GUnload,false);
		}
	},
	Helper:{
		init:function(){
				this.setCheckboxHandler();
				this.updateActiveLocations();
		},
		// Check for Checkboxes and update the active locations array from the partParams
		setCheckboxHandler:function(){
			if(partParams.checkboxes.catId0 != '') {
				var cat0 = document.getElementById(partParams.checkboxes.catId0).onclick = this.updateActiveLocations;
			}
			if(partParams.checkboxes.catId1 != '') {
				var cat1 = document.getElementById(partParams.checkboxes.catId1).onclick = this.updateActiveLocations;
			}
			if(partParams.checkboxes.catId2 != '') {
				var cat2 = document.getElementById(partParams.checkboxes.catId2).onclick = this.updateActiveLocations;
			}
			if(partParams.checkboxes.catId3 != '') {
				var cat3 = document.getElementById(partParams.checkboxes.catId3).onclick = this.updateActiveLocations;
			}
			if(partParams.checkboxes.catId4 != '') {
				var cat4 = document.getElementById(partParams.checkboxes.catId4).onclick = this.updateActiveLocations;
			}
			if(partParams.checkboxes.catId5 != '') {
				var cat5 = document.getElementById(partParams.checkboxes.catId5).onclick = this.updateActiveLocations;
			}
		},
		// Update the active locations array and the the List below the map and the Markers shown on the map
		updateActiveLocations:function(bool) {
			if(partParams.checkboxes.catId0 != '') {
				partParams.active.cat0 = document.getElementById(partParams.checkboxes.catId0).checked == true ? true : false;
			}
			if(partParams.checkboxes.catId1 != '') {
				partParams.active.cat1 = document.getElementById(partParams.checkboxes.catId1).checked == true ? true : false;
			}
			if(partParams.checkboxes.catId2 != '') {
				partParams.active.cat2 = document.getElementById(partParams.checkboxes.catId2).checked == true ? true : false;
			}
			if(partParams.checkboxes.catId3 != '') {
				partParams.active.cat3 = document.getElementById(partParams.checkboxes.catId3).checked == true ? true : false;
			}
			if(partParams.checkboxes.catId4 != '') {
				partParams.active.cat4 = document.getElementById(partParams.checkboxes.catId4).checked == true ? true : false;
			}
			if(partParams.checkboxes.catId5 != '') {
				partParams.active.cat5 = document.getElementById(partParams.checkboxes.catId5).checked == true ? true : false;
			}
			if(bool != true) {
				insymaEmap.List.mapList();
				insymaEmap.Marker.updateMarkers();
			}
		},
		// Get Info if current location is active
			// The information about the Location Type comes as comma separated string
		isActiveLocation:function(data) {
			var active = true;
			var dataSet = data.split(",");
			if (typeof(cuParams.markerCat) == "undefined" || cuParams.markerCat == "") {
				
				for (i = 0; i < dataSet.length; i++) {
					if (dataSet[i] == 0) {
						continue;
					}
					else {
						if (partParams.active["cat" + i] == false) {
							active = false;
						}
						break;
					}
				}
			} else {
				for(j = 0; j < dataSet.length; j++) {
					if(dataSet[j] == 1 && (cuParams.markerCat == j + 1)) {
						//console.log(dataSet[j] + ' markerCat: '+ (j+1))
						active = true;
						break;
					} else {
						active = false;
					}
				}
			}
			return active;	
		},
		// Used for the links in the list below the map to open the MarkerInfowindow
		openMarkerWindow:function(n) {
			insymaEmap.batch[n].openInfoWindowHtml(insymaEmap.htmls[n]);
		}
	},
	Search:{
		init:function(){
			if(typeof document.getElementById(partParams.config.search.searchFormId) != "undefined"){
				document.getElementById(partParams.config.search.searchFormId).onsubmit = function(){
					insymaEmap.Search.handleInput();
					return false;
				};
			}
		},
		// Decide what to do with the input of the form
		handleInput:function(){
			if(typeof document.getElementById(partParams.config.search.searchZipId) != "undefined" && typeof document.getElementById(partParams.config.search.searchCityId) != "undefined") {
				var zip = document.getElementById(partParams.config.search.searchZipId).value;
				var city = document.getElementById(partParams.config.search.searchCityId).value;
				var request;
				if((zip == '' && city != '') || (zip != '' && city != '')){
					request = city + ', ' + partParams.config.geocodeCountry;
					this.zoomToAddress(request, city);
				}
				else if(zip != '' && city == '') {
					request = zip + ', ' + partParams.config.geocodeCountry;
					this.zoomToAddress(request, zip);
				}
			}
		},
		// Zoom to the address searched for!
			// Goes closer if only one location is found at the specific place
			// Zooms out a little if more than one location is found at the specific place
		zoomToAddress:function(request, input){
			insymaEmap.geocoder.getLocations(request, function(response){
				if (!response || response.Status.code != 200) {
				} else {
					var size = [];
					var zoomlevel = cuParams.searchZoom;
					var point = new GLatLng(response.Placemark[0].Point.coordinates[1], response.Placemark[0].Point.coordinates[0]);
					for (var i = 0; i < insymaEmap.batch.length; i++) {
						var result = insymaEmap.resultList[i];
						var dataSet = fil[result];
						if (insymaEmap.Helper.isActiveLocation(dataSet.FilialeTyp) == true) {
							if (isNaN(input) == true) {
								var city = input.toLowerCase();
								var compCity = dataSet.Ort.toLowerCase(); 
								if(compCity == city) {
									zoomlevel = cuParams.mapListMatchZoom;
									temppoint = new GLatLng(dataSet.Laenge, dataSet.Breite);
									size.push(result);
								}
							}
							else {
								var zip = parseInt(input);
								var zipComp = parseInt(dataSet.Plz);
								if(zipComp == zip) {
									zoomlevel = cuParams.mapListMatchZoom;
									temppoint = new GLatLng(dataSet.Laenge, dataSet.Breite);
									size.push(i);
								}
							}
						}
					}
					if(size.length > 1) {
						var distance = [];
						var distIndex = [];
						for (var j = 0; j < size.length; j++) {
							var dist = point.distanceFrom(insymaEmap.batch[size[j]].getLatLng());
							distance.push(dist);
							distIndex.push(size[j]);
						}
						if(distance.length > 1) {
								function Numsort(a, b) {
									return a - b;
								}
								distCopy = distance;
								distCopy.sort(Numsort);
								for(k=0;k<distance.length;k++) {
									if(distance[k] == distCopy[0]) {
										point = insymaEmap.batch[distIndex[k]].getLatLng();	
										zoomlevel = zoomlevel - 2;
									}
								}
							}
						
					}
					else if(size.length = 1 && typeof(size[0]) != 'undefined') {
						point = temppoint;	
					}
					insymaEmap.map.setCenter(point, zoomlevel);
				}
					
			});
		} 
	},
	Map:{
		init:function(){
			if(typeof document.getElementById(partParams.config.mapContainerId) != "undefined"){
				insymaEmap.map = new GMap2(document.getElementById(partParams.config.mapContainerId));
				this.setZoom(partParams.config.minResolution, partParams.config.maxResolution);
				insymaEmap.map.setCenter(new GLatLng(partParams.config.mapCenter.lat, partParams.config.mapCenter.lng), partParams.config.startResolution);
				this.setDrag();
				insymaEmap.map.addControl(new GScaleControl());
				this.setControlHandler();
			} else {
				return false;
			}
		},
		// Set max and min zoom of the map
		setZoom:function(minRes,maxRes){
			var mt = insymaEmap.map.getMapTypes();
			for(var i=0;i<mt.length;i++){
				mt[i].getMinimumResolution = function() {return minRes;};
				mt[i].getMaximumResolution = function() {return maxRes;};
			}
		},
		// Enable or disable dragging of the map
		setDrag:function() {
			if(cuParams.dragZoom > partParams.config.startResolution) {
				insymaEmap.map.disableDragging();
			}
		},
		// set the handlers of the Controls
		setControlHandler:function() {
			if(typeof document.getElementById(partParams.config.controls.zoomInId) != "undefined") {
				var zoomIn = document.getElementById(partParams.config.controls.zoomInId).onclick = this.zoomIn;
			}
			if(typeof document.getElementById(partParams.config.controls.zoomOutId) != "undefined") {
				var zoomOut = document.getElementById(partParams.config.controls.zoomOutId).onclick = this.zoomOut;
			}
			if(typeof document.getElementById(partParams.config.controls.mapTypeId) != "undefined") {
				var mapKind = document.getElementById(partParams.config.controls.mapTypeId).onclick = this.changeMapType;
			}
			if(typeof document.getElementById(partParams.config.controls.mapResetId) != "undefined") {
				var mapCh = document.getElementById(partParams.config.controls.mapResetId).onclick = this.zoomStart;
			}
		},
		zoomIn:function() {
			insymaEmap.map.zoomIn();
		},
		zoomOut:function() {
			insymaEmap.map.zoomOut();
		},
		zoomStart:function() {
			insymaEmap.map.setCenter(new GLatLng(partParams.config.mapCenter.lat, partParams.config.mapCenter.lng), partParams.config.startResolution);
		},
		changeMapType:function() {
			var current = insymaEmap.map.getCurrentMapType();
			var mapKind = document.getElementById(partParams.config.controls.mapTypeId);
			if(current == G_NORMAL_MAP) {
				insymaEmap.map.setMapType(G_HYBRID_MAP);
				mapKind.className = "other";
			} else {
				insymaEmap.map.setMapType(G_NORMAL_MAP);
				mapKind.className = "";
			}
		}
	},
	Marker:{
		init:function(){
			insymaEmap.marker = new GMarkerManager(insymaEmap.map,{borderPadding:1});
			insymaEmap.marker.addMarkers(this.getMarkers(),cuParams.showMarkers);
			insymaEmap.marker.refresh();
			GEvent.addListener(insymaEmap.map, "move", function(){
				insymaEmap.Marker.updateMarkers();
				//console.log("Move");
			});
			GEvent.addListener(insymaEmap.marker, "changed", function(){
				//console.log("Mgr changed");
				insymaEmap.Marker.updateMarkers();
			})
			/*GEvent.addListener(insymaEmap.map, "zoomend", function(){
				insymaEmap.Marker.updateMarkers();
				console.log("Zoomend");
			});
			GEvent.addListener(insymaEmap.map, "dragend", function(){
				insymaEmap.Marker.updateMarkers();
				console.log("dragend");
			});*/
		},
		// Get all the markers and put them into the global arrays
		getMarkers:function(){
			insymaEmap.batch = [];
			insymaEmap.htmls = [];
			insymaEmap.resultList = [];
			markerHidden = false;
			for (var i = 0; i < fil.length; i++) {
				if(typeof this.getPoint(fil[i]) == "undefined") {
					continue;
				}
				if(partParams.isLandiMap != true && insymaEmap.Helper.isActiveLocation(fil[i].FilialeTyp) != true) {
					continue;
				}
				
				if(typeof(cuParams.markerCat) != "undefined" && cuParams.markerCat != "" && insymaEmap.Helper.isActiveLocation(fil[i].FilialeTyp) == false) {
					continue;
				}
				else {
					var point = this.getPoint(fil[i]);
					var html = this.createHtml(fil[i]);
					var icon = this.getIcon(fil[i]);
					var title = fil[i].Name != '' ? fil[i].Name : '';
					var marker = this.createMarker(point,html,title,icon);
					
					insymaEmap.batch.push(marker);
					insymaEmap.htmls.push(html);
					insymaEmap.resultList.push(i);
				}
			}
			return insymaEmap.batch.length > 0 ? insymaEmap.batch : false;
		},
		// Create a new Google Marker Object
		createMarker:function(point,html,title,icon){
			var marker = new GMarker(point,{title:title,icon:icon});
			GEvent.addListener(marker, "click", function(){
				marker.openInfoWindowHtml(html);
			});
			return marker;
		},
		// Create the HTML for the InfoWindow
		createHtml:function(data){
			var icon = '';
			var cat = 0;
			var dataSet = data.FilialeTyp.split(",");
			for (i = 0; i < dataSet.length; i++) {
				if (dataSet[i] == 0) {
					continue;
				}
				else {
					cat = i;
					break;
				}
			}
			if(typeof(partParams.showInfoWindowIcon) != "undefined" && partParams.showInfoWindowIcon == true) {
				icon = '<img style="position: absolute; top: -2px; right: 15px;" src="' + insymaEmap.List.getIconPath(data.FilialeTyp) + '" alt="Icon" />';
			}
			var titleHtml = data.Name != '' ? '<li><b>' + data.Name + '</b></li>' : '';
			var zusatz = data.Zusatz != '' ? '<li><b>' + data.Zusatz + '</b></li>' : '';
			var strasse = data.Strasse != '' ? '<li>' + data.Strasse + '</li>' : '';
			var ort = data.Ort != '' ? '<li>' + data.Plz + ' ' + data.Ort + '</li>' : '';
			var tel = data.Telefon != '' ? '<li><br />Tel. ' + data.Telefon + '</li>' : '';
			var fax = data.Fax != '' ? '<li>Fax. ' + data.Fax + '</li>' : '';
			var url = data.Web != '' ? '<li><a href="' + data.Web + '" target="_blank">' + data.Web + '</a></li>' : '';
			var email = data.Email != '' ? '<li><a href="mailto:' + data.Email + '">' + data.Email + '</a></li>' : '';
			var caturl= '';
			if (cuParams.catLink != '' && typeof(cuParams.catLink) != 'undefined') {
				caturl = (cuParams.catLink["cat" + cat] != '' && cuParams.catLinkLabel["cat" + cat] != '') ? '<li><br /><a href="' + cuParams.catLink["cat" + cat] + '" target="_blank">' + cuParams.catLinkLabel["cat" + cat] + '</a></li>' : '';
			}
			var open = data.Zeiten != '' ? '<li><br />' + data.Zeiten + '</li>' : '';
			var html = icon + '<ul>'+ titleHtml + zusatz + strasse + ort + tel + fax + url + email+ caturl + open + '</ul><br />';
			return html;
		},
		// Get the Point for the Marker Object
		getPoint:function(data){
			if ((data.Laenge != 0 || data.Breite != 0)) {
				var x = data.Laenge;
				var y = data.Breite;
				var point = new GLatLng(x, y);
			} 
			else if(partParams.config.geocodeMissingLatLng == true) {
				var street = data.Strasse != '' ? data.Strasse + ', ' : '';
				var address = street + data.Ort + ", " + partParams.config.geocodeCountry;
				insymaEmap.geocoder.getLocations(address, function(response){
					if (response || response.Status.code == 200) {
						var place = response.Placemark[0];
						var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
					}
				});
			}
			return point;
		},
		// Get the Icon for the Marker and create a new Google Icon
		getIcon:function(data) {
			var iconPath;
			var gIcon;
			if(typeof cuParams.markerIcon == "undefined" || cuParams.markerIcon == ""){
				if (typeof(partParams.altIconSrc) != "undefined" && partParams.altIconSrc != '') {
					iconPath = partParams.altIconSrc;
				}
				else {
					var dataSet = data.FilialeTyp.split(",");
					for (i = 0; i < dataSet.length; i++) {
						if (dataSet[i] == 0) {
							continue;
						}
						else {
							iconPath = partParams.icons["cat" + i];
							break;
						}
					}
				}
			} else {
				iconPath = cuParams.markerIcon;
			}
			if(typeof iconPath == "undefined" || iconPath == '') {
				gIcon = G_DEFAULT_ICON;
			} else {
				var preIcon = new Image();
				var icon = insymaUtil.createElm('img');
				var width, height, size;
				preIcon.onload = function(){
					icon.src = preIcon.src;
					width = icon.width;
					height = icon.height;
					size = new GSize(width, height);
				};
				preIcon.src = iconPath;
				var mapIcon = new GIcon();
				mapIcon.image = iconPath;
				mapIcon.iconSize = size;
				mapIcon.iconAnchor = new GPoint(6, 20);
				mapIcon.infoWindowAnchor = new GPoint(14, 1);	
				gIcon = mapIcon;
			}
			return gIcon;
		},
		// Update visibility of the Markers on the map
		updateMarkers:function() {
			for(var i=0; i< insymaEmap.batch.length; i++) {
				insymaEmap.batch[i].hide();
				var result = insymaEmap.resultList[i];
				var type = fil[result].FilialeTyp;
				if(insymaEmap.Helper.isActiveLocation(type) == true) {
					if(insymaEmap.batch[i].isHidden() == true) {
						insymaEmap.batch[i].show();
					}
				}
				else if(insymaEmap.Helper.isActiveLocation(type) == false) {
					if(insymaEmap.batch[i].isHidden() == false) {
						insymaEmap.batch[i].hide();
					}
				}
			}
		}
	},
	List:{
		init:function(){
			if(typeof cuParams.mapListEnable != "undefined" && cuParams.mapListEnable == 1) {
				//GEvent.addListener(insymaEmap.map, "move", insymaEmap.List.mapList);
				GEvent.addListener(insymaEmap.map, "moveend", insymaEmap.List.mapList);
				GEvent.addListener(insymaEmap.map, "zoomend", insymaEmap.List.mapList);
			}
		},
		// Generate the list below the map if active
		mapList:function() {
			insymaEmap.List.clearList(partParams.config.list.mapListId);
			insymaEmap.List.clearTitle(partParams.config.list.mapListTitleId);
			if (insymaEmap.map.getZoom() >= cuParams.mapListZoom && cuParams.mapListEnable == 1) {
				insymaEmap.List.updateList(partParams.config.list.mapListId);
				insymaEmap.List.updateTitle("map");
			}
		},
		// Update the list on specific events fired from the map
		updateList:function(elmId) {
			this.clearList(partParams.config.list.mapListId);
			this.clearTitle(partParams.config.list.mapListTitleId);
			if(insymaEmap.map.getZoom() >= cuParams.mapListZoom) {
				this.getLocations("map");
				this.updateTitle("map");
			}
		},
		clearList:function(elmId) {
			var elm;
			elm = document.getElementById(elmId);
			elm.innerHTML = "";
		},
		clearTitle:function(elmId){
			var elm;
			elm = document.getElementById(elmId);
			elm.innerHTML = "";
		},
		updateTitle:function(type) {
			var title;
			var titleCon;
			var titleData;
			this.clearTitle(partParams.config.list.mapListTitleId);
			titleCon = document.getElementById(partParams.config.list.mapListTitleId);
			title = cuParams.mapListTitle;
			titleData = insymaUtil.createElm("h2",{},title,titleCon);
		},
		// Get all locations whitin the maps viewport
		getLocations:function(type) {
			var size = [];
			var b = insymaEmap.map.getBounds();
			var north = b.getNorthEast().lat();
			var south = b.getSouthWest().lat();
			var east = b.getNorthEast().lng();
			var west = b.getSouthWest().lng();
			for(var i=0;i< insymaEmap.batch.length;i++){
				var result = insymaEmap.resultList[i];
				var dataSet = fil[result];
				if (insymaEmap.Helper.isActiveLocation(dataSet.FilialeTyp) == true) {
					var dataLat = parseFloat(dataSet.Laenge);
					var dataLng = parseFloat(dataSet.Breite);
					var latBool = false;
					var lngBool = false;
					if(dataLat < north && dataLat > south) {
						latBool = true;
					}
					if(dataLng < east && dataLng > west) {
						lngBool = true;
					}
					if(lngBool == true && latBool == true) {
						//console.log("dataLat: " + dataLat + " north " + north + " south " + south);
						//console.log("dataLng: " + dataLng + " east " + east + " west " + west);
						size.push(i);
						this.generateListItem(i, type);
					}
				}
			}
		},
		// Generate an list item
		generateListItem:function(n,appendTo) {
			var appendList = document.getElementById(partParams.config.list.mapListId);
			var result = insymaEmap.resultList[n];
			var dataSet = fil[result];
			var cat = 0;
			var catSet = dataSet.FilialeTyp.split(",");
			for (i = 0; i < catSet.length; i++) {
				if (catSet[i] == 0) {
					continue;
				}
				else {
					cat = i;
					break;
				}
			}			
			//console.log("Result #" + result);
			var filDiv = insymaUtil.createElm("div", {
				className: "filiale"
			}, '', appendList);
			var iconDiv = insymaUtil.createElm('div', {
				className: "icon"
			}, '', filDiv)
				var icon = insymaUtil.createElm('img', {
					alt: "Icon",
					src: this.getIconPath(dataSet.FilialeTyp)
				}, '', iconDiv);
			
			var addressDiv = insymaUtil.createElm('div', {
				className: "addressDiv"
			}, '', filDiv);
			var addressList = insymaUtil.createElm("ul", {}, '', addressDiv);
			
			var addressTitleData = dataSet.Name;
			if (dataSet.Zusatz != '') {
				addressTitleData += ' - ' + dataSet.Zusatz;
			}
			var addressTitle = insymaUtil.createElm("li", {
				className: "title"
			}, addressTitleData, addressList);
			
			if (dataSet.Strasse != "" && dataSet.Plz != "" && dataSet.Ort != "") {
				var addressStreetData = dataSet.Strasse;
				var addressStreet = insymaUtil.createElm("li", {
					className: "street"
				}, addressStreetData, addressList);
				
				var addressOrtData = dataSet.Plz + ' ' + dataSet.Ort;
				var addressOrt = insymaUtil.createElm("li", {
					className: "city"
				}, addressOrtData, addressList);
			}
			
			var numberDiv = insymaUtil.createElm('div', {
				className: "numberDiv"
			}, '', filDiv);
			var numberList = insymaUtil.createElm("ul", {}, '', numberDiv);
			
			if (dataSet.Telefon != "") {
				var phoneData = cuParams.labelTel + ' ' + dataSet.Telefon;
				var phone = insymaUtil.createElm("li", {
					className: "phone"
				}, phoneData, numberList);
			}
			if (dataSet.Fax != "") {
				var faxData = cuParams.labelFax + ' ' + dataSet.Fax;
				var fax = insymaUtil.createElm("li", {
					className: "fax"
				}, faxData, numberList);
			}
			var detailDiv = insymaUtil.createElm('div', {
				className: "detailDiv"
			}, '', filDiv);
			var detailLink = insymaUtil.createElm("a", {
				href: "#"
			}, cuParams.listLink, detailDiv);
			detailLink.onclick = function(){
				insymaEmap.Helper.openMarkerWindow(n);
				// Scroll to top
				//return false;
			};
			if(dataSet.Zeiten != "" || dataSet.Web != '' || dataSet.Email != '') {
				var moreLink = insymaUtil.createElm("a", {
					href: "#",
					className: "moreLink"
				}, false,filDiv);
				var moreImg = insymaUtil.createElm("img", {
					src: "http://pro.insyma.com/iconset/img/ausklappen.gif",
					alt: "Icon"
				},false,moreLink);
				var moreDivId = "morediv-"+n;
				var moreDiv = insymaUtil.createElm("div", {
					id: moreDivId,
					className: "morediv"
				},false,filDiv);
				moreDiv.style.display = 'none';
				var url = dataSet.Web != '' ? '<a href="' + dataSet.Web + '" target="_blank">' + dataSet.Web + '</a>' : '';
				var email = dataSet.Email != '' ? '<br /><a href="mailto://' + dataSet.Email + '">' + dataSet.Email + '</a>' : '';				
				var caturl= '';
				if (cuParams.catLink != '' && typeof(cuParams.catLink) != 'undefined') {
					caturl = (cuParams.catLink["cat" + cat] != '' && cuParams.catLinkLabel["cat" + cat] != '') ? '<br /><br /><a href="' + cuParams.catLink["cat" + cat] + '" target="_blank">' + cuParams.catLinkLabel["cat" + cat] + '</a>' : '';
				}
				var opening = dataSet.Zeiten != '' ? '<br /><br />' + dataSet.Zeiten : '';
				var content = url + email + caturl + opening;
				moreDiv.innerHTML = content;
				moreLink.onclick = function(){
					insymaEmap.List.openMoreList(n);
					return false;
				}
			}
			
		},
		openMoreList:function(n){
			var moreDivId = "morediv-"+n;
			var more = document.getElementById(moreDivId);
			if(more.style.display == "none") {
				more.style.display = "block";
			} else {
				more.style.display = "none";
			}
		},
		// Get the path for the Icon of the list item
		getIconPath: function(data){
			var iconPath;
			if (typeof cuParams.markerIcon == "undefined" || cuParams.markerIcon == "") {
			
				if (typeof(partParams.altIconSrc) != "undefined" && partParams.altIconSrc != '') {
					
					iconPath = partParams.altIconSrc;
					
				}
				else {
					
					var dataSet = data.split(",");
					for (i = 0; i < dataSet.length; i++) {
						if (dataSet[i] == 0) {
							continue;
						}
						else {
							iconPath = partParams.icons["cat" + i];
							break;
						}
					}
				}
			}
			else {
				iconPath = cuParams.markerIcon;
			}
			
			return iconPath;
		}
	}
}
// Add all the magic to the browser
insymaUtil.addEvent(window,'load',insymaEmap.init,false);

