var a = new Array(455);
var l = new Array(455);
var m = new Array(455);
var x = new Array(203);
var ind = new Array(203);
var regind = new Array(8);


function loadArrays() {
var txt = "Birmingham|Mobile|Montgomery|Anchorage|Mesa|Phoenix|Tucson|Little Rock|Anaheim|Bakersfield|Fresno|Long Beach|Los Angeles|Oakland|Riverside|Sacramento|San Diego|San Francisco|San Jose|Colorado Springs|Denver|Hartford|Wilmington|Washington|Cape Coral|Jacksonville|Miami|Orlando|Tallahassee|Tampa|Atlanta|Augusta|Honolulu|Boise City|Chicago|Fort Wayne|Indianapolis|Des Moines|Kansas City|Wichita|Lexington|Louisville|Baton Rouge|New Orleans|Shreveport|Portland|Baltimore|Boston|Springfield|Detroit|Grand Rapids|Minneapolis|St. Paul|Jackson|Kansas City|St. Louis|Billings|Omaha|Las Vegas|Manchester|Newark|Albuquerque|Buffalo|New York|Rochester|Syracuse|Charlotte|Greensboro|Raleigh|Winston-Salem|Fargo|Cincinnati|Cleveland|Columbus|Dayton|Toledo|Oklahoma City|Tulsa|Portland|Philadelphia|Pittsburgh|Providence|Charleston|Columbia|Sioux Falls|Chattanooga|Knoxville|Memphis|Nashville|Austin|Corpus Christi|Dallas|El Paso|Fort Worth|Houston|San Antonio|Salt Lake City|Burlington|Norfolk|Richmond|Virginia Beach|Seattle|Spokane|Charleston|Madison|Milwaukee|Cheyenne|Calgary|Edmonton|Vancouver|Winnipeg|St John|St John's|Halifax|Hamilton|London|Ottawa|Toronto|Montreal|Quebec|Regina|Saskatoon|Tirana|Vienna (Wien)|Minsk|Antwerp|Brussels|Sarajevo|Sofia|Zagreb|Prague|Copenhagen|Tallinn|Helsinki|Lyon|Marseille|Nice|Paris|Toulouse|Tbilisi|Berlin|Dresden|Essen|Frankfurt|Hamburg|Hannover|Koln (Cologne)|Leipzig|Munchen (Munich)|Stuttgart|Athens|Budapest|Reykjavik|Dublin|Firenze (Florence)|Milano (Milan)|Napoli (Naples)|Palermo|Roma (Rome)|Torino (Turin)|Riga|Vilnius|Skopje|Chisinau|Amsterdam|Rotterdam|Oslo|Krakow|Lodz|Warszawa (Warsaw)|Lisbon [Lisboa]|Bucuresti|Moscow|Nizhniy Novgorod|Novosibirsk|Samara|Sankt Peterburg|Volgograd|Yekaterinburg|Belgrade|Bratislava|Ljubljana|Barcelona|Madrid|Malaga|Sevilla|Valencia|Goteborg|Stockholm|Zurich|Kharkiv|Kyyiv (Kiev)|Birmingham|Bristol|Edinburgh|Glasgow|Leeds|Liverpool|London|Manchester|Sheffield|Kabul|Yerevan|Baku|Chittagong|Dhaka|Phnom Penh|Beijing (Peking)|Changchun|Chengdu|Chongqing|Dalian|Guangzhou|Hangzhou|Harbin|Hong Kong|Jinan|Kowloon|Nanjing (Nanking)|Qingdao|Shanghai|Shenyang|Tianjin (Tientsin)|Wuhan|Xian|Zhengzhou|Ahmadabad|Bangalore|Calcutta (Kolkata)|Chennai (Madras)|Delhi|Hyderabad|Jaipur|Kanpur|Lucknow|Mumbai (Bombay)|Nagpur|Pune|Surat|Bandung|Jakarta|Medan|Surabaya|Esfahan|Mashhad|Tabriz|Tehran|Baghdad|Basrah|Jerusalem (ISR)|Tel Aviv-Yafo|Chiba|Fukuoka|Hiroshima|Kawasaki|Kitakyushu|Kobe|Kyoto|Nagoya|Osaka|Sakai|Sapporo|Sendai|Tokyo|Yokohama|Amman|Almaty|Kuwait City|Bishkek|Vientiane|Beirut|Kuala Lumpur|Ulaanbaatar|Mandalay|Yangon (Rangoon)|Kathmandu|Pyongyang|Masqat-Matrah|Faisalabad|Karachi|Lahore|Rawalpindi|Gaza|Manila|Jiddah|Mecca|Medinah|Riyadh|Singapore|Incheon|Pusan|Seoul|Taegu|Colombo|Aleppo (Halab)|Damascus|Kaohsiung|Taipei|Dushanbe|Bangkok|Ankara|Istanbul|Izmir|Ashqabat|Dubai|Tashkent|Hanoi|Ho Chi Minh-Saigon|Sana'a|Algiers|Luanda|Cotonou|Ouagadougou|Douala|Yaounde|Bangui|N'Djamena|Brazzaville|Kinshasa|Lubumbashi|Abidjan|Djibouti|Alexandria|Cairo|Giza|Asmara|Addis Ababa|Libreville|Accra|Conakry|Nairobi|Monrovia|Benghazi|Tripoli|Antananarivo|Lilongwe|Bamako|Nouakchott|Casablanca|Rabat|Maputo|Niamey|Benin|Ibadan|Kaduna|Kano|Lagos|Port Harcourt|Kigali|Dakar|Freetown|Mogadishu|Benoni|Bloemfontein|Cape Town|Durban|Johannesburg|Pietermaritzburg|Port Elizabeth|Pretoria|Soweto|Vereeniging|Khartoum|Omdurman|Dar es Salaam|Lome|Tunis|Kampala|Lusaka|Bulawayo|Harare|Buenos Aires|Cordoba|La Plata|Mar del Plata|Mendoza|Rosario|Tucuman|La Paz|Santa Cruz|Belem|Belo Horizonte|Brasilia|Campinas|Curitiba|Fortaleza|Goiania|Guarulhos|Manaus|Porto Alegre|Recife|Rio de Janeiro|Salvador|Sao Paulo|Santiago|Barranquilla|Bogota|Cali|Cartagena|Cucuta|Medellin|San Jose|Havana|Santiago de Cuba|Santo Domingo|Guayaquil|Quito|San Salvador|Guatemala|Port-au-Prince|Tegucigalpa|Kingston|Acapulco|Aguascalientes|Cancun|Chihuahua|Ciudad Juarez|Culiacan|Guadalajara|Guadalupe|Hermosillo|Leon|Merida|Mexicali|Mexico City|Monterrey|Morelia|Puebla|Queretaro|Saltillo|San Luis Potosi|Tijuana|Torreon|Zapopan|Managua|Panama City|Asuncion|Arequipa|Lima|Trujillo|San Juan|Montevideo|Barquisimeto|Caracas|Ciudad Guayana|Maracaibo|Valencia|Adelaide|Brisbane|Melbourne|Newcastle|Perth|Sydney|Auckland|End";
a = txt.split("|");

// latitude
txt = "33.524755|30.679523|32.361538|61.1919|33.411199|33.52837|32.214476|34.736009|33.836165|35.357276|36.781549|33.804133|34.086159|37.795227|33.948065|38.555605|32.779541|37.759881|37.304051|38.863443|39.726287|41.76255|39.748563|38.913611|26.6396|30.319406|25.787676|28.533513|30.4518|27.970898|33.759506|33.433271|21.30895|43.613739|41.840675|41.078348|39.790942|41.590939|39.10678|37.688848|38.029632|38.22887|30.45809|29.972754|32.468003|43.665116|39.307956|42.321597|42.112411|42.387137|42.960476|44.964465|44.954365|32.320445|39.076304|38.627718|45.786553|41.260482|36.194168|42.986284|40.735201|35.110703|42.904657|40.704234|43.165496|43.046899|35.207193|36.079868|35.818835|36.102764|46.871414|39.13616|41.482301|39.989783|39.762708|41.665682|35.482309|36.131294|45.52304|39.998012|40.441419|41.82355|32.789295|34.017105|43.536285|35.045473|35.972882|35.117365|36.154838|30.300474|27.742857|32.799528|31.790208|32.738881|29.762895|29.451532|40.7547|44.484748|36.885747|37.538346|36.834498|47.626353|47.673341|38.349497|43.074613|43.052162|41.145548|51.0833333|53.55|49.25|49.88|45.2666667|47.58|44.65|43.25|42.9833333|45.4166667|43.6666667|45.5|46.82|50.45|52.1333333|41.33|48.22|53.91|51.22|50.83|43.85|42.69|45.8|50.08|55.68|59.44|60.17|45.75|43.3|43.7|48.8666667|43.6|41.72|52.5166667|51.05|51.45|50.1166667|53.55|52.3666667|50.9333333|51.3|48.15|48.683|37.98|47.51|64.14|53.3330556|43.78|45.48|40.85|38.12|41.89|45.08|56.97|54.7|42|47.03|52.37|51.93|59.91|50.06|51.77|52.26|38.72|44.44|55.75|56.33|55.04|53.2|59.93|48.71|56.85|44.83|48.16|46.06|41.4|40.42|36.72|37.4|39.48|57.72|59.33|47.3667|49.98|50.43|52.4666667|51.45|55.95|55.8333333|53.8|53.4166667|51.5|53.5|53.3666667|34.53|40.17|40.39|22.33|23.7|11.57|39.93|43.87|30.67|29.57|38.92|23.12|30.25|45.75|22.28|36.67|22.33|32.05|36.07|31.23|41.8|39.13|30.58|34.27|34.75|23.03|12.97|22.57|13.09|28.67|17.4|26.92|26.47|26.85|18.96|21.16|18.53|21.2|-6.91|-6.18|3.59|-7.24|32.68|36.27|38.08|35.67|33.33|30.5|31.78|32.07|35.61|33.59|34.39|35.53|33.88|34.68|35.01|35.15|34.68|34.57|43.06|38.26|35.67|35.47|31.95|43.32|29.33|42.87|17.97|33.88|3.16|47.93|21.98|16.79|27.71|39.02|23.61|31.41|24.86|31.56|33.6|31.53|14.62|21.5|21.43|24.48|24.65|1.3|37.48|35.11|37.56|35.87|6.93|36.23|33.5|22.63|25.02|38.57|13.73|39.93|41.1|38.43|37.95|25.27|41.31|21.03|10.78|15.38|36.77|-8.82|6.36|12.37|4.06|3.87|4.36|12.11|-4.25|-4.31|-11.66|5.33|11.56|31.22|30.06|30.01|15.33|9.03|0.39|5.56|9.55|-1.29|6.31|32.12|32.87|-18.89|-13.97|12.65|18.09|33.6|34.02|-25.95|13.52|6.34|7.38|10.52|12|6.45|4.78|-1.94|14.72|8.49|2.05|-26.15|-29.15|-33.93|-29.87|-26.19|-29.61|-33.96|-25.73|-26.28|-26.65|15.58|15.65|-6.82|6.17|36.84|0.32|-15.42|-20.17|-17.82|-34.61|-31.4|-34.92|-38|-32.89|-32.94|-26.83|-16.5|-17.77|-1.44|-19.92|-15.78|-22.91|-25.42|-3.78|-16.72|-23.46|-3.12|-30.04|-8.08|-22.91|-12.97|-23.53|-33.46|10.96|4.63|3.44|10.4|7.88|6.29|9.93|23.13|20.01|18.48|-2.21|-0.19|13.69|14.63|18.54|14.09|17.99|16.85|21.88|21.17|28.63|31.63|24.8|20.67|25.68|29.07|21.12|20.97|32.65|19.43|25.67|19.72|19.05|20.59|25.42|22.16|32.53|25.55|20.72|12.15|8.97|-25.3|-16.39|-12.07|-8.11|18.44|-34.87|10.05|10.54|8.37|10.73|10.23|-34.9333333|-27.5|-37.8166667|-32.9166667|-31.9333333|-33.8833333|-36.8666667|0";
l = txt.split("|");

// longitude
txt = "-86.81274|-88.10328|-86.279118|-149.762097|-111.746438|-112.0763|-110.918192|-92.331122|-117.889769|-119.031661|-119.792113|-118.158028|-118.375984|-122.228111|-117.396127|-121.468926|-117.146344|-122.437392|-121.872734|-104.791914|-104.965486|-72.688587|-75.551581|-77.013222|-81.982471|-81.659999|-80.224145|-81.375789|-84.27277|-82.46464|-84.403176|-82.022048|-157.826182|-116.237651|-87.679365|-85.126546|-86.147685|-93.620866|-94.67647|-97.336226|-84.494642|-85.749534|-91.140229|-90.059011|-93.771115|-70.269086|-76.617016|-71.089115|-72.547455|-83.102641|-85.65828|-93.268198|-93.114115|-90.204415|-94.555406|-90.242806|-108.537139|-96.01299|-115.22206|-71.45156|-74.184938|-106.609991|-78.849405|-73.917927|-77.611504|-76.144423|-80.829224|-79.819416|-78.64459|-80.260491|-96.808658|-84.503088|-81.669718|-82.99146|-84.196665|-83.575337|-97.534994|-95.937332|-122.640155|-75.144793|-79.977292|-71.422132|-79.986255|-81.010759|-96.73178|-85.267255|-83.942161|-89.971068|-86.762141|-97.747247|-97.401927|-96.787166|-106.423242|-97.33379|-95.383173|-98.512682|-111.892622|-73.223157|-76.2599|-77.461507|-76.087179|-122.333144|-117.410271|-81.633294|-89.394757|-87.95591|-104.802042|-114.0833333|-113.5|-123.1333333|-97.17|-66.0666667|-52.69|-63.6|-79.8333333|-81.25|-75.7|-79.4166667|-73.5833333|-71.23|-104.6166667|-106.6666667|19.82|16.37|27.55|4.42|4.33|18.38|23.31|15.97|14.43|12.57|24.74|24.94|4.85|5.4|7.25|2.3333333|1.4333333|44.79|13.4|13.75|7.0166667|8.6833333|10|9.7166667|6.95|12.3333333|11.5833333|9.2|23.73|19.08|-21.92|-6.2488889|11.24|9.19|14.27|13.36|12.5|7.68|24.13|25.27|21.47|28.83|4.89|4.48|10.75|19.96|19.46|21.02|-9.14|26.1|37.62|44|82.93|50.15|30.32|44.48|60.6|20.5|17.13|14.51|2.17|-3.71|-4.42|-5.98|-0.39|12.01|18.07|8.55|36.22|30.52|-1.9166667|-2.5833333|-3.2|-4.25|-1.5833333|-3|-0.1166667|-2.2166667|-1.5|69.17|44.52|49.86|91.81|90.39|104.92|116.4|125.35|104.07|106.58|121.65|113.25|120.17|126.65|114.13|117|114.25|118.78|120.32|121.47|123.45|117.2|114.27|108.9|113.67|72.58|77.56|88.36|80.27|77.21|78.48|75.8|80.33|80.92|72.82|79.08|73.84|72.82|107.6|106.83|98.67|112.74|51.68|59.57|46.3|51.43|44.44|47.83|35.22|34.77|140.11|130.41|132.44|139.7|130.86|135.17|135.75|136.91|135.5|135.48|141.34|140.89|139.77|139.62|35.93|76.92|48|74.57|102.61|35.5|101.71|106.91|96.09|96.15|85.31|125.75|58.59|73.11|67.01|74.35|73.04|34.44|120.97|39.17|39.82|39.59|46.77|103.85|126.64|129.03|126.99|128.6|79.85|37.17|36.32|120.27|121.45|68.78|100.5|32.85|29|27.15|58.38|55.33|69.3|105.84|106.69|44.21|3.04|13.24|2.44|-1.53|9.71|11.52|18.56|15.05|15.26|15.32|27.48|-4.03|43.15|29.95|31.25|31.21|38.94|38.74|9.45|-0.2|-13.67|36.82|-10.8|20.07|13.18|47.51|33.8|-7.99|-15.98|-7.62|-6.84|32.57|2.12|5.62|3.93|7.44|8.52|3.47|7|30.06|-17.48|-13.24|45.33|28.33|26.23|18.46|30.99|28.04|30.39|25.59|28.22|27.84|27.96|32.52|32.48|39.28|1.35|10.22|32.58|28.29|28.58|31.05|-58.37|-64.19|-57.96|-57.58|-68.83|-60.67|-65.22|-68.15|-63.21|-48.5|-43.94|-47.91|-47.08|-49.29|-38.59|-49.26|-46.49|-60.02|-51.22|-34.92|-43.2|-38.5|-46.63|-70.64|-74.8|-74.09|-76.52|-75.5|-72.51|-75.54|-84.08|-82.39|-75.82|-69.91|-79.9|-78.5|-89.19|-90.55|-72.34|-87.22|-76.8|-99.92|-102.3|-86.83|-106.08|-106.43|-107.39|-103.35|-100.26|-110.97|-101.69|-89.62|-115.47|-99.14|-100.32|-101.18|-98.22|-100.4|-101|-100.98|-117.02|-103.43|-103.4|-86.27|-79.53|-57.63|-71.53|-77.05|-79.03|-66.13|-56.17|-69.3|-66.93|-62.62|-71.66|-67.98|138.6|153.0166667|144.9666667|151.75|115.8333333|151.2166667|174.7666667|0";
m = txt.split("|");

// state or country
txt = "Alabama|Alaska|Arizona|Arkansas|California|Colorado|Connecticut|Delaware|District of Columbia|Florida|Georgia|Hawaii|Idaho|Illinois|Indiana|Iowa|Kansas|Kentucky|Louisiana|Maine|Maryland|Massachusetts|Michigan|Minnesota|Mississippi|Missouri|Montana|Nebraska|Nevada|New Hampshire|New Jersey|New Mexico|New York|North Carolina|North Dakota|Ohio|Oklahoma|Oregon|Pennsylvania|Rhode Island|South Carolina|South Dakota|Tennessee|Texas|Utah|Vermont|Virginia|Washington|West Virginia|Wisconsin|Wyoming|Alberta|British Columbia|Manitoba|New Brunswick|Newfoundland & Labrador|Nova Scotia|Ontario|Quebec|Saskatchewan|Albania|Austria|Belarus|Belgium|Bosnia and Herzegovina|Bulgaria|Croatia|Czech Republic|Denmark|Estonia|Finland|France|Georgia|Germany|Greece|Hungary|Iceland|Ireland|Italy|Latvia|Lithuania|Macedonia|Moldova|Netherlands|Norway|Poland|Portugal|Romania|Russia|Serbia and Montenegro|Slovakia|Slovenia|Spain|Sweden|Switzerland|Ukraine|United Kingdom|Afghanistan|Armenia|Azerbaijan|Bangladesh|Cambodia|China|India|Indonesia|Iran|Iraq|Israel|Japan|Jordan|Kazakhstan|Kuwait|Kyrgyzstan|Laos|Lebanon|Malaysia|Mongolia|Myanmar|Nepal|North Korea|Oman|Pakistan|Palestine|Philippines|Saudi Arabia|Singapore|South Korea|Sri Lanka|Syria|Taiwan|Tajikistan|Thailand|Turkey|Turkmenistan|United Arab Emirates|Uzbekistan|Vietnam|Yemen|Algeria|Angola|Benin|Burkina Faso|Cameroon|Central African Republic|Chad|Congo|Congo Dem Republic|Cote d' Ivoire|Djibouti|Egypt|Eritrea|Ethiopia|Gabon|Ghana|Guinea|Kenya|Liberia|Libya|Madagascar|Malawi|Mali|Mauritania|Morocco|Mozambique|Niger|Nigeria|Rwanda|Senegal|Sierra Leone|Somalia|South Africa|Sudan|Tanzania|Togo|Tunisia|Uganda|Zambia|Zimbabwe|Argentina|Bolivia|Brazil|Chile|Colombia|Costa Rica|Cuba|Dominican Republic|Ecuador|El Salvador|Guatemala|Haiti|Honduras|Jamaica|Mexico|Nicaragua|Panama|Paraguay|Peru|Puerto Rico|Uruguay|Venezuela|Australia|New Zealand|End";
x = txt.split("|");

// city index for each state or country
txt ="0|3|4|7|8|19|21|22|23|24|30|32|33|34|35|37|38|40|42|45|46|47|49|51|53|54|56|57|58|59|60|61|62|66|70|71|76|78|79|81|82|84|85|89|96|97|98|101|103|104|106|107|109|110|111|112|113|114|118|120|122|123|124|125|127|128|129|130|131|132|133|134|139|140|150|151|152|153|154|160|161|162|163|164|166|167|170|171|172|179|180|181|182|187|189|190|192|201|202|203|204|206|207|226|239|243|247|249|251|265|266|267|268|269|270|271|272|273|275|276|277|278|282|283|284|288|289|293|294|296|298|299|300|303|304|305|306|308|309|310|311|312|313|315|316|317|318|320|321|322|325|326|327|328|329|330|331|332|334|335|336|337|338|340|341|342|348|349|350|351|352|362|364|365|366|367|368|369|371|378|380|394|395|401|402|404|405|407|408|409|410|411|412|434|435|436|437|440|441|442|447|453|454";
ind = txt.split("|");

// country or state index for each region
txt = "0|60|97|138|178|200|202";
regind = txt.split("|");
for (i=0; i<regind.length; i++) {
regind[i] *= 1;
}
}

	var key1= 'ABQIAAAA-SSwkDqbK8WrKVKPU7ObohRBfps-PCi3ETYFHtU7Yh69l75yMRST0RWE4r7lsAkfAgd1AmTU3QIO3g';
var guri= 'http://maps.google.com/maps/geo?output=json&callback=gCallback&key='+key1+'&q=';
var yuri= 'http://api.maps.yahoo.com/ajax/geocode?appid='+appid1+'&qt=3&qs=';
var quri='';
var query='';
var gFound = false;
var gCalled = false;
var yCalled = false;
var yFound=false;
var yText = '';
var yValue = '';
var timer=0;
var gScriptObj = null;
var yScriptObj = null;
var gTagOpen= false;
var yTagOpen=false;

function closeGoogleTag() {
if (gTagOpen) {
gTagOpen=false;
gScriptObj.removeScriptTag();
}
}

function closeYahooTag() {
if (yTagOpen) {
yTagOpen=false;
yScriptObj.removeScriptTag();
}
}

	function checkTimer() {
closeGoogleTag();
closeYahooTag();
if (!gCalled && !yCalled) {
alert('El servicio del geocoder no ha respondido. Aseg\u00FArese que est\u00E1 conectado al Internet, que escribi\u00F3 el nombre bien y intente de nuevo.');
return false;
}
if (yFound) {
displayYahooResults();
return false;
}
noResults();
}

function launchGeocode() {
initAdd();
query=trim(document.getElementById('search').value);
var l=query.length;
if (l==0) {
alert("Hay que escribir el nombre de una ciudad, pueblo u otro lugar para buscar");
f1.search.focus();
return false;
}
quri=guri+escape(query);
	gScriptObj = new JSONscriptRequest( quri);
	gScriptObj.buildScriptTag();
	gScriptObj.addScriptTag();
gTagOpen=true;
try {
YGeoCode.getPoint=function(d){ yCallback(d) };
}
catch (err) {
var err0 = 0;
}
quri=yuri+escape(query);
	yScriptObj = new JSONscriptRequest( quri);
	yScriptObj.buildScriptTag();
	yScriptObj.addScriptTag();
yTagOpen=true;
gCalled = false;
gFound = false;
yCalled=false;
yFound = false;
timer=window.setTimeout("checkTimer()", 2800);
}

function gCallback(jData) {
gCalled = true;
if (selectedRegion != 6 || !gTagOpen) {
return false;
}
var r=f1.results;
r.length=0;
if (jData.Status.code == 200) {
gFound = true;
clearTimeout(timer);
closeYahooTag();
var p=jData.Placemark;
var l=p.length;
for(i=0; i<l-1; i++) {
var match=0;
for(j=i+1;j<l; j++) {
if (p[j].address.indexOf('Lng') == -1 && p[i].address == p[j].address && (p[i].Point.coordinates[1]
!= p[j].Point.coordinates[1] || p[i].Point.coordinates[0] != p[j].Point.coordinates[0])) {
p[j].address = p[j].address + " " + (Math.round(p[j].Point.coordinates[1]*100)/100) + " " + (Math.round(p[j].Point.coordinates[0]*100)/100);
match = 1;
}
}
if (match) {
p[i].address = p[i].address + " " + (Math.round(p[i].Point.coordinates[1]*100)/100) + " " + (Math.round(p[i].Point.coordinates[0]*100)/100);
}
}
for (i=0; i<p.length; i++) {
appendOptionLast("results", p[i].address);
r[r.length-1].value=p[i].Point.coordinates[1] + "|" + p[i].Point.coordinates[0];
}
setSearchBox(r.length);
} else {
if (yCalled) {
if (yFound) {
displayYahooResults();
} else {
noResults();
}
}
}
closeGoogleTag();
}

function yCallback(jData) {
yCalled = true;
if (selectedRegion != 6 || gFound || !yTagOpen) {
return false;
}
if (jData.GeoPoint.Lat != "0" || jData.GeoPoint.Lon != "0") {
yFound = true;
yText = cnvrt2Upper(jData.GeoAddress);
yValue = jData.GeoPoint.Lat + "|" + jData.GeoPoint.Lon;
}
if (yFound) {
//if (gCalled) {
displayYahooResults();
//}
} else {
//if (gCalled) {
noResults();
//}
}
closeYahooTag();
}

function cnvrt2Upper(s) {
return s.toLowerCase().replace(/\b[a-z]/g, cnvrt);
function cnvrt() {
return arguments[0].toUpperCase();
}
}

function displayYahooResults() {
clearTimeout(timer);
var r=f1.results;
r.length=0;
setSearchBox(1)
appendOptionLast("results", yText);
r[r.length-1].value=yValue;
}

function noResults() {
clearTimeout(timer);
var r=f1.results;
r.length=0;
setSearchBox(0);
}

function setSearchBox(r) {
toggleSearchDivs("resultsdiv", "newsearchdiv", "searchdiv", "searchbuttondiv");
setResultsLabel(r);
}

// JSONscriptRequest -- a simple class for accessing Yahoo! Web Services
// using dynamically generated script tags and JSON
// Author: Jason Levitt
// Date: December 7th, 2005
function JSONscriptRequest(fullUrl) {
    this.fullUrl = fullUrl; 
    this.noCacheIE = '&noCacheIE=' + (new Date()).getTime();
    this.headLoc = document.getElementsByTagName("head").item(0);
    this.scriptId = 'YJscriptId' + JSONscriptRequest.scriptCounter++;
}
JSONscriptRequest.scriptCounter = 1;

JSONscriptRequest.prototype.buildScriptTag = function () {
    this.scriptObj = document.createElement("script");
    this.scriptObj.setAttribute("type", "text/javascript");
    this.scriptObj.setAttribute("src", this.fullUrl + this.noCacheIE);
    this.scriptObj.setAttribute("id", this.scriptId);
}
 
JSONscriptRequest.prototype.removeScriptTag = function () {
    this.headLoc.removeChild(this.scriptObj);  
}

JSONscriptRequest.prototype.addScriptTag = function () {
    this.headLoc.appendChild(this.scriptObj);
}


var f1;
var selectedRegion=6;
var selectedMethod=0;
var sigDigits;
var gLat = "";
var gLon= "";
var gWeight, gModFlag;
var mapwin = null;
var screen600=0;
var rad180=rad(180);
var rad90=rad(90)
var point = new Object();
point.lat = 0;
point.lon = 0;
var cookie = new Array(5);
var appid1 = '26WTvi3V34E2DgU20paS4sfmROlawrpYQ31JRFIbSaFUxiMAQlJjxFbjZYApxx5veR59'; var yuri0 = 'http://api.maps.yahoo.com/ajaxymap?appid=' + appid1;
document.write('<script type="text/javascript" src="'+yuri0+'"><\/'+'script>'+'\n');

var recipient="C" + "o" + "n" + "t" + "a" + "c" + "t" + "o";
var eml = "mailto:" + "&#100;&#101;" + "a" + "&#110;&#64;&#103;&#101;&#111;&#109;&#105;&#100;&#112;&#111;&#105;&#110;&#116;&#46;&#99;&#111;&#109;";

function e() {
document.write('<a href=' + eml + '>' + recipient + '</a>');
}

function readCookie(cookieName) {
 var theCookie=""+document.cookie;
 var ind=theCookie.indexOf(cookieName);
 if (ind==-1 || cookieName=="") return "";
 var ind1=theCookie.indexOf(';',ind);
 if (ind1==-1) ind1=theCookie.length; 
 var s= unescape(theCookie.substring(ind+cookieName.length+1,ind1));
cookie = s.split("|");
}

function setCookie(cookieName,visited,region,testValue, method, weight) {
var nDays = 2500;
 var today = new Date();
 var expire = new Date();
 expire.setTime(today.getTime() + 3600000*24*nDays);
var cookieValue = visited + "|" + region + "|" + testValue + "|" + method + "|" + weight;
 document.cookie = cookieName+"="+escape(cookieValue)
+ ";expires="+expire.toGMTString();
}

document.write('<form NAME="frm" id="frm" method="post" action="viewmap.php" style="width: 100%"><input type="hidden" name="data" id="data"><label Id="reglabel" for="us" accesskey="R">Regi\u00F3n:</label><br><table class="fix" style="background-color: #ADD8E6"><tr><td align="left" style="width: 32.5%"><input type="radio" name="region" Id="us" onClick="switchdiv()">EEUU y Canada<br><input type="radio" name="region" onClick="switchdiv()">Europa<br><input type="radio" name="region" onClick="switchdiv()">Asia<br><td align="left" style="width: 39%"><input type="radio" name="region" onClick="switchdiv()">Africa<br><input type="radio" name="region" onClick="switchdiv()">Am\u00E9rica latina y Caribe<br><input type="radio" name="region" onClick="switchdiv()">Australia y Nueva Zelandia<br><td align="left" style="width: 28.5%"><input type="radio" name="region" checked onClick="switchdiv()">B\u00FAsqueda de lugar<br><input type="radio" name="region" onClick="switchdiv()">Especificar latitud y longitud</tr></table><table class="fix"><tr><td align="left" valign="top"><div Id="statediv" style="display: none"><label Id="statelabel" for="state" accesskey="S">Estado o provincia:</label><br><SELECT name="state" Id="state" style="width: 13.7em" onChange="createCitiesList()"><option></option></SELECT></div><div id="countrydiv" style="display: none"><label for="country" accesskey="O">Pa\u00EDs:</label><br><SELECT name="country" Id="country" style="width: 13.7em" onChange="createCitiesList()"><option></option></SELECT></div><div id="searchdiv" style="width: 13.8em"><label for="search" accesskey="G">Ciudad o direcci\u00F3n:</label><br><input type="text" Id="search" value="" size="30" maxlength="52" onfocus="this.select()" onchange="initAdd()"></div><div Id="resultsdiv" style="display: none; width: 14.7em"><label id="resultslabel" for="results" accesskey="U" style="font-weight: bold; color: #8A2BE2">0 resultados:</label><br><div style="float: left; border: 2px #8A2BE2 solid"><select id="results" style="width: 16em" onChange="initAdd()"><option></option></select></div><br clear="all"></div><div id="latdiv" style="display: none; width: 12.5em"><label for="latitude" accesskey="L">Latitud:</label><br><textarea Id="latitude" value="" cols="17" rows="2" style="margin: 2px 0 2px 0" onFocus="this.select()" onchange="initAdd()"></textarea></div><td align="left" valign="top"><div Id="citydiv" style="display: none; margin: auto 1.4em"><label for="city" accesskey="C">Ciudad:</label><br><select id="city" style="width: 11em" onChange="initAdd()"><option></option></select></div><div id="searchbuttondiv" style="display: block; width: 11.2em"><input type="button" id="searchbutton" value="Buscar" class="btn" style="width: 7.9em; margin: 1em 0 0 0" onClick="launchGeocode()"></div><div id="newsearchdiv" style="display: none; width: 10.3em"><input type="button" id="newsearch" value="Nueva b\u00FAsqueda" class="btn" style="margin: 1.2em 0 0 0" onClick="clearGeocode(); f1.search.focus()"></div><div id="londiv" style="display: none; width: 12.5em"><label for="longitude">Longitud:</label><br><textarea Id="longitude" value="" cols="17" rows="2" style="margin: 2px 0 2px 0" onFocus="this.select()" onchange="initAdd()"></textarea></div><td rowspan="5" align="left"><div Id="yourplacesdiv">&nbsp;<label for="yourplaces" accesskey="P">Sus Lugares:</label ><br>&nbsp;<select name="yourplaces" Id="yourplaces" size="9" style="width: 21.5em" onChange="populateTimes()"><option>Add your cities and lat/lon locations here:</option></select></div></tr><tr><td colspan=2 align="left"><div align="center" style="width: 95%; background-color: #ADD8E6"><input type="radio" id="w0" name="radw" checked onclick="switchWeight()">Tiempo en ubicaci\u00F3n (opcional)&nbsp;&nbsp;<input type="radio" id="w1" name="radw" onclick="switchWeight()">Peso: (opcional)</div></tr><tr><td colspan=2 align="left"><div id="timediv" class="con"><label for="years" accesskey="Y">A\u00F1os:</label><input type="text" name="years" Id="years" value="" size="3" maxlength="3" onfocus="this.select()">&nbsp;&nbsp;<label for="months">Meses:</label><input type="text" name="months" Id="months" value="" size="3" maxlength="3" onfocus="this.select()">&nbsp;&nbsp;<label for="days">D\u00EDas:</label><input type="text" name="days" Id="days" value="" size="5" maxlength="5" onfocus="this.select()"></div><div id="weightdiv" class="con" style="display: none"><label for="weight" accesskey="W">Peso:</label><input type="text" id="weight" value="" size="12" maxlength="12" onfocus="this.select()"></div></tr><tr><td colspan=2 align="center"><div Id="divadd" style="display: block"><input type="button" class="btn" value="A\u00F1adir ubicaci\u00F3n a Sus Lugares" accesskey="I" onClick="appendToList()"></div><div Id="divmodify" style="display:none"><input type="button" class="btn" value="Modificar lugar" accesskey="I" onClick="modifyPlace()"></div></tr><tr><td colspan=2 align="center"><input type="button" class="btn" value="Remover lugar" accesskey="X" onclick="removeOptionSelected()"> &nbsp;<input type="button" class="btn" value="Borrar lista" accesskey="0" onClick="clearList()"></tr><tr><td colspan="2" align="left"><label for="midpoint" id="midpointlabel" accesskey="m">Punto central:</label><br><textarea class="results" id="midpoint" cols="52" rows="2" readonly=readonly onfocus="this.select()" onclick="this.select()"></textarea><td align="left"><input type="button" class="btn" value="Ver en mapa" Id="map" onClick="viewMap()"><br><i style="font-size:88%">por Google Maps</i></tr><tr><td colspan="3" style="background-color: #ADD8E6"><input type="radio" class="radio3" name="method" onClick="changeMethod()">Punto central<input type="radio" class="radio3" name="method" onClick="changeMethod()">Centro de distancia<input type="radio" class="radio3" name="method" onClick="changeMethod()">Promedio de latitud/longitud</tr></table></form>');

function rad(dg) {
	return (dg* Math.PI / 180);
}

function deg(rd) {
	return (rd* 180 / Math.PI);
}

function setResultsLabel(r) {
if (r != 1) {
document.getElementById("resultslabel").innerHTML = r + " resultados:";
} else {
document.getElementById("resultslabel").innerHTML = "1 resultado:";
}
}

function clearList() {
document.getElementById("midpointlabel").innerHTML = "Punto central:";
f1.midpoint.value = "";
	f1.yourplaces.length=0;
f1.latitude.value="";
f1.longitude.value="";
f1.search.value="";
clearBoth();
f1.w0.disabled=false;
f1.w1.disabled=false;
}

function removeOptionSelected() {
	var p = document.getElementById('yourplaces');
	for (i = p.length - 1; i>=0; i--) {
		if (p.options[i].selected) {
			p.remove(i);
		}
	}
if (p.length > 0) {
	clearBoth();
calculate();
} else {
clearList()
}
}

function appendOptionLast(combo, item) {
	var elOptNew = document.createElement('option');
	elOptNew.text = item;
	elOptNew.value = item;
	var elSel = document.getElementById(combo);
	try {
		elSel.add(elOptNew, null);
	}
	catch(ex) {
		elSel.add(elOptNew);
	}
}

function initAdd() {
document.getElementById("divadd").style.display = "block";
document.getElementById("divmodify").style.display = "none";
f1.yourplaces.selectedIndex = -1;
if (selectedRegion<6 && f1.city.selectedIndex == -1) {
f1.city.selectedIndex=0;
}
if (gModFlag) {
f1.years.value="";
f1.months.value="";
f1.days.value="";
f1.weight.value="";
}
gModFlag=false;
}

function clearBoth() {
gModFlag=true;
initAdd();
}

function populateTimes() {
	var p=f1.yourplaces;
	var txt = p[p.selectedIndex].value;
	var array = txt.split("|");
	f1.years.value=array[2];
	f1.months.value=array[3];
if (gWeight == "tiempo") {
	f1.days.value=array[4];
} else {
f1.weight.value=array[4];
}
	document.getElementById("divmodify").style.display = "block";
	document.getElementById("divadd").style.display = "none";
	f1.city.selectedIndex = -1;
gModFlag=true;
}

function modifyPlace() {
var p= f1.yourplaces;
var i= p.selectedIndex;
var yr=trim(f1.years.value);
var mo=trim(f1.months.value);
if (gWeight == "tiempo") {
var da=trim(f1.days.value);
} else {
var da=trim(f1.weight.value);
}
var array5= new Array(6);
if (i>-1) {
if (!validateTimeFields(p, yr, mo, da, 1)) {
return false;
}
var sValue=p[i].value;
array5 = sValue.split("|");
sValue= array5[0] + "|" + array5[1] + "|" + yr + "|" + mo + "|" + da;
p[i].value=sValue;
clearBoth();
}
calculate();
}

function clearGeocode() {
initAdd();
f1.search.value="";
f1.results.length=0;
setResultsLabel(0);
if (selectedRegion == 6) {
toggleSearchDivs("searchdiv", "searchbuttondiv", "resultsdiv", "newsearchdiv");
}
}

function toggleSearchDivs(div1, div2, div3, div4) {
document.getElementById(div1).style.display = "block";
document.getElementById(div2).style.display = "block";
document.getElementById(div3).style.display = "none";
document.getElementById(div4).style.display = "none";
}

function togglediv(div1, div2, div3, div4, div5, div6, div7, div8, div9) {
	document.getElementById(div1).style.display = "block";
	document.getElementById(div5).style.display = "none";
document.getElementById(div4).style.display = "none";
	document.getElementById(div3).style.display = "none";
	document.getElementById(div2).style.display = "none";
	document.getElementById(div6).style.display= "block";
document.getElementById(div9).style.display = "none";
	document.getElementById(div8).style.display= "none";
	document.getElementById(div7).style.display= "none";
}

function createStateCountryList() {
	if (selectedRegion==0) {
		var s=f1.state;
		var sname="state";
		} else if (selectedRegion>0 && selectedRegion<6) {
		var s=f1.country;
		var sname="country";
	}
	var c=f1.city;
	if (selectedRegion == 7) {
		f1.latitude.value="";
		f1.longitude.value="";
} else if (selectedRegion == 6) {
f1.search.value = "";
f1.results.length=0;
		} else {
		s.options.length=0;
		c.options.length=0;
	for (i=regind[selectedRegion]; i<regind[selectedRegion+1]; i++) {
			appendOptionLast(sname, x[i]);
		}
		s.selectedIndex=0;
		createCitiesList();
	}
}

function switchWeight() {
	if (f1.radw[0].checked) {
toggleSearchDivs("timediv", "timediv", "weightdiv", "weightdiv");
gWeight="tiempo";
} else {
toggleSearchDivs("weightdiv", "weightdiv", "timediv", "timediv");
gWeight="peso";
}
clearBoth();
}

function switchdiv() {
	if (f1.region[0].checked) {
		togglediv("statediv", "countrydiv", "latdiv", "searchdiv", "resultsdiv", "citydiv", "londiv", "searchbuttondiv", "newsearchdiv");
		selectedRegion=0;
	}
	for (i=1; i<6; i++) {
		if (f1.region[i].checked) {
togglediv("countrydiv", "statediv", "latdiv", "searchdiv", "resultsdiv", "citydiv", "londiv", "searchbuttondiv", "newsearchdiv");
			selectedRegion=i;
		}
	}
	if (f1.region[6].checked) {
 togglediv("searchdiv", "statediv", "countrydiv", "latdiv", "resultsdiv", "searchbuttondiv", "citydiv", "londiv", "newsearchdiv");
 selectedRegion=6;
f1.search.value="";
f1.results.length=0;
} else if (f1.region[7].checked) {
		togglediv("latdiv", "statediv", "countrydiv", "searchdiv", "resultsdiv", "londiv", "citydiv", "searchbuttondiv", "newsearchdiv");
		selectedRegion=7;
	}
	createStateCountryList();
}

function initializeLoad() {
	f1=document.frm;
	loadArrays();
readCookie("ckData");
if (cookie[1] == undefined || cookie[1]<0 || cookie[1]>7) {
f1.region[6].checked=true; 
} else {
//document.getElementById("plink").style.display = "none";
f1.region[cookie[1]].checked = true;
selectedRegion = cookie[1];
}
switchdiv();
if (cookie[3] == undefined || cookie[3]<0 || cookie[3]>2) {
f1.method[0].checked=true; 
} else {
f1.method[cookie[3]].checked = true;
selectedMethod = cookie[3];
}
if (cookie[4] != "peso" && cookie[4] != "weight") {
f1.radw[0].checked=true;
gWeight="tiempo";
} else {
f1.radw[1].checked=true;
gWeight=cookie[4];
}
switchWeight();
clearList();
}

function unload() {
setCookie('ckData', '1', selectedRegion, '', selectedMethod, gWeight);
closeGoogleTag();
closeYahooTag();
}

function createCitiesList() {
	if (selectedRegion < 6) {
		if (selectedRegion==0) {
			var s=f1.state;
			} else if (selectedRegion>0 && selectedRegion<6) {
			var s=f1.country;
		}
		var c=f1.city;
		var cname="city";
		var j=(regind[selectedRegion] + s.selectedIndex);
		c.options.length=0;
		for (i=ind[j]*1; i<ind[j+1]*1; i++) {
			appendOptionLast(cname, a[i]);
		}
	}
initAdd();
}

function trim(s) {
if (s.charCodeAt(0)>32 && s.charCodeAt(s.length-1)>32)
return s;
else
return s.replace(/^\s+|\s+$/g, '');
}

function isNumeric(s, mn, mx) {
	var result = true;
	if (s != '') {
		if ((parseFloat(s, 10) != s) || (s<mn) || (s>mx)) {
			return false;
		}
	}
	return result;
}

function validateTimeFields(p, yr, mo, da, mod) {
var array5= new Array();
if (gWeight == "peso") {
if (!isNumeric(da, 0, 999999999999)) {
alert("El peso no es v\u00FAlido");
		f1.weight.focus();
return false;
}
} else {
if (!isNumeric(yr,0,999)) {
alert("El a\u00F1o no es v\u00E1lido");
f1.years.focus();
return false;
	}
if (!isNumeric(mo,0	,999)) {
alert("El mes no es v\u00E1lido");
f1.months.focus();
return false;
	}
if (!isNumeric(da,0,99999)) {
alert("El d\u00EDa no es v\u00E1lido");
f1.days.focus();
return false;
	}
}
if (p.length>0 && (p.length>1 || mod==0)) {
var temp=p[0].value;
array5=temp.split("|");
var first=(array5[2]*1 + array5[3]*1 + array5[4]*1);
if ((yr*1 + mo*1 + da*1 == 0) != (first == 0)) {
alert("Hay que:\n1 Escribir un " + gWeight + " para todas las ubicaciones.\no\n2 Dejar el " + gWeight + " en blanco o cero para todas las ubicaciones.");
if (gWeight=="tiempo") {
f1.years.focus();
} else {
f1.weight.focus();
}
return false;
}
}
return true;
}

function latLonToDecimal(ll, mn, mx, f) {
var fail;
var msg= "inv\u00E1lida";
ll=trim(ll);
if (ll == "") {
msg= "requerida";
fail=true;
}
if (parseFloat(ll, 10) != ll) {
var ch=ll.substring(ll.length-1);
ch=ch.toLowerCase();
if (!/^\d{1,3}(\W{1,2}\d{1,2}){0,2}\W{0,2}(e|n|s|w)$/i.test(ll) || f=="latitud" && ch!="n"&&ch!="s" || f=="longitud"&&ch!="e"&&ch!="w") {
fail = true;
}
if (!fail) {
var dms = ll.split(/\D/gi);
ll = dms[0];
for (k=1; k<dms.length; k++) {
if (dms[k] > 59) {
fail = true;
}
ll=ll*1+dms[k]/Math.pow(60, k);
}
if (ch == "s" || ch == "w") {
ll=-ll;
}
}
}
if (!fail && (ll<mn || ll>mx)) {
msg="inv\u00E1lida. Tiene que ser un n\u00FAmero entre " + mn + " y " + mx + ".";
fail=true;
}
if (fail) {
alert ('La ' + f + ' es ' + msg);
return -999;
} else {
return ll*1;
}
}

function padWithZero(s) {
	if (s<10) {
		s= "0" + s;
	}
	return s;
}

function padZeroRight(s) {
if (sigDigits>8) {
sigDigits=8;
} else if (sigDigits < 5) {
sigDigits=5;
}
	s="" + Math.round(s*Math.pow(10, sigDigits))/Math.pow(10, sigDigits);
	var i = s.indexOf('.');
var d=(s.length-i-1);
	if (i == -1) {
		return (s + ".00");
		} else if (d == 1) {
		return (s + "0");
	} else {
return s;
}
}

function getSigDigits(s) {
var sig=0;
	var i = s.indexOf('.');
	if (i != -1) {
sig=s.length - i - 1;
}
if (sig >= sigDigits) {
if (sig > 8) {
sigDigits = 8;
} else {
sigDigits = sig+1;
}
}
}

function decimalToDMS(l, isLat) {
	var dir1="";
if (isLat==1) {
	if (l<0) {
		dir1= "S";
		} else {
		dir1 = "N";
	}
} else {
	if (l<0) {
		dir1= "W";
		} else {
		dir1= "E";
	}
}
	l=Math.abs(Math.round(l*3600)/3600);
	var deg1= Math.floor(l);
	var temp=(l-deg1)*60;
	var min1=padWithZero(Math.floor(temp));
	temp=(temp-min1);
	var sec1=padWithZero(Math.round(temp*60));
if (sec1 == 60) {
sec1 = 59;
}
return Math.abs(deg1) + '\u00B0' + min1 + '\u2032' + sec1 + '\u2033' + dir1;
}

function appendToList() {
var yr=trim(f1.years.value);
var mo=trim(f1.months.value);
if (gWeight=="tiempo") {
var da=trim(f1.days.value);
} else {
var da=trim(f1.weight.value);
}
var c=f1.city;
var p=f1.yourplaces;
var pLength0=p.length;
var sValue, sText, sLat, sLon;
if (selectedRegion==7) {
sText =trim(f1.latitude.value);
sText=sText.replace(/\r\n/g, '\n');
var lat=sText.split('\n');
sText =trim(f1.longitude.value);
sText=sText.replace(/\r\n/g, '\n');
var lon=sText.split('\n');
if (lat.length != lon.length) {
alert('El n\u00FAmero de latitudes no es igual que el n\u00FAmero de longitudes.');
return false;
}
for (i=0; i<Math.max(lat.length, lon.length); i++) {
sLat=latLonToDecimal(lat[i], -90, 90, "latitud");
if (sLat == -999) {
f1.latitude.focus();
return false;
}
sLon=latLonToDecimal(lon[i], -180, 180, "longitud");
if (sLon == -999) {
f1.longitude.focus();
return false;
}
sValue=sLat + "|" + sLon + "|" + yr + "|" + mo + "|" + da;
sText = "Lat " + lat[i] + " Long " + lon[i];
	appendOptionLast("yourplaces", sText);
p[p.length-1].value=sValue;
}
} else {
if (selectedRegion == 6) {
var r=f1.results;
if (r.length == 0) {
alert('No hay resultados de busqueda para a\u00F1adir a Sus Lugares.');
return false;
}
if (r.selectedIndex < 0) {
alert('Hay que seleccionar un resultado antes de continuar.');
return false;
}
sText= r.options[r.options.selectedIndex].text;
sValue= r[r.selectedIndex].value + "|" + yr + "|" + mo + "|" + da;
} else {
if (c.selectedIndex<0) {
alert("Hay que seleccionar una ciudad.");
c.focus();
return false;
}
sText=c[c.selectedIndex].value;
if (selectedRegion ==0) {
var s=f1.state;
if (s.selectedIndex<0) {
alert("Hay que seleccionar un estado.");
s.focus();
return false;
}
} else if (selectedRegion<6) {
var s=f1.country;
if (s.selectedIndex <0) {
alert("Hay que seleccionar un pa\u00EDs.");
s.focus();
return false;
}
}
sText=sText + ", " + s[s.selectedIndex].value;
sLat=l[1*ind[regind[selectedRegion] + s.selectedIndex]+c.selectedIndex];
sLon= m[1*ind[regind[selectedRegion] + s.selectedIndex]+c.selectedIndex];
sValue=sLat + "|" + sLon + "|" + yr + "|" + mo + "|" + da;
}
	appendOptionLast("yourplaces", sText);
	p[p.length-1].value=sValue;
}
if (!validateTimeFields(p, yr, mo, da, 0)) {
			p.length=pLength0;
return false;
	}
clearBoth();
clearGeocode();
f1.latitude.value="";
f1.longitude.value="";
calculate();
}

function changeMethod() {
for (i=0; i<3; i++) {
if (f1.method[i].checked == true) {
selectedMethod=i;
}
}
	var p=f1.yourplaces;
if (p.length == 0) {
return false;
}
calculate()
}

function normalizeLongitude(lon) {
var n=Math.PI;
if (lon > n) {
lon = lon - 2*n
} else if (lon < -n) {
lon = lon + 2*n
}
return lon;
}

function normalizeLatitude() {
if (Math.abs(point.lat)>rad90) {
point.lat=rad180-point.lat-2*rad180*(point.lat<-rad90);
point.lon=normalizeLongitude(point.lon-rad180);
}
}

function calculate() {
var x = 0;
var y = 0;
var z = 0;
var x1, y1, z1, txt;
var totdays=0;
var lats = new Array();
var lons = new Array();
var days1 = new Array();
var sinlats = new Array();
var coslats = new Array();
var array5= new Array(6);
var p=f1.yourplaces;
if  (p.length < 1) {
alert("No hay ciudades en la lista Sus Lugares.");
return false;
}
f1.w0.disabled=true;
f1.w1.disabled=true;
with (Math) {
sigDigits=0;
	for (i=0; i<p.length; i++) {
txt = p[i].value;
array5 = txt.split("|");
getSigDigits(array5[0]);
getSigDigits(array5[1]);
lats[i] =rad(array5[0]);
		lons[i]=rad(array5[1]);
sinlats[i]=sin(lats[i]);
coslats[i]=cos(lats[i]);
days1[i]= array5[2]*365.25 + array5[3]*30.4375 + array5[4]*1;
if (days1[i] == 0) {
days1[i] = 1;
}
totdays=totdays+days1[i];
x1=coslats[i]*cos(lons[i]);
y1=coslats[i]*sin(lons[i]);
z1=sinlats[i];
x=x + x1 * days1[i];
y = y + y1 * days1[i];
		z = z + z1 * days1[i];
}
x=x/totdays;
y=y/totdays;
z=z/totdays;
gLon=atan2(y, x);
hyp=sqrt(x*x + y*y);
gLat=atan2(z, hyp);
txt="Punto central";
if (!f1.method[2].checked && abs(x) < 1.0e-9 && abs(y) < 1.0e-9 && abs(z) < 1.0e-9) {
f1.midpoint.value = "El centro de la tierra";
gLat = -100;
} else {
if (f1.method[2].checked) {
y=0;
x=0;
for(i=0; i<lats.length; i++) {
y=y + lats[i] * days1[i];
x=x + normalizeLongitude(lons[i]-gLon) * days1[i];
}
gLat= y/totdays;
gLon= normalizeLongitude(x/totdays+gLon);
txt="Promedio de lat/long";

} else if (f1.method[1].checked) {
if (lats.length>2) {
var tries=0;
lats[lats.length]=gLat;
lons[lons.length]=gLon;
var distrad=rad90;
var mindist=1.0e07;
var sum, gMindist, lat2, slat, cdist, minlat, minlon;
var t= new Array(8, 6, 7, 2, 0, 1, 5, 3, 4);
var scale= new Array(0.7071, 0.7071, 1, 0.7071, 0.7071, 1, 1, 1, 1);
var testcenter=true;
i=lats.length+8;
while (distrad > 2.0e-08 && tries<5000) {
if (i<0) {
i=8;
}
while (i>=0) {
	if(i<9) {
y=floor(t[i]/3)-1;
x= t[i] % 3;
switch (x) {
case 1:
point.lon=gLon;
point.lat= gLat - y*distrad;
normalizeLatitude();
break
case 0:
point.lon=gLon;
point.lat= gLat - y*distrad*scale[i];
normalizeLatitude();
lat2=point.lat;
slat=sin(lat2);
cdist = cos(distrad*scale[i]);
point.lat = asin(slat*cdist);
point.lon=normalizeLongitude(point.lon+atan2(-sin(distrad*scale[i])*cos(lat2),cdist-slat* sin(point.lat))); 
break
case 2:
point.lon=normalizeLongitude(gLon+normalizeLongitude(gLon-point.lon));
}
} else {
point.lat=lats[i-9];
point.lon=lons[i-9];
}
if(point.lon != gLon || point.lat != gLat || testcenter) {
sum=0;
for(j=0; j<lats.length-1; j++) {
sum += acos(sinlats[j]*sin(point.lat) + coslats[j]*cos(point.lat) *cos(point.lon-lons[j]))*days1[j];
}
if (!testcenter) {
if (sum<mindist) {
mindist=sum;
minlat=point.lat;
minlon=point.lon;
}
} else {
gMindist=sum;
testcenter=false;
}
}
i--;
}
if (mindist-gMindist< -4.0e-14) {
gLat=minlat;
gLon=minlon;
gMindist=mindist;
} else {
distrad=distrad * 0.5;
}
tries++
}
}
txt="Centro de distancia";
}
gLat=deg(gLat);
gLon=deg(gLon);
f1.midpoint.value = "Latitud: " + decimalToDMS(gLat, 1) + "   "+padZeroRight(gLat) + "\n";
f1.midpoint.value += "Longitud: " + decimalToDMS(gLon, 0) + "   " + padZeroRight(gLon);
	}
if (p.length > 1) {
document.getElementById("midpointlabel").innerHTML = txt + " para " + p.length + " lugares:";
} else {
document.getElementById("midpointlabel").innerHTML = txt + " para 1 lugar:";
}
if (tries>=5000) {
alert('El centro de distancia para estos ' + p.length + ' lugares no se puede calcular precisament. Es probable que el centro de distancia calculado tiene una precisi\u00F1n de dos grados.');
}
}
}	

function viewMap() {
	if (f1.midpoint.value != "" && gLat != -100) {
var p=f1.yourplaces;
var array5 = new Array(6);
var lat1 = padZeroRight(gLat);
var lon1 = padZeroRight(gLon);
for(i=0; i<p.length; i++) {
var txt = p[i].value;
array5 = txt.split("|");
lat1=lat1 + "|" + array5[0];
lon1=lon1 + "|" + array5[1];
}
var screen600=0;
if (screen.height <= 600) {
screen600=1;
}
var newwin = 1;
if ((lat1.length + lon1.length) < 2050) {
var url = "viewmap.html?" + lat1 + "&" + lon1 + "&" + screen600 + "&" + newwin; 
} else {
var url = "viewmap.php";
}
f1.target = "mapwin";
if (screen600 == 1) {
mapwin=window.open(url,"mapwin","menubar=1,toolbar=0,directories=0,location=0,status=1,resizable=1,scrollbars=1");
} else {
mapwin=window.open(url,"mapwin","menubar=1,toolbar=1,directories=1,location=1,status=1,resizable=1,scrollbars=1");
}
if (url == "viewmap.php") {
f1.data.value = lat1 + "&" + lon1 + "&" + screen600 + "&" + newwin;
f1.submit();
}
		} else {
		alert ('Hay que a\u00F1adir ubicaciones a la lista Sus Lugares antes de ver un mapa.');
	}
}

function popMessage(msg) {
messagewin=window.open("message.php","messagewin","menubar=0,toolbar=0,directories=0,location=0,status=1,resizable=0,width=360,height=200,top=200,left=240");
document.frm2.target = "messagewin";
document.frm2.data2.value = msg;
document.frm2.submit();
	}
