﻿var searchboxActive = false;
var locationboxActive = false;
var CityId = 0;
var CityName = "";
var ProvinceId = 0;
var ProvinceName = "";
var CoorX = 0;
var CoorY = 0;

function homeSearch()
{
    var TXT_Keyword = document.getElementById("TXT_Keyword");
    var TXT_Location = document.getElementById("TXT_Location");
    var LBL_Keyword = document.getElementById("LBL_Keyword");
    var LBL_Location = document.getElementById("LBL_Location");

    if (trim(TXT_Keyword.value).length > 0 && searchboxActive) {
        LBL_Keyword.innerHTML = "Ne arıyorsunuz?";
        if (ProvinceId != 0 && trim(ProvinceName).length > 0) {
            window.location = "Navigator.aspx?keyword=" + escape(TXT_Keyword.value) + "&ProvinceId=" + ProvinceId + "&ProvinceName=" + escape(ProvinceName) + "&CoorX=" + CoorX + "&CoorY=" + CoorY + "&radius=5";
        }
        else if (CityId != 0 && trim(CityName).length > 0) {
            window.location = "Navigator.aspx?keyword=" + escape(TXT_Keyword.value) + "&CityId=" + CityId + "&CityName=" + escape(CityName) + "&CoorX=" + CoorX + "&CoorY=" + CoorY + "&radius=25";
        }
        else {
            window.location = "Navigator.aspx?keyword=" + escape(TXT_Keyword.value) + "&location=" + escape(TXT_Location.value);
        }
    }
    else 
    {
        LBL_Keyword.innerHTML = "Ne arıyorsunuz? <span style='color:red'>*</span>";
    }
    
}

function checkSearchText(event) {

    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;

    if (keyCode == 13) {
        homeSearch();
        return false;
    }
}

var _ActiveOption = 0;
var _OptionCount = 0;

function MoveUp() {
    DeselectAllOptions();
    decreaseActiveOption();
    SelectOption(_ActiveOption);
}

function MoveDown() {
    DeselectAllOptions();
    increaseActiveOption();
    SelectOption(_ActiveOption);
}

function decreaseActiveOption() {
    if (_ActiveOption > 0)
        _ActiveOption--;
    else
        _ActiveOption = _OptionCount - 1;
}

function increaseActiveOption() {
    if (_ActiveOption == _OptionCount - 1)
        _ActiveOption = 0;
    else
        _ActiveOption++;
}

function SelectOption(OptionIndex) {
    var curOption = document.getElementById("opt" + OptionIndex);
    if (curOption) {
        if (curOption.className == '') {
            curOption.className = 'act';
        }
        else if (curOption.className == 'pro') {
            curOption.className = 'proact';
        }
    }
}

function DeselectAllOptions() {
    for (var i = 0; i < _OptionCount; i++) {
        var curOption = document.getElementById("opt" + i);
        if (curOption.className == 'act')
            curOption.className = '';
        else if (curOption.className == 'proact') {
            curOption.className = 'pro';
        }
    }
}


var xmlHttpForLocation = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");
function locationBox_KeyUp(event) {
    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
    iKeyCode = event.keyCode;
    var TXT_Location = document.getElementById("TXT_Location");
    var query = trim(TXT_Location.value);

    if (keyCode == 38) {
        MoveUp();
        return true;
    }
    else if (keyCode == 40) {
        MoveDown();
        return true;
    }
    else if (keyCode == 13) {
    if (_OptionCount > 0)
        window.location = document.getElementById("opt" + _ActiveOption).attributes["href"].value;
    else
        homeSearch();
    
        return false;
    }

    if (query.length < 3) {
        document.getElementById("locationResults").style.display = 'none';
        document.getElementById("locationResults").innerHTML = "";
        return;
    }


    try {
        xmlHttpForLocation.abort();
        var URL = "NAVIGATOR_JSON_LocationQuery.aspx?Query=" + escape(query) + "&nocache=" + Date();
        xmlHttpForLocation.open("GET", URL, true);
        xmlHttpForLocation.onreadystatechange = function() {
            if (xmlHttpForLocation.readyState == 4 && xmlHttpForLocation.status == 200) {
                eval(xmlHttpForLocation.responseText);

                if (loc.length > 0) {
                    var sb = new StringBuilder();
                    _OptionCount = loc.length;
                    _ActiveOption = -1;
                    for (var i = 0; i < loc.length; i++) {
                        sb.append("<a id='opt" + i + "' ");
                        if (loc[i][0] == 0) // province
                        {
                            sb.append("href='javascript:clickProvince(" + loc[i][1] + ", \"" + loc[i][2] + "\", " + loc[i][3] + ", " + loc[i][4] + ")'");
                        }
                        else {
                            sb.append("href='javascript:clickCity(" + loc[i][1] + ", \"" + loc[i][2] + "\", " + loc[i][3] + ", " + loc[i][4] + ")'");
                        }

                        sb.append(">");
                        sb.append(loc[i][2]);
                        sb.append("</a>");
                    }

                    document.getElementById("locationResults").innerHTML = sb.toString();
                    document.getElementById("locationResults").style.display = 'block';
                }
                else {
                    document.getElementById("locationResults").style.display = 'none';
                }
            }
        };

        xmlHttpForLocation.send(null);
    }
    catch (e) {
        alert("Lütfen internet bağlantınızı kontrol ediniz: " + e);
        return;
    }

    return true;
}

function focus_keyword(o) {
    if (!searchboxActive) {
        hideExamples_Keyword();
        o.value = "";
    }
}

function blur_keyword(o) {
    if (trim(o.value).length == 0) {
        showExamples_Keyword();
    }
}

function showExamples_Keyword() {
    searchboxActive = false;
    document.getElementById("TXT_Keyword").style.color = "#888";
    document.getElementById("TXT_Keyword").value = "ör: Cafe";
}

function hideExamples_Keyword() {
    searchboxActive = true;
    document.getElementById("TXT_Keyword").style.color = "#333";
}

function focus_location(o) {
    if (!locationboxActive) {
        hideExamples_Location();
        o.value = "";
    }
}

function blur_location(o) {
    if (trim(o.value).length == 0) {
        showExamples_Location();
    }
}

function showExamples_Location() {
    locationboxActive = false;
    document.getElementById("TXT_Location").style.color = "#888";
    document.getElementById("TXT_Location").value = "ör: Taksim";
}

function hideExamples_Location() {
    locationboxActive = true;
    document.getElementById("TXT_Location").style.color = "#333";
}

function clickCity(_CityId, _CityName, _CoorX, _CoorY) {
    try {
        var TXT_Location = document.getElementById("TXT_Location");
        TXT_Location.value = _CityName;
        TXT_Location.select();
        document.getElementById("locationResults").style.display = 'none';
        document.getElementById("locationResults").innerHTML = "";
        _OptionCount = 0;
    }
    catch (e) {

    }

    document.getElementById("locationResults").style.display = 'none';

    CityId = _CityId;
    CityName = _CityName;
    CoorX = _CoorX;
    CoorY = _CoorY;
}

function clickProvince(_ProvinceId, _ProvinceName, _CoorX, _CoorY) {
    try {
        var TXT_Location = document.getElementById("TXT_Location");
        TXT_Location.value = _ProvinceName;
        TXT_Location.select();
        document.getElementById("locationResults").style.display = 'none';
        document.getElementById("locationResults").innerHTML = "";
        _OptionCount = 0;
    }
    catch (e) {

    }

    document.getElementById("locationResults").style.display = 'none';

    ProvinceId = _ProvinceId;
    ProvinceName = _ProvinceName;
    CoorX = _CoorX;
    CoorY = _CoorY;
}

function locationChanged()
{
    CityId = 0;
    CityName = "";
    ProvinceId = 0;
    ProvinceName = "";
    CoorX = 0;
    CoorY = 0;
}

var _returnCenterTimeout;
//var mvp_mapinfo = document.getElementById("mvp_mapinfo");
var mvp_info_showtime = 2000;
var map;

function resetMarkers() {
    for (var i = 0; i < markerlist.length; i++) {
        markerlist[i].setImage("img/markers/" + (i + 1) + ".png");
    }

    _removeTempMarker();
}

function mvpl_over(ind, focus) {
    var mvp_mapinfo = document.getElementById("mvp_mapinfo");
    resetMarkers();

    markerlist[ind].setImage("img/markers/circle_green.png");
    if (focus) {
        map.panTo(markerlist[ind].getLatLng());
    }

    document.getElementById("mvp_mapinfo_title").innerHTML = mvpArr[ind]["PlaceName"];
    document.getElementById("mvp_mapinfo_province").innerHTML = mvpArr[ind]["ProvinceName"];
    document.getElementById("mvp_mapinfo_stars").innerHTML = mvpArr[ind]["Score"];
    document.getElementById("mvp_mapinfo_logo").src = "http://www.mekanist.net/img/logos/32/" + mvpArr[ind]["LogoFileName"];
    document.getElementById("mvp_mapinfo_link").href = "showplace.aspx?id=" + mvpArr[ind]["PlaceId"];

    var score = Math.round(mvpArr[ind]["Score"]);
    var sb = new StringBuilder();

    for (var i = 0; i < score; i++) {
        sb.append("<img src='img/favorites.png' />");
    }

    for (var i = score; i < 5; i++) {
        sb.append("<img src='img/favorites0.png' />");
    }

    mvp_mapinfo.style.display = 'block';
    document.getElementById("mvp_mapinfo_stars").innerHTML = sb.toString();
    clearTimeout(_returnCenterTimeout);
}

function mvpl_out(o) {
    _returnCenterTimeout = setTimeout("returnCenter();", mvp_info_showtime);
}

function returnCenter() {
    resetMarkers();
    var mvp_mapinfo = document.getElementById("mvp_mapinfo");
    map.panTo(_mapCenter);
    mvp_mapinfo.style.display = 'none';
}

var markerlist;
var _mapCenter;

function createMap() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("mvp_map"));
        map.setCenter(new GLatLng(41.01640106918588, 28.976011276245117), 13);
        map.disableDragging()
        map.disableDoubleClickZoom()
        var bounds = new GLatLngBounds();
        markerlist = new Array();

        for (var i = 0; i < mvpArr.length; i++) {
            addMarker(i, mvpArr[i]["PlaceId"], mvpArr[i]["PlaceName"], mvpArr[i]["CoorX"], mvpArr[i]["CoorY"], mvpArr[i]["Score"]);
            bounds.extend(new GLatLng(mvpArr[i]["CoorX"], mvpArr[i]["CoorY"]));
        }

        _mapCenter = bounds.getCenter();
        map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
    }
}

function addMarker(index, PlaceId, PlaceName, CoorX, CoorY, Score) {
    var icon = new GIcon();

    icon.image = 'img/markers/' + (index + 1) + '.png';
    icon.iconSize = new GSize(22, 28);
    icon.iconAnchor = new GPoint(3, 26);

    icon.shadow = 'img/markers/shadow.png';
    icon.shadowSize = new GSize(36, 28);

    icon.infoWindowAnchor = new GPoint(10, 10);

    var marker = new GMarker(new GLatLng(parseFloat(CoorX), parseFloat(CoorY)), icon);

    GEvent.addListener(marker, 'click', function() {
        mvpl_over(index, false);
    });

    markerlist.push(marker);
    map.addOverlay(marker);
}

var tempMarker;
var _tempMarkerAdded = false;

function addTempMarker(CoorX, CoorY, PlaceId, PlaceName, ProvinceName, Score, LogoFileName) {
    clearTimeout(_returnCenterTimeout);

    if (_tempMarkerAdded)
        return;

    var icon = new GIcon();

    icon.image = 'img/markers/star_green.png';
    icon.iconSize = new GSize(22, 28);
    icon.iconAnchor = new GPoint(3, 26);

    icon.shadow = 'img/markers/shadow.png';
    icon.shadowSize = new GSize(36, 28);

    icon.infoWindowAnchor = new GPoint(10, 10);

    tempMarker = new GMarker(new GLatLng(CoorX, CoorY), icon);
    resetMarkers();
    map.addOverlay(tempMarker);
    map.panTo(new GLatLng(CoorX, CoorY));

    document.getElementById("mvp_mapinfo_title").innerHTML = PlaceName;
    document.getElementById("mvp_mapinfo_province").innerHTML = ProvinceName;
    document.getElementById("mvp_mapinfo_logo").src = "http://www.mekanist.net/img/logos/64/" + LogoFileName;
    document.getElementById("mvp_mapinfo_link").href = "showplace.aspx?id=" + PlaceId;

    var score = Math.round(Score);
    var sb = new StringBuilder();

    for (var i = 0; i < score; i++) {
        sb.append("<img src='img/favorites.png' />");
    }

    for (var i = score; i < 5; i++) {
        sb.append("<img src='img/favorites0.png' />");
    }

    mvp_mapinfo.style.display = 'block';
    document.getElementById("mvp_mapinfo_stars").innerHTML = sb.toString();
    _tempMarkerAdded = true;
}

function removeTempMarker() {
    _returnCenterTimeout = setTimeout("_removeTempMarker();", mvp_info_showtime);
}

function _removeTempMarker() {
    if (!_tempMarkerAdded)
        return;

    map.removeOverlay(tempMarker);
    map.panTo(_mapCenter);
    mvp_mapinfo.style.display = 'none';
    _tempMarkerAdded = false;
}