jQuery.extend({
  getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('.pl') + 1).split('/');
    for(var i = 0; i < hashes.length; i++)
    {
      hash = hashes[i];
      vars[i] = hash.replace('%252C', ',');
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  }
});
function showPosition(position) 
{
    var lat = position.coords.latitude;
    var lng = position.coords.longitude;
    var gps = lat+ "," + lng;
    jQuery(".form-item-searchplace-places-location input").val(gps);
    jQuery(".ajax-progress").remove();
}

function getGeolocation()
{
    jQuery(".get-geo").after('<div class="ajax-progress ajax-progress-throbber" style="color: #000000;float: right;font-size: 12px;font-weight: normal;margin-right: 100px;margin-top: 21px;padding-top: 0;"><div class="throbber">&nbsp;</div><div class="message">Proszę czekać...</div></div>');
    if (navigator.geolocation) 
    {
        navigator.geolocation.getCurrentPosition(showPosition);  
    }
}
(function ($) {
    $(document).ready(function() {
        $(".form-item-searchplace-places-location label").append('<a href="#" style="display: inline-block;font-weight: normal;margin-left: 90px;" onclick="getGeolocation();return false;" class="get-geo">pobierz lokalizację</a>');

        $(".alternate-geo").live('click', function(){
            $(".form-item-searchplace-places-location input").val(geoplugin_latitude() + ',' + geoplugin_longitude());
        })
        if ($("#map").length > 0)
        {
            var infowindow = new google.maps.InfoWindow();
            function markOutLocation(map, latlng) 
            {	
                var markerText = "<b>Jestes tutaj.</b>";
                var marker = new google.maps.Marker({
                    position: latlng, 
                    map: map, 
                    title: markerText,
                    icon: 'http://www.edenred.pl/sites/default/modules/searchplace/img/user.png'
                }); 
                map.setCenter(latlng, 15);
                google.maps.event.addListener(marker, 'click', function() {
                    infowindow.setContent(markerText);
                    infowindow.open(map,marker);
                });
            }

            function createMarker(map, point, name, address, code) 
            {
                var marker = new google.maps.Marker({
                    position: point, 
                    map: map, 
                    title: name,
                    icon: 'http://www.edenred.pl/sites/default/modules/searchplace/img/' + code + '.png'
                });
                google.maps.event.addListener(marker, 'click', function() {
                    infowindow.setContent("<b>" + name + "</b> <br/>" + address + " <br/>");
                    infowindow.open(map,marker);
                });
            }              
            function initialize() 
            {
                var urivars = $.getUrlVars();
                var myOptions = 
                {
                    zoom: 15,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                var map = new google.maps.Map(document.getElementById("map"), myOptions); 
                var city = false;
                if (urivars[4].indexOf(',') > 0)
                {
                    var urilatlng = urivars[4].split(',');
                    var latlng = new google.maps.LatLng(parseFloat(urilatlng[0]),parseFloat(urilatlng[1]));
                    markOutLocation(map, latlng);
                    map.setCenter(latlng);
                } else city=true;
                var url = "http://www.edenred.pl/punkty-akceptujace/punkty/" + urivars[4] + "/" + urivars[5] + "/" + urivars[6] + "/" + urivars[7] + "/" + urivars[8];
                if (urivars[9]) url = url + "/" + urivars[9];
                downloadUrl(url, function(data) 
                {
                    var markers = data.documentElement.getElementsByTagName("marker");
                    if (city) map.setCenter(new google.maps.LatLng(parseFloat(markers[0].getAttribute("lat")), parseFloat(markers[0].getAttribute("lng"))));
                    for (var i = 0; i < markers.length; i++) 
                    {
                        var name = markers[i].getAttribute("name");
                        var address = markers[i].getAttribute("address");
                        var code = markers[i].getAttribute("code");
                        var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
                        createMarker(map, point, name, address, code);
                    }
                });   
            }
            initialize(); 
        }
    })
})(jQuery);
;
/**
* Returns an XMLHttp instance to use for asynchronous
* downloading. This method will never throw an exception, but will
* return NULL if the browser does not support XmlHttp for any reason.
* @return {XMLHttpRequest|Null}
*/
function createXmlHttpRequest() {
 try {
   if (typeof ActiveXObject != 'undefined') {
     return new ActiveXObject('Microsoft.XMLHTTP');
   } else if (window["XMLHttpRequest"]) {
     return new XMLHttpRequest();
   }
 } catch (e) {
   changeStatus(e);
 }
 return null;
};

/**
* This functions wraps XMLHttpRequest open/send function.
* It lets you specify a URL and will call the callback if
* it gets a status code of 200.
* @param {String} url The URL to retrieve
* @param {Function} callback The function to call once retrieved.
*/
function downloadUrl(url, callback) {
 var status = -1;
 var request = createXmlHttpRequest();
 if (!request) {
   return false;
 }

 request.onreadystatechange = function() {
   if (request.readyState == 4) {
     try {
       status = request.status;
     } catch (e) {
       // Usually indicates request timed out in FF.
     }
     if (status == 200) {
       callback(request.responseXML, request.status);
       request.onreadystatechange = function() {};
     }
   }
 }
 request.open('GET', url, true);
 try {
   request.send(null);
 } catch (e) {
   changeStatus(e);
 }
};

/**
 * Parses the given XML string and returns the parsed document in a
 * DOM data structure. This function will return an empty DOM node if
 * XML parsing is not supported in this browser.
 * @param {string} str XML string.
 * @return {Element|Document} DOM.
 */
function xmlParse(str) {
  if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') {
    var doc = new ActiveXObject('Microsoft.XMLDOM');
    doc.loadXML(str);
    return doc;
  }

  if (typeof DOMParser != 'undefined') {
    return (new DOMParser()).parseFromString(str, 'text/xml');
  }

  return createElement('div', null);
}

/**
 * Appends a JavaScript file to the page.
 * @param {string} url
 */
function downloadScript(url) {
  var script = document.createElement('script');
  script.src = url;
  document.body.appendChild(script);
}
;

