﻿/// <reference path="jquery.min.js" />
/// <reference path="Common.js" />

// MapHelper
//#region
function MapHelper()
{
    this.NlMapContainerId = "";
    this.GoogleMapContainerId = "";
    this.IsContainedGoogleMap = false;

    this.ShowGoogleMap = function()
    {
        if (this.IsContainedGoogleMap)
        {
            $("#" + this.NlMapContainerId).hide();
            $("#" + this.GoogleMapContainerId).show();
        }
    }

    this.ShowNlMap = function()
    {
        if (this.IsContainedGoogleMap)
        {
            $("#" + this.GoogleMapContainerId).hide();
            $("#" + this.NlMapContainerId).show();
        }
    }
}
var mapHelper = new MapHelper();
//#endregion

// Class NlMap
//#region
function NlMap()
{
    this.IsShowBothCityAndRegion = false;
    this.CityListId = "";
    this.RegionListId = "";
    this.RadComboBox_ClientStateId = "";
    this.CityKey = "";
    this.NlMapImageId = "";
    this._DefaultMapKey = "Default";

    this.ShowCityList = function()
    {
        if (!this.IsShowBothCityAndRegion)
        {
            $("#" + this.RegionListId).hide();
        }
        $("#nlMapImage_Region").hide();

        $("#" + this.CityListId).show();
        $("#nlMapImage_City").show();
    }

    this.ShowRegionList = function()
    {
        if (!this.IsShowBothCityAndRegion)
        {
            $("#" + this.CityListId).hide();
        }
        $("#nlMapImage_City").hide();

        $("#" + this.RegionListId).show();
        $("#nlMapImage_Region").show();
    }

    this.ShowCity = function(cityName)
    {
        this.ShowCityList();
        mapHelper.ShowNlMap();

        if (cityName.trim() == "") cityName = this._DefaultMapKey;

        $(String.format("#{0} a[mapKey='{1}']", this.CityListId, cityName)).each(function()
        {
            $(this).addClass("mapActived");
        });

        var imgObj = $G("nlMapImage_City");
        imgObj.src = String.format("/images/NlMap/City/{0}.png", cityName);

        $("#ctl00_ContentPlaceHolder1_rcbNlMapType_Input").val("Switch to regions");
    };
    this.ShowDefaultCity = function()
    {
        var cityName = this._DefaultMapKey;

        $(String.format("#{0} a", this.CityListId)).each(function()
        {
            $(this).removeClass("mapActived");
        });

        this.ShowCity(cityName);
    };

    this.ShowRegion = function(regionName)
    {
        mapHelper.ShowNlMap();
        this.ShowRegionList();

        if (regionName.trim() == "") regionName = this._DefaultMapKey;

        $(String.format("#{0} a[mapKey='{1}']", this.RegionListId, regionName)).each(function()
        {
            $(this).addClass("mapActived");
        });

        var imgObj = $G("nlMapImage_Region");
        imgObj.src = String.format("/images/NlMap/Region/{0}.png", regionName);

        $("#ctl00_ContentPlaceHolder1_rcbNlMapType_Input").val("Switch to cities");
    };
    this.ShowDefaultRegion = function()
    {
        var regionName = this._DefaultMapKey;

        $(String.format("#{0} a", this.RegionListId)).each(function()
        {
            $(this).removeClass("mapActived");
        });
        
        this.ShowRegion(regionName);
    };

    this.ShowCityOrRegion = function()
    {
        var judegSign_City = String.format("\"value\":\"{0}\"", this.CityKey);
        var stateValue = $F(this.RadComboBox_ClientStateId);

        if (stateValue == undefined || stateValue == "")
        {
            stateValue = judegSign_City;
        }

        if (stateValue.indexOf(judegSign_City) > -1)
        {
            this.ShowCityList();
            this.ShowCity("Default");
        }
        else
        {
            this.ShowRegionList();
            this.ShowRegion("Default");
        }
    }

    this.IsSelectCityModule = function()
    {
        var judegSign_City = String.format("\"value\":\"{0}\"", this.CityKey);
        var stateValue = $F(this.RadComboBox_ClientStateId);

        if (stateValue == undefined || stateValue == "")
        {
            stateValue = judegSign_City;
        }

        return (stateValue.indexOf(judegSign_City) > -1);
    };
    

    this.ImagePreload = function()
    {

        var imageNames_City =
        [
            "Default",
            "Amsterdam",
            "Arnhem_Nijmegen",
            "Utrecht",
            "Maastricht",
            "Rotterdam",
            "Groningen",
            "The_Hague",
            "Noordwijk",
            "Eindhoven"
        ];
        document.imageArray_NlMap_City = new Array(imageNames_City.length);
        for (var i = 0; i < imageNames_City.length; i++)
        {
            document.imageArray_NlMap_City[i] = new Image;
            document.imageArray_NlMap_City[i].src = String.format("/images/NlMap/City/{0}.png", imageNames_City[i]);
        }

        var imageNames_Region =
        [
            "Default",
            "Drenthe_301",
            "Flevoland_1813",
            "Friesland_419",
            "Gelderland_539",
            "Groningen_651",
            "Limburg_788",
            "Noord-Brabant_846",
            "Noord-Holland_1026",
            "Overijssel_1780",
            "Utrecht_1265",
            "Zeeland_1364",
            "Zuid-Holland_1460"
        ];
        document.imageArray_NlMap_Region = new Array(imageNames_Region.length);
        for (var i = 0; i < imageNames_Region.length; i++)
        {
            document.imageArray_NlMap_Region[i] = new Image;
            document.imageArray_NlMap_Region[i].src = String.format("/images/NlMap/Region/{0}.png", imageNames_Region[i]);
        }
    }
}
var nlMap = new NlMap();
//#endregion

// Shopping Cart
//#region
function ShoppingCart()
{
    this.ShoppingCartContainerId = "ShoppingCartContainer";

    this.GetLanguageCode = function()
    {
        return $G("ctl00_ContentPlaceHolder1_lblLanguageCode").innerHTML;
    }

    this.AddVenue = function(venueId, venueName, venueUrlName)
    {
        var itemHtml = String.format("<li id='ShoppingCart_{0}'><a target='_blank' href='/{1}/Venue/{2}'>{3}</a><a style='cursor:pointer;' class='remove' VenueId='{0}' onclick=\"shoppingCart.RemoveVenue('{0}');\">remove</a></li>", venueId, this.GetLanguageCode(), venueUrlName, venueName);
        $G(this.ShoppingCartContainerId).innerHTML += itemHtml;

        var actionLinkObj_Add = $("#Action_{0} a[actiontype='add']".format(venueId));
        var actionLinkObj_Remove = $("#Action_{0} a[actiontype='remove']".format(venueId));

        actionLinkObj_Add.hide();
        actionLinkObj_Remove.show();

        var ajaxUrl = "/pages/DestinationSearchResult.aspx";
        var ajaxData = {
            Action: "ajax_ShoppingCartAddVenue",
            VenueId: venueId,
            VenueName: venueName,
            VenueUrlName: venueUrlName
        }
        $.post(ajaxUrl, ajaxData);
        this.AddClickedHash();
        this.CheckShowForAddToRequestButton();
    }

    this.RemoveVenue = function(venueId)
    {
        $(String.format("#ShoppingCart_{0}", venueId)).remove();

        var actionLinkObj_Add = $("#Action_{0} a[actiontype='add']".format(venueId));
        var actionLinkObj_Remove = $("#Action_{0} a[actiontype='remove']".format(venueId));

        actionLinkObj_Add.show();
        actionLinkObj_Remove.hide();

        var ajaxUrl = "/pages/DestinationSearchResult.aspx";
        var ajaxData = {
            Action: "ajax_ShoppingCartRemoveVenue",
            VenueId: venueId
        }
        $.post(ajaxUrl, ajaxData);
        this.AddClickedHash();
        this.CheckShowForAddToRequestButton();
    }

    this.AddClickedHash = function()
    {
        document.location.hash = "#Clicked"
    }

    this.CheckAndUpdateContent = function(evalCode)
    {
        if (document.location.hash.indexOf("#Clicked") >= 0)
        {
            eval(evalCode);
        }
    }

    this.HideAddToRequestAction = function()
    {
        var obj = $("#ShoppingCartAddToRequest");
        if (obj != null) $("#ShoppingCartAddToRequest").remove();
    }

    this.ShowAddToRequestAction = function()
    {
        this.HideAddToRequestAction();

        var itemHtml = String.format("<li id='ShoppingCartAddToRequest'>{0}</li>", $G("ShoppingCartAddToRequestButton_Hide").innerHTML);
        $G(this.ShoppingCartContainerId).innerHTML += itemHtml;
    }

    this.CheckShowForAddToRequestButton = function()
    {
        if ($("#ShoppingCartContainer li[id^='ShoppingCart_']").length > 0)
        {
            this.ShowAddToRequestAction();
        }
        else
        {
            this.HideAddToRequestAction();
        }
    }
    
}
var shoppingCart = new ShoppingCart();
//#endregion

// ShowHelper
//#region

function ShowHelper()
{
    this.RelativeObjectAttributeName = "RelativeObjectId";
    this.SwitchShow = function(currentObj)
    {
        var relativeObjectId = currentObj.getAttribute(this.RelativeObjectAttributeName);
        $(currentObj).hide();
        $("#" + relativeObjectId).show();
    }

    this.ShowMetersValue = function()
    {
        $("span[UnitType='Meters']").show();
        $("span[UnitType='Feet']").hide();
    }

    this.ShowFeetValue = function()
    {
        $("span[UnitType='Meters']").hide();
        $("span[UnitType='Feet']").show();
    }
}
var showHelper = new ShowHelper();
//#endregion

// goMapSearch
//#region
function goMapSearch() {
    var address = document.getElementById("ctl00_ContentPlaceHolder1_txtHomeMapAddress").value;
    window.frames["GoogleMapIframe"].showMapByAddress(address);
    mapHelper.ShowGoogleMap();
}
//#endregion

// checkSearchBox
//#region
function checkSearchBox_OnLoad(inputObj) {
    var defaultText = inputObj.getAttribute("DefaultText");
    var defaultColor = "#7D7D7D";
    var focusColor = "#000000";

    if (inputObj.value.trim() == "" || inputObj.value.trim() == defaultText) {
        inputObj.value = defaultText;
        inputObj.style.color = defaultColor;
        mapHelper.ShowNlMap();
    }
    else {
        inputObj.style.color = focusColor;
    }
    inputObj.title = defaultText;
}

function checkSearchBox_OnClick(inputObj) {
    var defaultText = inputObj.getAttribute("DefaultText");
    var defaultColor = "#7D7D7D";
    var focusColor = "#000000";

    if (inputObj.value.trim() == defaultText) {
        inputObj.value = "";
        inputObj.style.color = focusColor;
    }
    else {
        inputObj.style.color = focusColor;
    }
}

function mapSearchCheck(currentEvent) {
    currentEvent = window.event ? window.event : currentEvent;
    if (currentEvent.keyCode == 13)
    {
        goMapSearch();
        return false;
    }
}

function ajaxSelectVenue(checkButtonId, unCheckButtonId, venueId, isCheck) {
    if (isCheck != 1) isCheck = 0;
    if (isCheck == 1) {
        $("#" + checkButtonId).hide();
        $("#" + unCheckButtonId).show();
    }
    else {
        $("#" + checkButtonId).show();
        $("#" + unCheckButtonId).hide();
    }

    document.location.hash = "#Clicked";
    
    var timeTag = (new Date).getTime();
    var ajaxUrl = "DestinationSearchResult.aspx?Action=Ajax_SelectVenue&VenueId=" + venueId + "&IsCheck=" + isCheck + "&TimeTag" + timeTag;

    $.get(ajaxUrl);
}
//#endregion

//checkLogin
//#region
function checkLogin_OnLoad(inputObj) {
    var defaultText = inputObj.getAttribute("DefaultText");
    var defaultColor = "#7D7D7D";
    var focusColor = "#000000";

    if (inputObj.value.trim() == "" || inputObj.value.trim() == defaultText) {
        inputObj.value = defaultText;
        inputObj.style.color = defaultColor;
        inputObj.style.fontStyle = "italic";
    }
    else {
        inputObj.style.color = focusColor;
        inputObj.style.fontStyle = "normal";
    }
    inputObj.title = defaultText;
}

function checkLogin_OnClick(inputObj) {
    var defaultText = inputObj.getAttribute("DefaultText");
    var defaultColor = "#7D7D7D";
    var focusColor = "#000000";

    if (inputObj.value.trim() == defaultText) {
        inputObj.value = "";
        inputObj.style.color = focusColor;
        inputObj.style.fontStyle = "normal";
    }
    else {
        inputObj.style.color = focusColor;
        inputObj.style.fontStyle = "normal";
    }
}
//#endregion

// showPasswor
//#region
function showPasswordBox()
{
    var passwordObj = $G("ctl00_txtPassword");
    var tipObj = $G("ctl00_txtPasswordTip");

    passwordObj.style.display = "";
    tipObj.style.display = "none";
    passwordObj.focus();
}

function showPasswordTip()
{
    var passwordObj = $G("ctl00_txtPassword");
    var tipObj = $G("ctl00_txtPasswordTip");

    if (passwordObj.value == "")
    {
        passwordObj.style.display = "none";
        tipObj.style.display = "";
    }
}
//#endregion

// showOrHide
//#region

function showOrHide(objectId) {
    var targetObj = $G(objectId);
    var curDisplayStatus = targetObj.style.display;

    if (curDisplayStatus == "" || curDisplayStatus == "block") {
        targetObj.style.display = "none";
    }
    else {
        targetObj.style.display = "";
    }
}
//#endregion

