
var vigmap, geocoder, loadedPoints = Array(), vimmgr, branchesLoaded = false, bBox;

function loadMapDefaults() {
	var citiesDiv = document.getElementById('cities');
	var areaDiv = document.getElementById('selected-area');
	
	if(areaDiv && citiesDiv) {
		if(!bBox || !bBox['lat1'] || !bBox['lng1'] || !bBox['lat2'] || !bBox['lng2']) {
			bBox = {};
			bBox['lat1'] = 55.40407;
			bBox['lng1'] = 20.753174;
			bBox['lat2'] = 58.401712;
			bBox['lng2'] = 28.443604;
		}
		
		var url = self.location.href.toString();
		var bbRegs, bbRE = new RegExp("bb=([0-9]+\.[0-9]+),([0-9]+\.[0-9]+),([0-9]+\.[0-9]+),([0-9]+\.[0-9]+)\&{0,1}", 'ig');
		
		if(openedGMap && url.match(bbRE)) {
			bBox['lat1'] = RegExp.$1;
			bBox['lng1'] = RegExp.$2;
			bBox['lat2'] = RegExp.$3;
			bBox['lng2'] = RegExp.$4;
		}
		
		var toggleDiv = document.createElement('DIV');
		citiesDiv.style.display = 'none';
		toggleDiv.innerHTML = citiesDiv.style.display == 'none' ? phrases['show_locations'] : phrases['hide_locations'];
		toggleDiv.setAttribute('id', 'toggleCitiesDiv');
		
		var mapDiv = document.createElement('DIV');
		var mapHolderDiv = document.createElement('DIV');
		
		addViEventListener(toggleDiv, "click", function () {
			if(citiesDiv.style.display == 'none') {
				if(mapHolderDiv.style.display == 'block') {
					init_effect_close(mapHolderDiv, 25, 5, function () {
						document.getElementById('toggleMap').innerHTML = document.getElementById('custom-position-map-div').style.display == 'none' ? phrases['specify_location'] : phrases['hide_map'];
						init_effect_open(document.getElementById('cities'), 15, 10, function() {
							document.getElementById('toggleCitiesDiv').innerHTML = document.getElementById('cities').style.display == 'none' ? phrases['show_locations'] : phrases['hide_locations'];
						});
					});
				}else {
					init_effect_open(citiesDiv, 15, 10, function() {
							document.getElementById('toggleCitiesDiv').innerHTML = document.getElementById('cities').style.display == 'none' ? phrases['show_locations'] : phrases['hide_locations'];
						});
				}
			}else {
				init_effect_close(citiesDiv, 15, 10, function() {
							document.getElementById('toggleCitiesDiv').innerHTML = document.getElementById('cities').style.display == 'none' ? phrases['show_locations'] : phrases['hide_locations'];
						});
			}
		}, false);
		areaDiv.appendChild(toggleDiv);
		
		mapHolderDiv.setAttribute('id', 'custom-position-map-div');
		mapDiv.setAttribute('id', 'map-div');
		var citiesParent = citiesDiv.parentNode;
		if(citiesDiv.nextSibling) citiesParent.insertBefore(mapHolderDiv, citiesDiv.nextSibling);
		else citiesParent.appendChild(mapHolderDiv);
		
		var confirmLocationDiv = document.createElement('DIV');
		confirmLocationDiv.setAttribute('id', 'confirm-location');
		var confirmLocationTxt = document.createElement('DIV');
		confirmLocationTxt.innerHTML = phrases['calculate_nearest_branch'];
		confirmLocationDiv.appendChild(confirmLocationTxt);
		mapHolderDiv.appendChild(confirmLocationDiv);
		mapHolderDiv.appendChild(mapDiv);
		
		try {
		vigmap = new GMap2(mapDiv);
		var boundingBox = new GLatLngBounds(new GLatLng(bBox['lat1'],bBox['lng1']), new GLatLng(bBox['lat2'],bBox['lng2']));
		vigmap.setCenter(boundingBox.getCenter(), vigmap.getBoundsZoomLevel(boundingBox));
		vigmap.setUIToDefault();
		
		vimmgr = new viMarkerManager(vigmap);
		}catch ( e ) {}
		
		if(!openedGMap) {
			mapHolderDiv.style.display = 'none';
		}else {
			mapHolderDiv.style.display = 'block';
			try {
			vimmgr.refreshMove();
			}catch ( e ) {}
			branchesLoaded = true;
		}
		addViEventListener(confirmLocationDiv, "click", function () {
			try {
			var bb = vigmap.getBounds();
			
			var newUrl = document.getElementById('whole_latvia').getAttribute('href').toString().replace(new RegExp("\&?ll=[0-9]+\.[0-9]+,[0-9]+\.[0-9]+", 'gi'), '').replace(new RegExp("\&?bb=[0-9]+\.[0-9]+(,[0-9]+\.[0-9]+){3}", 'gi'), '');
			newUrl += newUrl.replace(self.location.protocol+'//'+self.location.hostname, '') == '' ? '/' : '';
			self.location.href = newUrl+(newUrl.match(/\/$/) ? '' : '&')+'bb='+bb.getSouthWest().toUrlValue()+','+bb.getNorthEast().toUrlValue();
			}catch ( e ) {}
		}, false);
		
		var positionComment = document.getElementById('position-comment');
		mapToggle = document.createElement('SPAN');
		mapToggle.setAttribute('id', 'toggleMap');
		mapToggle.innerHTML = mapHolderDiv.style.display == 'none' ? phrases['specify_location'] : phrases['hide_map'];
		addViEventListener(mapToggle, "click", function () {
			if(mapHolderDiv.style.display == 'none') {
				if(citiesDiv.style.display == 'block') {
					init_effect_close(citiesDiv, 15, 10, function () {
						document.getElementById('toggleCitiesDiv').innerHTML = document.getElementById('cities').style.display == 'none' ? phrases['show_locations'] : phrases['hide_locations'];
						init_effect_open(document.getElementById('custom-position-map-div'), 25, 5, function () {
							document.getElementById('toggleMap').innerHTML = document.getElementById('custom-position-map-div').style.display == 'none' ? phrases['specify_location'] : phrases['hide_map'];
							if(!branchesLoaded) {
								vimmgr.refreshMove();
								branchesLoaded = true;
							}
						});
					});
				}else {
					init_effect_open(mapHolderDiv, 25, 5, function () {
							document.getElementById('toggleMap').innerHTML = document.getElementById('custom-position-map-div').style.display == 'none' ? phrases['specify_location'] : phrases['hide_map'];
							if(!branchesLoaded) {
								vimmgr.refreshMove();
								branchesLoaded = true;
							}
						});
				}
			}else {
				init_effect_close(mapHolderDiv, 25, 5, function () {
							document.getElementById('toggleMap').innerHTML = document.getElementById('custom-position-map-div').style.display == 'none' ? phrases['specify_location'] : phrases['hide_map'];
						});
			}
		}, false);
		
		if(positionComment.innerHTML.toString().match(/^\s*\(/) || positionComment.innerHTML.toString().match(/\)\s*$/)) {
			positionComment.innerHTML = positionComment.innerHTML.toString().replace( new RegExp('[()]', 'gi'), '')+', ';
		}
		
		positionComment.innerHTML = '('+positionComment.innerHTML;
		positionComment.appendChild(mapToggle);
		var commentBrace = document.createElement('SPAN');
		commentBrace.innerHTML = ')';
		positionComment.appendChild(commentBrace);
	}
}

addViEventListener(window, "load", loadMapDefaults, false);

