1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, width=device-width"> 6 <link 7 rel="stylesheet" 8 href="https://unpkg.com/[email protected]/dist/leaflet.css" 9 /> 10 <style> 11 #map { 12 width: 100%; 13 height: 600px; 14 } 15 </style> 16 <!--[if IE 8]> 17 <link href="/css/common_o2.1_ie8-91981ea8f3932c01fab677a25d869e49.css" media="all" rel="stylesheet" type="text/css" /> 18 <![endif]--> 19 <!--[if !(IE 8)]><!--> 20 <link href="/css/common_o2.1-858f47868a8d0e12dfa7eb60fa84fb17.css" media="all" rel="stylesheet" type="text/css" /> 21 <!--<![endif]--> 22 23 <!--[if lt IE 9]> 24 <link href="/css/airglyphs-ie8-9f053f042e0a4f621cbc0cd75a0a520c.css" media="all" rel="stylesheet" type="text/css" /> 25 <![endif]--> 26 27 <link href="/css/main-f3fcc4027aaa2c83f08a1d51ae189e3b.css" media="screen" rel="stylesheet" type="text/css" /> 28 <!--[if IE 7]> 29 <link href="/css/p1_ie_7-0ab7be89d3999d751ac0e89c44a0ab50.css" media="screen" rel="stylesheet" type="text/css" /> 30 <![endif]--> 31 <!--[if IE 6]> 32 <link href="/css/p1_ie_6-7d6a1fd8fe9fdf1ce357f6b864c83979.css" media="screen" rel="stylesheet" type="text/css" /> 33 <![endif]--> 34 <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 35 <link rel="dns-prefetch" href="//maps.googleapis.com"> 36 <link rel="dns-prefetch" href="//maps.gstatic.com"> 37 <link rel="dns-prefetch" href="//mts0.googleapis.com"> 38 <link rel="dns-prefetch" href="//fonts.googleapis.com"> 39 <link rel="dns-prefetch" href="//www.piperpal.com"> 40 <title>piperpal.com - Location-based Search Engine</title> 41 <link href="my_style_form.css" type="text/css" rel="stylesheet" /> 42 <link href='http://fonts.googleapis.com/css?family=Titillium+Web:700' rel='stylesheet' type='text/css'> 43 <link href='http://fonts.googleapis.com/css?family=Titillium+Web' rel='stylesheet' type='text/css'> 44
44<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>
44 45
45<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
45 46 </head> 47 <!-- Styles --> 48 <style> 49 #name label{ 50 display: inline-block; 51 width: 100px; 52 text-align: right; 53 } 54 #name_submit{ 55 padding-left: 100px; 56 } 57 #name div{ 58 margin-top: 1em; 59 } 60 textarea{ 61 vertical-align: top; 62 height: 5em; 63 } 64 65 .error{ 66 display: none; 67 margin-left: 10px; 68 } 69 70 .error_show{ 71 color: red; 72 margin-left: 10px; 73 } 74 75 input.invalid, textarea.invalid{ 76 border: 2px solid red; 77 } 78 79 input.valid, textarea.valid{ 80 border: 2px solid green; 81 } 82 input { 83 padding: 10px; 84 font: 20px Arial; 85 width: 70%; 86 } 87 </style> 88 <body onload="getMovement()"> 89 <center> 90 <div id="map"></div> 91 92
92<script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>
92 93
93<script> 94 // JSON data 95 const locations = { 96 "locations": [ 97 { 98 "id": "11896371", 99 "name": "Abelprisen", 100 "service": "Education", 101 "location": "https://www.abelprisen.no/", 102 "glat": "59.9154986", 103 "glon": "10.7304839" 104 } 105 ] 106 }; 107 108 // Initialize map 109 const map = L.map('map').setView([59.9130197, 10.7401006], 10); 110 111 // Add OpenStreetMap tiles 112 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 113 attribution: '© OpenStreetMap contributors' 114 }).addTo(map); 115 116 // Add markers 117 locations.locations.forEach(loc => { 118 const lat = parseFloat(loc.glat); 119 const lon = parseFloat(loc.glon); 120 const popupContent = `<strong>${loc.name}</strong><br><a href="${loc.location}" target="_blank">${loc.location}</a>`; 121 L.marker([lat, lon]).addTo(map).bindPopup(popupContent); 122 }); 123 </script>
123 124 <a href="https://www.piperpal.com/"><img src="/piperpal.png" alt="piperpal.com Logo" width="320" align="center/"></a> 125 <h4>Location-Based Search</h4> 126 <h3 style="color: orange"><a href="https://www.piperpal.com/education">ð§ www.piperpal.com/education</a></h3> 127 <form id="locationForm" action="https://api.piperpal.com/location/push.php" method="GET"> 128 <button type="button" onclick="getMovement();">Get Current Movement</button><br> 129 <input type="text" id="glat" name="glat" value="" placeholder="Latitude"><br> 130 <input type="text" id="glon" name="glon" value="" placeholder="Longitude"><br> 131 <input type="text" id="galt" name="galt" value="" placeholder="Altitude"><br> 132 <input type="text" id="name" name="name" value="" style="color: #ff0000" placeholder="Where do you study?"><br> 133 <input type="text" id="service" name="service" value="Education" style="color: #00ff00" placeholder="BigDipper"><br> 134 <input type="text" id="location" name="location" value="" style="color: #00ffff" placeholder="https://location.gl/"><br> 135 <input type="text" id="radius" name="radius" value="10000" style="color: #0000ff" placeholder="100000"> 136 <input type="hidden" id="paid" name="paid" value="1"> 137 <!-- Display geolocation data --> 138 <p id="locationInfo"></p> 139 <button type="submit">Search Location</button> 140 </form> 141 </center> 142
142<script> 143 function getMovement() { 144 if (navigator.geolocation) { 145 navigator.geolocation.getCurrentPosition(showPosition, showError); 146 } else { 147 alert("Geolocation is not supported by this browser."); 148 } 149 } 150 151 function showPosition(position) { 152 const locationInfo = document.getElementById("locationInfo"); 153 const glatInput = document.getElementById("glat"); 154 const glonInput = document.getElementById("glon"); 155 const galtInput = document.getElementById("galt"); 156 const nameInput = document.getElementById("name"); 157 locationInfo.innerHTML = `Current Movement: Latitude ${position.coords.latitude}, Longitude ${position.coords.longitude}, Altitude ${position.coords.altitude}`; 158 glatInput.value = position.coords.latitude; 159 glonInput.value = position.coords.longitude; 160 galtInput.value = position.coords.altitude; 161 nameInput.value = document.getElementById('name').value; 162 } 163 164 function showError(error) { 165 const locationInfo = document.getElementById("locationInfo"); 166 switch (error.code) { 167 case error.PERMISSION_DENIED: 168 locationInfo.innerHTML = "User denied the request for Geolocation."; 169 break; 170 case error.POSITION_UNAVAILABLE: 171 locationInfo.innerHTML = "Movement information is unavailable."; 172 break; 173 case error.TIMEOUT: 174 locationInfo.innerHTML = "The request to get user location timed out."; 175 break; 176 case error.UNKNOWN_ERROR: 177 locationInfo.innerHTML = "An unknown error occurred."; 178 break; 179 } 180 } 181 </script>
181 182 <div id="log">Location: </div> 183
183<script> 184 $(document).ready(function() { 185 setInterval(function() { 186 if (navigator.geolocation) { 187 navigator.geolocation.getCurrentPosition(ajaxCall); 188 } else { 189 $('#log').html("GPS is not available"); 190 } 191 192 function ajaxCall(position) { 193 var latitude = position.coords.latitude; 194 var longitude = position.coords.longitude; 195 var altitude = position.coords.altitude; 196 var radius = 10000; 197 var name = ""; 198 var service = "Search"; 199 $.ajax({ 200 url: "https://api.piperpal.com/location/json.php", 201 type: 'GET', 202 data: { 'name': name, 'glat': latitude, 'glon': longitude, 'radius': radius, 'service': service }, 203 success: function(response) { 204 var obj = response; 205 // jQuery.parseJSON(response); 206 $('#log').html(JSON.stringify(obj, null, 2)); 207 } 208 }); 209 } 210 },30000); 211 }); 212 </script>
212 213 <!-- 214 <!-- JavaScript Code --> 215
215<script> 216 var currencyInput = document.querySelector('input[type="currency"]') 217 var currency = 'USD' // https://www.currency-iso.org/dam/downloads/lists/list_one.xml 218 219 // format inital value 220 onBlur({target:currencyInput}) 221 222 // bind event listeners 223 currencyInput.addEventListener('focus', onFocus) 224 currencyInput.addEventListener('blur', onBlur) 225 226 227 function localStringToNumber( s ){ 228 return Number(String(s).replace(/[^0-9.-]+/g,"")) 229 } 230 231 function onFocus(e){ 232 var value = e.target.value; 233 e.target.value = value ? localStringToNumber(value) : '' 234 } 235 236 function onBlur(e){ 237 var value = e.target.value 238 239 var options = { 240 maximumFractionDigits : 2, 241 currency : currency, 242 style : "currency", 243 currencyDisplay : "symbol" 244 } 245 246 e.target.value = (value || value === 0) 247 ? localStringToNumber(value).toLocaleString(undefined, options) 248 : '' 249 } 250 251 $(document).ready(function() { 252 <!-- Real-time Validation --> 253 <!--Name can't be blank--> 254 $('#name').on('input', function() { 255 var input=$(this); 256 var is_name=input.val(); 257 if(is_name){input.removeClass("invalid").addClass("valid");} 258 else{input.removeClass("valid").addClass("invalid");} 259 }); 260 261 <!--Email must be an email --> 262 $('#email').on('input', function() { 263 var input=$(this); 264 var re = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/; 265 var is_email=re.test(input.val()); 266 if(is_email){input.removeClass("invalid").addClass("valid");} 267 else{input.removeClass("valid").addClass("invalid");} 268 }); 269 270 <!--Website must be a website --> 271 $('#location').on('input', function() { 272 var input=$(this); 273 if (input.val().substring(0,4)=='www.'){input.val('http://www.'+input.val().substring(4));} 274 var re = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/; 275 var is_url=re.test(input.val()); 276 if(is_url){input.removeClass("invalid").addClass("valid");} 277 else{input.removeClass("valid").addClass("invalid");} 278 }); 279 280 <!--Message can't be blank --> 281 $('#service').keyup(function(event) { 282 var input=$(this); 283 var message=$(this).val(); 284 console.log(message); 285 if(message){input.removeClass("invalid").addClass("valid");} 286 else{input.removeClass("valid").addClass("invalid");} 287 }); 288 289 <!-- After Form Submitted Validation--> 290 $("#submit button").click(function(event){ 291 var form_data=$("#name").serializeArray(); 292 var error_free=true; 293 for (var input in form_data){ 294 var element=$("#name_"+form_data[input]['name']);
295 var valid=element.hasClass("valid"); 296 var error_element=$("span", element.parent()); 297 if (!valid){error_element.removeClass("error").addClass("error_show"); error_free=false;} 298 else{error_element.removeClass("error_show").addClass("error");} 299 } 300 if (!error_free){ 301 event.preventDefault(); 302 } 303 else{ 304 alert('No errors: Form will be submitted'); 305 } 306 }); 307 }); 308 </script>
308 309 <style> 310 select:invalid { color: gray; } 311 </style> 312 <center> 313 <a href="https://www.piperpal.com/"><img src="/piperpal.png" alt="piperpal.com Logo" width="320" align="center/"></a> 314 <h4>Location-Based Ad</h4> 315 <h3><a href="https://www.piperpal.com/search">www.piperpal.com/search</a></h3> 316 <form id="form" method="GET" action="https://www.piperpal.com/cft/s/"> 317 <table> 318 <tr> 319 <td>Text: <input id="name" type="text" name="name" placeholder="Example: &HappyNewYear" size="24" /><span class="error">This field is required</span></td> 320 </tr> 321 <tr> 322 <td>Email: <input id="email" type="text" name="email" placeholder="[email protected]" /><span class="error">This field is required</span></td> 323 </tr> 324 <tr> 325 <td>Service: <select required id="service" name="service"><option value="Restaurant">Restaurant</option><option value="Bar">Bar</option><option value="Concert">Concert</option><option value="Film">Film</option><option value="Books">Books</option><option value="Health">Health</option><option value="Clothes">Clothes</option><option value="Food">Food</option><option value="Music">Music</option><option value="Electronics">Electronics</option><option value="Transport">Transport</option><option value="Rental">Rental</option><option value="Search" selected>Search</option><option value="Influencers">Influencers</option></select></td> 326 </tr> 327 <tr> 328 <td>Location: <input type="text" name="location" placeholder="https://location.gl/" /></td> 329 </tr> 330 <!-- 331 <tr> 332 <td>Latitude: <input type="text" name="glat" value="37.4375596"></td> 333 </tr> 334 <tr> 335 <td>Longitude: <input type="text" name="glon" value="-122.11922789999998"></td> </tr> 336 --> 337 <input type="hidden" name="paid" value="100" placeholder="Type a price"> 338 <tr> 339 <td width="100px"><input type="submit" name="Submit" value="Save Location-based Search Engine Advertisement" style="width: 500px" /></td> 340 </tr> 341 </table> 342 </form> 343
343<script type="text/javascript" src="https://api.piperpal.com/location/?service=Search"> 344 </script>
344 345
345<script 346 src="https://code.jquery.com/jquery-3.3.1.js" 347 integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" 348 crossorigin="anonymous"> 349 var newLink = "https://api.piperpal.com/location/?service=Search"; 350 $('script').each(function() { 351 var link = $(this).attr('src'); 352 }) 353 </script>
353 354
354<script language="JavaScript"> 355 var obj = JSON.parse(locations); 356 for (i=0; i < obj.locations.length; i++) { 357 document.write("<p><h2><a href='https://piperpal.com/" + obj.locations[i].name + "'>" + obj.locations[i].name + "</a></h2><p>" + obj.locations[i].distance + " km away</p><p><b><a href='" + obj.locations[i].location + "'>" + obj.locations[i].location + "</a></b></p><p><i>" + obj.locations[i].service + " " + "</i></p>\n"); 358 } 359 </script>
359 360 </td> 361 </tr> 362 </table> 363 <p>Copyright © 2026 <a href="https://www.aamotinnovation.com/">Aamot Research & Development</a></p> 364 </center> 365 </body> 366</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.