var map = null;
var large = null;
var small = null;
var marker = null;

function GetStoreNames(state) {
    GoBack();
    $("#map_" + window.Kmart.Country).attr("src", "/portals/0/images/stores/" + window.Kmart.Country + "_" + state + ".jpg");

    var data = "State=" + state;
    var Result = SendReceiveXMLHttp("/DesktopModules/Stores/GetHours.asmx/GetStores", data);
    var jData = eval('(' + Result + ')');

    var div = document.createElement("div");
    div.id = "StoresList";
    div.style.width = "100%";
    div.style.height = "240px";
    if (!document.getElementById("StoresList")) {
        $("#StoreNames").append(div);
    }
    else {
        $("#StoresList").replaceWith(div);
    }

    var iCount = 1;
    var iSize = parseInt((jData.length / 3));
    if (parseInt((jData.length / 3)) != parseFloat((jData.length / 3))) {
        iSize += 1;
    }
    var iCol = 1;

    for (i = 0; i < jData.length; i++) {
        if (iCount == 1) {
            $("#StoresList").append("<div id='StoresListColumn" + iCol + "' style='float: left; width: 32%;'>");
        }
        var sn = jData[i].StoreName;
        var ns = jData[i].StoreNo;
        $("#StoresListColumn" + iCol).append("<a title='Click here to view store info for " + sn + "' onclick='javascript:GetStore(" + ns + "); return false;' style=' cursor: pointer;'><b>" + sn + ((jData[i].AllDay == true) ? " (24hr)" : "") + "</b></a><br />");

        if (iCount == iSize) {
            iCol += 1;
            iCount = 1; }
       else {
            iCount += 1;
        }
    }

    $("#StateLongName").html(SendReceiveXMLHttp("/DesktopModules/Stores/GetHours.asmx/GetStateName", data));
}

function GoBack() {
    $("#storesContainer").css("display", "block");
    $("#StoreProfile").css("display", "none");
    $("#otherStores").css("display", "none");
}

function SearchStore() {
    var data = "Town=" + $("#txtTown").val() + "&State=" + $("#ddlState").val() + "&Postcode=" + $("#txtPostcode").val();

    var Result = SendReceiveXMLHttp("/DesktopModules/Stores/GetHours.asmx/SearchStore", data);
    if (Result == "" && $("#txtTown").val() != "") {
        ShowMessage(1, "Town/State error", "We cannot locate '" + $("#txtTown").val() + ", " + $("#ddlState").val() + "' in our database. Please check your entry and try again.");
        return false;
    }

    if (Result == "" && $("#txtPostcode").val() != "") {
        ShowMessage(1, "Postcode error", "We cannot locate postcode '" + $("#txtPostcode").val() + "' in our database. Please check your entry and try again.");
        return false;
    }

    var jData = eval('(' + Result + ')');

    data = "StoreNo=" + jData[0].StoreNo;
    var StoreData = SendReceiveXMLHttp("/DesktopModules/Stores/GetHours.asmx/GetStore", data)
    if ($("#txtTown").val().length == 0) {
        StoreData = "<div style='margin-bottom: 6px; font-size: 17px; font-weight: bold; color: #0570A9; width: 100%;'>Nearest Store to Postcode " + jData[0].Postcode + " is " + StoreData.replace("<h3>", "").replace("</h3>", " &ndash; " + jData[0].Distance + "km</div>");
    }
    else {
        StoreData = "<div style='margin-bottom: 6px; font-size: 17px; font-weight: bold; color: #0570A9; width: 100%;'>Nearest Store to " + jData[0].Locality + " is " + StoreData.replace("<h3>", "").replace("</h3>", " &ndash; " + jData[0].Distance + "km</div>");
    }

    $("#StoreAddress").html(StoreData);
    $("#StoreHours").html(SendReceiveXMLHttp("/DesktopModules/Stores/GetHours.asmx/GetHours", data));

    GetStoreNames(jData[0].State);

    $("#storesContainer").css("display", "none");
    $("#StoreProfile").css("display", "block");

    buildMap(parseFloat(jData[0].PostLat), parseFloat(jData[0].PostLon), 10);

    if ($("#txtTown").val() != "") {
        CreateYouAreHere("Locality: " + jData[0].Locality + " Postcode: " + jData[0].Postcode, jData[0].PostLat, jData[0].PostLon);
    }
    else {
        CreateYouAreHere("Postcode: " + jData[0].Postcode + " Locality: " + jData[0].Locality, jData[0].PostLat, jData[0].PostLon);
    }

    $("#otherStores").css("display", "block").html("<h2 style='font-size: 12px; font-weight: bold;'>Other stores nearby...</h2>");

    for (var i = 0; i < jData.length; i++) {
        ShowStoreOnMap(jData[i].StoreNo, jData[i].StoreName, jData[i].StoreLat, jData[i].StoreLon, jData[i].Distance);
        $("#otherStores").append("<div style='float: left; width: 10%; padding-left: 20px;'>" + jData[i].StoreNo + "</div>");
        $("#otherStores").append("<div style='float: left; width: 45%;'><a title='Click here to view store info for " + jData[i].StoreName + "' onclick='javascript:GetStore(" + jData[i].StoreNo + ");' href='#StoreNames'><b>" + jData[i].StoreName + "</b></a></div>");
        $("#otherStores").append("<div style='float: left; width: 30%; text-align: right; padding-right: 10px;'>" + jData[i].Distance + "kM</div>");
    }

    CheckMyLocalStore(jData[0].StoreNo);
}

function GetStore(StoreNo) {
    var data = "StoreNo=" + StoreNo;

    document.getElementById("storesContainer").style.display = "none";
    document.getElementById("StoreProfile").style.display = "block";

    var StoreAddress = document.getElementById("StoreAddress");
    StoreAddress.innerHTML = SendReceiveXMLHttp("/DesktopModules/Stores/GetHours.asmx/GetStore", data);

    var StoreHours = document.getElementById("StoreHours");
    StoreHours.innerHTML = SendReceiveXMLHttp("/DesktopModules/Stores/GetHours.asmx/GetHours", data);

    var Result = SendReceiveXMLHttp("/DesktopModules/Stores/GetHours.asmx/GetLatLong", data);
    var jData = eval('(' + Result + ')');

    buildMap(jData.Latitude, jData.Longitude, 14);
    ShowStoreOnMap(jData.StoreNo, jData.StoreName, jData.Latitude, jData.Longitude, null);

    CheckMyLocalStore(jData.StoreNo);
}

function CheckMyLocalStore(StoreNo) {
    var mylocalstore = readCookie("RememberMyStore");
    if (mylocalstore != null) {
        var MyStore = mylocalstore.split("|");
        document.getElementById("mylocalstore").checked = (MyStore[1] == StoreNo)
    }
}

function buildMap(glat, glong, gzoom) {
    var mapDivID = "KmartMap_" + window.Kmart.ModuleId; ;
    var mapDiv = document.getElementById(mapDivID);
    if (!mapDiv)
        return;

    mapDiv.style.display = "block";
    var latlng = new google.maps.LatLng(glat, glong);
    var myOptions = {
        zoom: gzoom,
        center: latlng,
        mapTypeControl: true,
        mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU },
        navigationControl: true,
        navigationControlOptions: { style: google.maps.NavigationControlStyle.SMALL },
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById(mapDivID), myOptions);
}

function ShowStoreOnMap(StoreNo, name, glat, glong, distance) {
    var Title = name + (distance != null ? " - " + distance + "km" : "");
    var image = new google.maps.MarkerImage('/DesktopModules/Stores/pushpin.aspx?id=' + StoreNo + '&LocationType=1',
      new google.maps.Size(44, 15),
      new google.maps.Point(0, 0),
      new google.maps.Point(0, 15));

    var shadow = new google.maps.MarkerImage('/DesktopModules/Stores/images/pin_shadow.png',
      new google.maps.Size(44, 15),
      new google.maps.Point(0, 0),
      new google.maps.Point(1, 16));

    var LatLng = new google.maps.LatLng(glat, glong);
    var marker = new google.maps.Marker({
        position: LatLng,
        map: map,
        shadow: shadow,
        icon: image,
        title: Title,
        zIndex: 1
    });
}

function CreateYouAreHere(Title, glat, glong) {
    var LatLng = new google.maps.LatLng(glat, glong);
    var image = new google.maps.MarkerImage('/DesktopModules/Stores/images/youarehere.png',
      new google.maps.Size(23, 26),
      new google.maps.Point(0, 0),
      new google.maps.Point(12, 26));

    var marker = new google.maps.Marker({
        position: LatLng,
        map: map,
        icon: image,
        title: Title,
        zIndex: 1
    });
}

var thePoint = null;

function getAddress(address) {

    var geocoder = new GClientGeocoder();
    geocoder.getLatLng(
    address,
    function(point) {
        if (!point) {
            alert(address + " not found");
        } else {
            thePoint = point;
        }
    }
  );
}


//Do a find when user clicks on the Find button
function DoFind(whereInput) {
    LocationZoom = map.getZoom();

    if (whereInput != "") {
        showAddress(whereInput);
    }
}

function RememberMyStore(checkbox, State, StoreNo) {
    if (checkbox.checked) {
        createCookie("RememberMyStore", State + '|' + StoreNo, 365);
    }
    else {
        eraseCookie("RememberMyStore");
    }
}


