// Travel Map variables and functions var txtFrom; var txtTo; var TMvendorsFound = new Object; var TMvendorsFilter = new Object; var TMvendorDetails; var TMcoords; var TM_MAP_WIDTH = 500; var TM_MAP_HEIGHT = 611; var TMaddressesValidated = false; var TMaddressesFound; var TMaddressFrom = ''; var TMaddressTo = ''; var TMmarkers = [{'length': 0}]; var TMselectedCategories = new Object; var TMlockMainCount = false; var map2; var map_canvas2; var loadedonmap = "no"; var geocoder; var addrPoints = new Object; var gdir; var frm_distanceUnit; var frm_distance; var polyline; var bounds; var infoWindows; function recargame() { reloadMe('travel_map'); // <- no remover reloadMe('notebook'); } // Legacy section, compatibility with previous variables and functions // Notebook function nbkLogin(){ var $trigger = function() { if(nbkAction == 'savevendor') { nbkSaveVendor(nbkVendor); } else if(nbkAction == 'saveselected') { nbkSaveSelected(); closeLogin(); fireLogin(); } }; Login($trigger); } // Printable Guide function pgLogin(){ $trigger = function(){ closeLogin(); fireLogin(); pgLogged = 1; pgTrigger = function(){ TMpopupMapa(); } TMpopupMapa(); }; Login($trigger); } function fireLogin() { jQuery('#btnSaveSelected').get(0).onclick = function(){ TMnbkSaveSelected(); }; jQuery('#btnPopupMapa').get(0).onclick = function(){ TMpopupMapa(); }; showVendorListings(TMvendorsFilter); changeText(); } var LNbaseURI = 'http://'+window.location.toString().split('/')[2]; var LNvendorsFound; function loadingLN() { } function mapNbkError(action,vendor){ nbkAction = action; nbkVendor = vendor; popupNbk(document.getElementById('mapMsgNoLogin').innerHTML); } function mapLogin(){ document.forms['login'].elements[2].disabled=false; pressed = false; document.forms['login'].submit = function(){ mapAjaxLogin(); return false; }; Login(function(){}); } // Loging through out the whole site function mapLogin2(){ document.forms['login'].elements[2].disabled=false; pressed = false; document.forms['login'].submit = function(){ mapAjaxLogin2(); return false; }; Login2(function(){}); } function Login2($trigger){ Trigger = $trigger; try{closeNbk()}catch(e1){}; try{closePG()}catch(e2){}; popupLogin2(); } function popupLogin2(){ document.getElementById('divLoginMessage').innerHTML = ''; displayPopup2('divLogin'); document.forms['login'].reset(); document.forms['login']['data[Login][email]'].focus(); } function displayPopup2(objID){ var target = document.getElementById(objID); $_top = document.body.scrollTop + (document.body.clientHeight - target.offsetHeight)/2; if($_top < 0) $_top = 0; target.style.top = $_top; target.style.left = (document.body.clientWidth - target.offsetWidth)/2; target.style.visibility = 'visible'; } function mapAjaxLogin2(){ var $_pars = new Array(); var $_form = document.forms['login']; $_pars['data[Login][email]'] = ''; $_pars['data[Login][password]'] = ''; for(v=0;v<$_form.elements.length;v++){ try{ $_pars[$_form.elements[v].name] = $_form.elements[v].value; }catch(err){}; } var myAjax = new Ajax.Request( LNbaseURI+'/notebook/ajaxlogin', {method:'post',parameters: $_pars, onLoading: loadingLN, onComplete: _mapLogin2} ); } function _mapLogin2($rs){ if($rs.responseText==1){ closeLogin(); changeText(); var txtFrom1 = trim(jQuery(txtFrom).val()+''); var txtTo1 = trim(jQuery(txtTo).val()+''); if(txtFrom1){SetCookie('txtFrom1', '' + txtFrom1 + '','');} if(txtTo1){SetCookie('txtTo1', '' + txtTo1 + '','');} window.location.reload(); } else{ loginError();} } var today = new Date(); var expiry = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000); function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) { endstr = document.cookie.length; } return unescape(document.cookie.substring(offset, endstr)); } function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) { return getCookieVal (j); } i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function DeleteCookie (name,path,domain) { if (GetCookie(name)) { document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT"; } } function SetCookie (name,value,expires,path,domain,secure) { document.cookie = name + "=" + escape (value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } function Get_Cookie( check_name ) { // first we'll split this cookie up into name/value pairs // note: document.cookie only returns name=value, not the other components var a_all_cookies = document.cookie.split( ';' ); var a_temp_cookie = ''; var cookie_name = ''; var cookie_value = ''; var b_cookie_found = false; // set boolean t/f default f for ( i = 0; i < a_all_cookies.length; i++ ) { // now we'll split apart each name=value pair a_temp_cookie = a_all_cookies[i].split( '=' ); // and trim left/right whitespace while we're at it cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, ''); // if the extracted name matches passed check_name if ( cookie_name == check_name ) { b_cookie_found = true; // we need to handle case where cookie has no value but exists (no = sign, that is): if ( a_temp_cookie.length > 1 ) { cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') ); } // note that in cases where cookie is initialized but no value, null is returned return cookie_value; break; } a_temp_cookie = null; cookie_name = ''; } if ( !b_cookie_found ) { return null; } } function Get_Cookie( name ) { var start = document.cookie.indexOf( name + "=" ); var len = start + name.length + 1; if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) { return null; } if ( start == -1 ) return null; var end = document.cookie.indexOf( ";", len ); if ( end == -1 ) end = document.cookie.length; return unescape( document.cookie.substring( len, end ) ); } function Delete_Cookie( name, path, domain ) { if ( Get_Cookie( name ) ) document.cookie = name + "=" + ( ( path ) ? ";path=" + path : "") + ( ( domain ) ? ";domain=" + domain : "" ) + ";expires=Thu, 01-Jan-1970 00:00:01 GMT"; } function mapAjaxLogin(){ var $_pars = new Array(); var $_form = document.forms['login']; $_pars['data[Login][email]'] = ''; $_pars['data[Login][password]'] = ''; for(v=0;v<$_form.elements.length;v++){ try{ $_pars[$_form.elements[v].name] = $_form.elements[v].value; }catch(err){}; } var myAjax = new Ajax.Request( LNbaseURI+'/notebook/ajaxlogin', {method:'post',parameters: $_pars, onLoading: loadingLN, onComplete: _mapLogin} ); } function _mapLogin($rs){ if($rs.responseText==1){ nbkSaveLNvendor(nbkVendor); closeLogin(); }else loginError(); } function displayLNvendorListings($vendorsFound, $action){ showVendorListings(TMvendorsFilter); } function print_r(theObj){ var out = ''; if(theObj.constructor == Array || theObj.constructor == Object){ out+="
";
}
function TMpgSelected(origin){
if(!pgCount)
return pgMsgError('no_selected_guide');
if(pgCount>1000)
return pgMsgError('selected_max_2');
document.getElementById('frmPf')['data[Print][type]'].value = 'selected';
$_vendors = pgGetSelected(pgParent); //el valor de pgParent: NotebookListings--> Notebook/Listings
document.getElementById('data[Result][vendedores]').value = $_vendors;
popupPG(document.getElementById('pgMsgChoice').innerHTML.replace('[count]', pgCount));
if(pgCount > 0){
document.getElementById('data[direcciones]').value = document.getElementById('direcciones').value;
document.getElementById('travelguide').action = '/travel_map/travelguidei';
document.getElementById('travelguide').submit();
setTimeout("closePG()", 1000);
}
else{
alert("You must select at least one item.");
closePG();
}
}
function TMpgSaveSelected(){
document.getElementById('frmPf')['data[Print][type]'].value = 'save';
document.getElementById('frmPf').target = '';
TMpgSubmit('pg');
}
function TMpgAlll(){
document.getElementById('travelguide')['data[Results][vendedores]'].value = jQuery('#TMvendorsID').val();
pgPopupMapa();
setTimeout("closePG()", 3000);
}
function TMpgSubmit(origin){
//submiteamos a listing/actions es en donde se imprime el pdf
document.getElementById('frmPf').action = '/travel_map/action';
document.getElementById('frmPf')['data[Print][origin]'].value = origin; // que vale : nbk
document.getElementById('frmPf')['data[Print][action]'].value = 'pg';
document.getElementById('frmPf').submit();
}
function TMpgClear(){
document.getElementById('frmPf')['data[Print][type]'].value = 'clear';
document.getElementById('frmPf').target = '';
TMpgSubmit('pg');
}
function TMpfPrintSelected() {
pfPrintSelected('SearchListings','pf');
}
function TMnbkSaveSelected(){
var $_vendors = '';
var $_titles = '';
var $_collection = document.getElementById('SearchListings').getElementsByTagName('input');
for($_i = 0; $_i < $_collection.length; $_i++){
if(
$_collection[$_i].name == 'data[Results][vendor_id][]' &&
$_collection[$_i].checked
){
$_vendors+=$_collection[$_i].value+'|';
$_titles+=vendorTitles[$_collection[$_i].value]+'|';
}
}
jQuery.post("/notebook/action", {
'data[Notebook][action]': 'save',
'data[Notebook][vendors]': $_vendors,
'data[Notebook][titles]': $_titles,
'data[Notebook][text]': '',
'data[Notebook][referer]': '',
'data[Notebook][type]': 'listings',
'data[Notebook][id]': ''
},
function (data, textStatus) {
if (textStatus == 'success') {
showVendorListings(TMvendorsFilter);
}
}
);
jQuery('#btnPopupMapa').get(0).onclick = function(){
TMpopupMapa();
};
showVendorListings(TMvendorsFilter);
if($_vendors){alert("Thank you! Your selected listings have been saved to your notebook.");}
}
function TMnbkSaveLNvendor(vendor){
jQuery.post("/notebook/action", {
'data[Notebook][action]': 'save',
'data[Notebook][vendors]': vendor,
'data[Notebook][titles]': vendorTitles[vendor],
'data[Notebook][text]': '',
'data[Notebook][referer]': '',
'data[Notebook][type]': 'listings',
'data[Notebook][id]': '',
'data[Notebook][answer]': 'json'
},
function (data, textStatus) {
if (textStatus == 'success') {
if(data == 1 || data == 2 || data == '') {
showVendorListings(TMvendorsFilter);
alert("Thank you! Your selected listings have been saved to your notebook.");
}
else if(data != 2)
alert('Error saving... Please try again later.');
}
}
);
}
function clearForm() {
jQuery('#txtFrom').val('');
jQuery('#txtTo').val('');
jQuery('#cmbDistance').val(5);
jQuery('#cmbDistanceUnit_km').get(0).checked = false;
jQuery('#cmbDistanceUnit_mi').get(0).checked = true;
uncheckCategories();
}
function uncheckCategories() {
jQuery('#TMcategories :checkbox').each(function() {
this.checked=false;
jQuery(this).parent().css({'background-color': 'transparent', 'border-style': 'none'});
jQuery('img', jQuery(this).parent().get(0)).show();
});
}
function initialize() {
// Internal Popup
jQuery('#iPopup').css({'z-index': 20, 'opacity': 0.9});
jQuery('#iPopup_close').click(function() {
iPopup_close();
jQuery("#iPopup_title").html("Notification");
return false;
});
// Fix nbkHiddenForm target
jQuery('#frmNbk').attr({'target': 'iPublic'});
// Fashion rules for categories
uncheckCategories();
jQuery('#TMcategories :checkbox').click(function() {
TMlockMainCount = true;
if(jQuery(this).attr('checked')) {
jQuery(this).parent().css({'background-color': '#F0F0F0', 'border': '1px solid #D0D0D0'});
// Switch On category globe
jQuery('img', jQuery(this).parent().get(0)).show();
}
else {
jQuery(this).parent().css({'background-color': 'transparent', 'border-style': 'none'});
jQuery('img', jQuery(this).parent().get(0)).show();
}
filterByCategories();
});
// Prepare GMap
if (window.GBrowserIsCompatible()) {
// Configure GMap
map2 = new window.google.maps.Map2(document.getElementById("map_canvas2"), {'GSize': {'width': 500, 'height': 410}});
geocoder = new window.GClientGeocoder();
gdir = new window.GDirections(map2, window.document.getElementById("map_directions"));
txtFrom = parent.document.getElementById('txtFrom');
txtTo = parent.document.getElementById('txtTo');
// Event listeners
window.GEvent.addListener(gdir, "load", onGDirectionsLoad);
window.GEvent.addListener(gdir, "error", handleErrors);
window.GEvent.addListener(map2, 'load', function(){
jQuery('#btnSubmit').attr('value','submit');
jQuery('#btnSubmit').removeAttr('disabled');
iPopup_close();
});
// Controls
map2.addControl(new window.GLargeMapControl());
map2.addControl(new window.GMapTypeControl());
map2.addControl(new window.GScaleControl());
// Initial position
map2.setCenter(new window.GLatLng(50, -110), 3);
}
return map2;
}
// Push selected categories into TMcoords for further dinamical filter
function filterByCategories() {
var counter = 0; var eraser = 0;
jQuery('#TMcategories :checkbox').each(function(c) {
delete TMcoords['data[Filter][vendor_category]['+ eraser +']'];
if (jQuery(this).attr('checked')) {
TMcoords['data[Filter][vendor_category]['+ counter +']'] = jQuery(this).val();
++counter;
}
++eraser;
});
lookNearBy(TMcoords);
}
function fireMap() {
jQuery('#btnSubmit').attr('disabled','disabled');
//jQuery('#txtFrom').val() = "10016";
switchMapHeader();
TMaddressesValidated = false;
TMaddressFrom = '';
TMaddressTo = '';
TMlockMainCount = false;
uncheckCategories();
fireMapEvents();
// Display Map Results
jQuery('#TMwrapper').css({'position':'absolute', 'visibility':'hidden'});
}
function switchMapHeader() {
jQuery('#map_initial_header').hide();
jQuery('#map_header').show();
jQuery('#map_totalCount').hide();
}
function fireMapEvents() {
// Address Validation
if (!TMaddressesValidated) {
validateAddresses();
return false;
}
// Clean Directions Tab
jQuery("#map_directions").html('');
// Retrieve parameters
frm_distanceUnit = getDistanceUnit().value;
frm_distance = getDistance(jQuery('#cmbDistance').val());
// Fire search
iPopup_show('', 'Loading directions...');
setDirections(TMaddressFrom, TMaddressTo);
}
function getDistance(distance) {
return distance * 1000 * frm_distanceUnit;
}
function getFilterDistance(distance) {
var d;
if (frm_distanceUnit == 1)
d = Math.round((distance / 1.6093439)*10000)/10000;
else
d = distance;
return d;
}
function getReverseDistance(meters) {
return Math.round((meters / 10) / frm_distanceUnit)/100;
}
// Guess addresses
function validateAddresses() {
var fromAddress = trim(jQuery(txtFrom).val()+'');
var toAddress = trim(jQuery(txtTo).val()+'');
if(fromAddress =="brooklyn,ny" || fromAddress =="Brooklyn, ny" || fromAddress =="Brooklyn, Ny" || fromAddress =="Brooklyn, NY" || fromAddress =="Brooklyn" || fromAddress =="Brooklyn,ny" || fromAddress =="Brooklyn,ny" || fromAddress =="Brooklyn,Ny" || fromAddress =="Brooklyn,NY" || fromAddress =="brooklyn"){jQuery('#txtFrom').val("Brooklyn, ny 11226");}
if(toAddress =="brooklyn,ny" || toAddress =="Brooklyn, ny" || toAddress =="Brooklyn, Ny" || toAddress =="Brooklyn, NY" || toAddress =="Brooklyn" || toAddress =="Brooklyn,ny" || toAddress =="Brooklyn,ny" || toAddress =="Brooklyn,Ny" || toAddress =="Brooklyn,NY" || toAddress =="brooklyn"){jQuery('#txtTo').val("Brooklyn, ny 11226");}
var fromAddress = trim(jQuery(txtFrom).val()+'');
var toAddress = trim(jQuery(txtTo).val()+'');
if(toAddress == ""){ jQuery('#txtTo').val(fromAddress);}
if (fromAddress != '')
geocoder.getLocations(fromAddress, handleFromLocation);
else
iPopup_show('Please provide at least a valid START address.', 'Error!');
}
function handleFromLocation(data) {
pm = handleLocations(data);
if (pm.Status == 100) {
TMaddressFrom = pm.address;
if (trim(jQuery(txtFrom).val()) != '') {
geocoder.getLocations(trim(jQuery(txtTo).val()), handleToLocation);
}
else {
TMaddressesValidated = true;
fireMapEvents();
}
}
else if (pm.Status == 200) {
pickAddress(pm.Placemark, '#txtFrom');
}
}
function handleToLocation(data) {
pm = handleLocations(data);
if (pm.Status == 100) {
TMaddressTo = pm.address;
TMaddressesValidated = true;
fireMapEvents();
}
else if (pm.Status == 200) {
pickAddress(pm.Placemark, '#txtTo');
}
}
function handleLocations(data) {
for(i in data.Placemark) {
var p = data.Placemark[i];
}
i = (i*1+1);
if (i == 0) {
parent.iPopup_show(errorString(404) + gdir.getStatus().code, IPOPUP_DEFAULT_TITLE);
p['Status'] = 0;
return p;
}
else if (i == 1) {
p['Status'] = 100;
return p;
}
else if (i > 1) {
data['Status'] = 200;
return data;
}
}
function pickAddress(Placemark, selector) {
var out = '';
TMaddressesFound = Placemark;
var count = 0;
for (i in Placemark) {
out = 'Your address returned more than one match, please pick one of the alternatives below and try again: