///////////////////////////////////////////////////////////////////////////
///// lplinkify.js version 1.0 /////
///// function "LinkifyLocaPoint()" convert any LocaPoint in a page
///// into tag for Google Maps with correct location.
///// If LocaPoint is already in tag, it will NOT be converted.
/////
///// Copyright 2005-2006 Locazing Inc.
/////
///////////////////////////////////////////////////////////////////////////
//LinkifyLocaPoint
function LinkifyLocaPoint(){
var d = document;
var mapURL = "http://maps.google.com/?q=";
d.body.normalize();
F(d.body);
function F(n){
var u,A,M,R,c,x,location, replaceflag;
if(n.nodeType==3){
u=n.data.search(/([A-Z]{2}\d\.){3}[A-Z]{2}\d/);
if(u>=0) {
M=n.splitText(u);
location = Locapoint2LatLon(M.data);
if(M.data.length>15){ //append
replaceflag=false;
R=M.splitText(15);
}else{
replaceflag=true;
R = d.createElement("span");//dummy
M.parentNode.replaceChild(R, M);
}
A=d.createElement("A");
A.setAttribute("href", mapURL + location.latitude + "," + location.longitude + "(" + M.data + ")" );
A.setAttribute("title", "lat,lon= " + location.latitude + "," + location.longitude);
A.appendChild(M);
if(replaceflag==true){
R.parentNode.replaceChild(A,R)
}else{
R.parentNode.insertBefore(A,R);
}
}
}else if(n.tagName!="STYLE" && n.tagName!="SCRIPT" && n.tagName!="A"){
for(c=0;x=n.childNodes[c];++c){
F(x);
}
}
}
}
//common functions
//Locapoint2LatLon
function Locapoint2LatLon(locapoint){
var location = new Object();
location.latitude =(
((locapoint.charCodeAt(0)-65)*1757600
+(locapoint.charCodeAt(1)-65)*67600
+(locapoint.charCodeAt(2)-48)*6760
+(locapoint.charCodeAt(8)-65)*260
+(locapoint.charCodeAt(9)-65)*10
+(locapoint.charCodeAt(10)-48))
*180/45697600-90).toFixed(6);
location.longitude = (
((locapoint.charCodeAt(4)-65)*1757600
+(locapoint.charCodeAt(5)-65)*67600
+(locapoint.charCodeAt(6)-48)*6760
+(locapoint.charCodeAt(12)-65)*260
+(locapoint.charCodeAt(13)-65)*10
+(locapoint.charCodeAt(14)-48) )
*360/45697600-180).toFixed(6);
return(location);
}
//LatLon2Locapoint
function LatLon2Locapoint(lat, lon){
var latstep=Math.floor(((lat-(-90))*45697600/180));
var lngstep=Math.floor(((lon-(-180))*45697600/360));
var locapoint=String.fromCharCode(
Math.floor(latstep/1757600%26)+65,
Math.floor(latstep/67600%26)+65,
Math.floor(latstep/6760%10)+48,
46,
Math.floor(lngstep/1757600%26)+65,
Math.floor(lngstep/67600%26)+65,
Math.floor(lngstep/6760%10)+48,
46,
Math.floor(latstep/260%26)+65,
Math.floor(latstep/10%26)+65,
Math.floor(latstep%10)+48,
46,
Math.floor(lngstep/260%26)+65,
Math.floor(lngstep/10%26)+65,
Math.floor(lngstep%10)+48
);
return(locapoint);
}