
function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function refreshPage(){
	var href = location.href;
	var parts = href.split('?');
	//we don't use parameters.  If there are any, it's our random number
	window.location.href = parts[0] + '?' + Math.floor(Math.random()*1001);
}

function changeLocation(e) {
	var apiKey = 'ABQIAAAANqfNc39wplA0zDgVapg8bhQTXWHZCmblW7VXYET40prl3DBAUhSJXg_5ojm7_Bgxu0pbSiFEv1UNgQ';
	
    $.getJSON("http://maps.google.com/maps/geo?q=" + $('#location').val() + "&key=" + apiKey + "&sensor=false&output=json&callback=?",
    function(data, textStatus) {
		//alert("http://maps.google.com/maps/geo?q=" + $('#location').val() + "&key=" + apiKey + "&sensor=false&output=json");
		var city = '';
		var administrative_area = '';
		
        if (data.Status.code == 200) {
            var lng = data.Placemark[0].Point.coordinates[0];
            var lat = data.Placemark[0].Point.coordinates[1];

            if (typeof(data.Placemark[0].AddressDetails.Country.AdministrativeArea) != 'undefined'){
				administrative_area = data.Placemark[0].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
				
				if (typeof(data.Placemark[0].AddressDetails.Country.AdministrativeArea.Locality) != 'undefined'){
					city = data.Placemark[0].AddressDetails.Country.AdministrativeArea.Locality.LocalityName;
				}
				else if (typeof(data.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea) != 'undefined'){
					 if (typeof(data.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality) != 'undefined'){
						
						city = data.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
					}
				}
				
			}	else if(typeof(data.Placemark[0].AddressDetails.Country.Locality) != 'undefined'){
					city = data.Placemark[0].AddressDetails.Country.Locality.LocalityName;
				}
			
			// if (typeof(data.Placemark[0].AddressDetails.Country.AdministrativeArea) != 'undefined' &&
			//  					typeof(data.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea) != 'undefined') {
			//                     city = data.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
			//                 } else {
			// 					
			//                     if (typeof(data.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea) != 'undefined' && 
			// 						data.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName) {
			//                         city = data.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
			//                     } else if (data.Placemark[0].AddressDetails.Country.Locality != 'undefined'){
			//                         city = data.Placemark[0].AddressDetails.Country.Locality.LocalityName;
			//                     }
			//                 }
			
            //$('#location').val(data.Placemark[0].address);
            createCookie('view_latitude', lat, 0);
            createCookie('view_longitude', lng, 0);
  			createCookie('view_country', data.Placemark[0].AddressDetails.Country.CountryName, 0);
			createCookie('view_region', administrative_area,0);
  			createCookie('view_city', city, 0);
  			createCookie('view_country_code', data.Placemark[0].AddressDetails.Country.CountryNameCode, 0);
			createCookie('view_address', data.Placemark[0].address, 0);
        } else {
			//send them to Philadelphia
			city = 'Philadelphia';
			administrative_area = 'PA';
			createCookie('view_latitude', 40.0890568, 0);
            createCookie('view_longitude', -75.0435916, 0);
  			createCookie('view_country', 'USA', 0);
			createCookie('view_region', administrative_area, 0);
  			createCookie('view_city', 'Philadelphia', 0);
  			createCookie('view_country_code', 'US', 0);
			createCookie('view_address', 'Philadelphia, PA 19115, USA', 0);
        }

		// reset url 
		refreshPage();

    });
}

$(document).ready(function() {	
	var header_h2 = $('div#location_header h2');
	header_h2.append(" " + '<input type="text" id="location" /> <input type="button" id="loc_submit" value="Изменить" />');
	//header_h2.append(current_location);
	
	$('#location').val(readCookie('view_city'));
	
    
    $('#loc_submit').click(changeLocation);
	$("#location").keyup(function(e) { 
		if(e.keyCode == 13) { 
			$("#loc_submit").click(); //imitate click on the button
		} 
	});

});
