/*global YGeoPoint, YMarker, YImage, EventsList, YCoordPoint, YMap, YSize, YEvent, ActiveXObject */ var map = null; var specialMarker = null; var xmlHttp = null ; var sc_mapsize = 0; var noCustomPoints = 0; var spotImage = new YImage("http://sap-consulting.ro/images/spot_big.png", new YSize(16, 16), new YCoordPoint(11, 8)); function addNew(implname, lat, lon) { if (lat === 0 || lon === 0) { return; } var newMarker, currentGeoPoint = new YGeoPoint(lat, lon); newMarker = new YMarker(currentGeoPoint, spotImage); newMarker.openSmartWindow('   ' + implname); newMarker.enableAutoContain(); // newMarker.addAutoExpand(implname); // newMarker.openAutoExpand() if (specialMarker) { map.removeMarker(specialMarker.id); specialMarker = null; } map.addOverlay(newMarker); map.panToLatLon(currentGeoPoint); } function showSendBox(pDisplay) { if (pDisplay) { document.getElementById('sendbox').style.display = 'block'; document.getElementById('addnew').className = 'boldnolink'; } else { document.getElementById('sendbox').style.display = 'none'; document.getElementById('addnew').className = 'jslink'; } } function reportPosition(ev, coords) { var currentGeoPoint = new YGeoPoint(coords.Lat, coords.Lon); if (!specialMarker) { specialMarker = new YMarker(currentGeoPoint); map.addOverlay(specialMarker); } else { specialMarker.setYGeoPoint(currentGeoPoint); } document.sendimpl.latit.value = coords.Lat; // document.sendimpl.latit.select(); document.sendimpl.longit.value = coords.Lon; showSendBox(true); } function readFromDB(search_term) { if (!createXmlHttp()) { return ""; } var url = "/code/implmap.php?lang=en"; if (search_term) { url = url + "&st=" + search_term; } xmlHttp.open("GET", url, false); xmlHttp.send(null); if (xmlHttp.status === 200) { return xmlHttp.responseText; //use xmlhttp.responseText or responseXML here } else { return ''; } } function addImplMarkers(search_term) { var crtGeoPoint, lResult, newMarker, allImpl, i; lResult = readFromDB(search_term); if (lResult) { allImpl = eval('(' + lResult + ')'); for (i = 0;i < allImpl.item.length; i = i+1) { if (allImpl.item[i].lat && allImpl.item[i].long) { crtGeoPoint = new YGeoPoint(allImpl.item[i].lat, allImpl.item[i].long); newMarker = new YMarker(crtGeoPoint, spotImage); if (allImpl.item[i].desc) { newMarker.openSmartWindow('   ' + allImpl.item[i].desc); } map.addOverlay(newMarker); } } if (allImpl.msg) { document.getElementById('errmsg').innerHTML = allImpl.msg; } return allImpl; } } function showAllMarkers() { var allImpl = addImplMarkers(''); if (allImpl) { document.getElementById("noimpl").innerHTML = allImpl.item.length; } } function GetXmlHttpObject() { var xmlHttp = null; try { // Firefox, Opera 8.0+, Safari xmlHttp = new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e2) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; } function createXmlHttp() { if (xmlHttp !== null) { return true; } xmlHttp = GetXmlHttpObject(); if (xmlHttp === null) { alert("Browser does not support HTTP Request"); return false; } return true; } function change_size() { sc_mapsize = 1 - sc_mapsize; var mapBox = document.getElementById('map'), lHeight, lWidth, lCenter = map.getCenterLatLon(), lSize; if (sc_mapsize === 0) { document.getElementById('link_large').innerHTML = 'Large
format'; map.setZoomLevel(map.getZoomLevel() + 1); lHeight = 350; lWidth = 495; } else { document.getElementById('link_large').innerHTML = 'Small
format'; map.setZoomLevel(map.getZoomLevel() - 1); lHeight = 600; lWidth = 850; } mapBox.style.height = lHeight; mapBox.style.width = lWidth; lSize = new YSize(lWidth, lHeight); map.resizeTo(lSize); map.panToLatLon(lCenter); } function search_impl() { var lCompany = document.getElementById('company').value; show_search_result(lCompany); return false; } function show_search_result(lCompany) { var allImpl; if (lCompany.length < 4) { alert("Company name must have at least 4 letters"); } if (noCustomPoints === 0) { map.removeMarkersAll(); } allImpl = addImplMarkers(lCompany); if (allImpl !== null && allImpl.item.length > 0) { map.panToLatLon(new YGeoPoint(allImpl.item[0].lat, allImpl.item[0].long)); noCustomPoints = noCustomPoints + 1; } else { document.getElementById('implname').value = lCompany; showSendBox(true); } document.getElementById('company').value = ""; } function urlencode(str) { // http://kevin.vanzonneveld.net // + original by: Philip Peterson // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + input by: AJ // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // % note: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/ // * example 1: urlencode('Kevin van Zonneveld!'); // * returns 1: 'Kevin+van+Zonneveld%21' // * example 2: urlencode('http://kevin.vanzonneveld.net/'); // * returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F' // * example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a'); // * returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a' var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [], ret = str.toString(); replacer = function(search, replace, str) { var tmp_arr = []; tmp_arr = str.split(search); return tmp_arr.join(replace); }; // The histogram is identical to the one in urldecode. histogram['!'] = '%21'; histogram['%20'] = '+'; // Begin with encodeURIComponent, which most resembles PHP's encoding functions ret = encodeURIComponent(ret); for (search in histogram) { replace = histogram[search]; ret = replacer(search, replace, ret) // Custom replace. No regexing } // Uppercase for full PHP compatibility return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) { return "%" + m2.toUpperCase(); }); return ret; } function addImplementation(pForm) { if (pForm.implname.value.length < 4) { alert("Company name must have at least 4 letters"); return false; } if ((pForm.latit.value === "" || pForm.longit.value === "") && pForm.address.value === "") { alert("Fill in latitude/longitude by double clicking on the map or fill in the address"); return false; } if ((pForm.repname.value === "" || pForm.email.value === "") && pForm.details.value === "") { alert("Fill either name/address, or other details"); return false; } if (!createXmlHttp()) { return; } xmlHttp.open("POST", "/code/implmap.php", true); var params = "implname=" + urlencode(pForm.implname.value) + "&latit=" + urlencode(pForm.latit.value) + "&longit=" + urlencode(pForm.longit.value) + "&address=" + urlencode(pForm.address.value) + "&repname=" + urlencode(pForm.repname.value) + "&email=" + urlencode(pForm.email.value) + "&details=" + urlencode(pForm.details.value); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.setRequestHeader("Content-length", params.length); xmlHttp.setRequestHeader("Connection", "close"); xmlHttp.send(params); if (noCustomPoints === 0) { map.removeMarkersAll(); } addNew(pForm.implname.value, pForm.latit.value, pForm.longit.value); noCustomPoints = noCustomPoints + 1; document.getElementById('errmsg').innerHTML = "Thank you! After verification the implementation will be added to the map."; showSendBox(false); pForm.implname.value = ""; pForm.latit.value = ""; pForm.longit.value = ""; pForm.address.value = ""; pForm.repname.value = ""; pForm.email.value = ""; pForm.details.value = ""; return false; } function zoomOnBuc() { if (sc_mapsize === 0) { map.setZoomLevel(7); } else { map.setZoomLevel(6); } map.panToLatLon(new YGeoPoint(44.4450557989, 26.109008789)); } function zoomOnRom() { if (sc_mapsize === 0) { map.setZoomLevel(12); } else { map.setZoomLevel(11); } map.panToLatLon(new YGeoPoint(45.90529986, 24.91699219)); } function startMap(ini_location) { // Create a Map that will be placed in the "map" div. map = new YMap(document.getElementById('map')); // Add the zoom control. Long specifies a Slider versus a "+" and "-" zoom control map.addZoomLong(); map.disableKeyControls(); map.disablePanOnDoubleClick(); map.setZoomRange(1, 12); // Specifying the Map starting location and zoom level var centerPoint = new YGeoPoint(45.90529986, 24.91699219); map.drawZoomAndCenter(centerPoint, 12); if (ini_location === "b") { zoomOnBuc(); } // Add an event YEvent.Capture(map, EventsList.MouseDoubleClick, reportPosition); }