﻿window.activitiesMarkers = null;
window.IE = (document.all ? true : false);
window.mapIconPath = "";
window.markerOnMap = null;
window.map = null;
window.mainAttractionsMarkers = null;
window.searchResultMarkers = null;
window.stayingPlace = null;
window.stayPlannerModified = false;
window.stayPlannerScrollTop = null;
window.mapState = null;
if (!window.IE) {
    if (document.addEventListener)
        document.addEventListener("mousemove", getMouseXY, false);
    else
        document.captureEvents(Event.MOUSEMOVE);
}
document.onmousemove = getMouseXY;
var tempX = 0;
var tempY = 0;

function getMouseXY(e, excludeScroll) {
    try {
        if (window.IE) {
            tempX = event.clientX;
            tempY = event.clientY;
            if (!excludeScroll) {
                tempX += document.body.scrollLeft;
                tempY += document.body.scrollTop;
            }
        } else {
            tempX = e.pageX;
            tempY = e.pageY;
        }
        if (tempX < 0) tempX = 0;
        if (tempY < 0) tempY = 0;
    }
    catch (e) { };
    return true;
}

function goBookOnlineUrl(urlFormatString, windowId) {
    closeEdit();
    var elem = $get("divEdit");
    var serviceId = elem.getAttribute("serviceId");
    var bookOnlineUrl = elem.getAttribute("bookOnlineUrl");
    if (bookOnlineUrl) {
        var url = urlFormatString.replace("{0}", serviceId).replace("{1}", bookOnlineUrl);
        if (typeof (windowId) == "string")
            runFunctionAfterLogIn(windowId, url, goBookOnlineUrlAfterLogIn);
        else
            window.open(url, "_blank");
    }
}

function openSearchWindow(id, url) {
    var width = 709;
    var height = 274;
    var b = detectBrowser();
    if (b == "ff") height = 278;
    openRadWindow(id, url, width, height, null, loadStayPlanner);
}

function resizeSearchWindow() {
    var width = 708;
    var height = 504;
    var lang = 1;
    if (document.getElementById('curLang'))
        lang = document.getElementById('curLang').value;
    if (lang == 9)
        height = 496;
    var b = detectBrowser();
    if (b == "ff") {
        if (lang == 9)
            height = 498;
        else
            height = 508;
    }
    if (b == "ff2") {
        if (lang == 9)
            height = 503;
        else
            height = 510;
    }
    if (b == 6) {
        if (lang == 9)
            height = 497;
        else
            height = 505;
    }
    changeWindowSize(width, height);
}

function resetSearchWindow() {
    var width = 708;
    var height = 278;
    var lang = 1;
    if (document.getElementById('curLang'))
        lang = document.getElementById('curLang').value;
    if (lang == 9)
        height = 270;
    var b = detectBrowser();
    if (b == "ff") {
        if (lang == 9)
            height = 273;
        else
            height = 283;
    }
    if (b == "ff2") {
        if (lang == 9)
            height = 278;
        else
            height = 286;
    }
    if (b == 6) {
        if (lang == 9)
            height = 271;
        else
            height = 279;
    }
    changeWindowSize(width, height);
}

function goBookOnlineUrlAfterLogIn(sender, eventArgs) {
    if (sender.argument) {
        logIn();
        window.open(sender.argument, "_blank");
    }
    sender.remove_close(goBookOnlineUrlAfterLogIn);
}

function getRadWindow() {
    var wnd = null;
    if (window.radWindow) wnd = window.radWindow;
    try {
        if (window.frameElement && window.frameElement.radWindow) wnd = window.frameElement.radWindow;
    } catch (e) { }
    return wnd;
}

function showAlertMessage(str) {
    var ra = null;
    var wnd = null;
    if (typeof (radalert) != "function") {
        wnd = getRadWindow();
        if (wnd && wnd.BrowserWindow) {
            wnd = wnd.BrowserWindow;
            ra = wnd.radalert;
        }
    }
    else {
        wnd = window;
        ra = radalert;
    }
    if (wnd && (typeof (wnd.runFunctionBefore) == "function")) wnd.runFunctionBefore();
    if (typeof (ra) == "function")
        ra(str);
    else {
        str = str.replace(new RegExp("<br\\s*/?>", "igm"), "\r\n");
        alert(str);
    }
}

function changeTab(generalInfoTabId, reviewsTabId, videoTabId, infoTabDivId, reviewTabDivId, videoTabDivId, state) {
    var elem = null;
    switch (state) {
        case 1:
            elem = $get(generalInfoTabId);
            if (elem) elem.className = "tabPop";
            elem = $get(reviewsTabId);
            if (elem) elem.className = "tabPopS";
            elem = $get(videoTabId);
            if (elem) elem.className = "tabPopS";
            elem = $get(infoTabDivId);
            if (elem) elem.style.display = "inline";
            elem = $get(reviewTabDivId);
            if (elem) elem.style.display = "none";
            elem = $get(videoTabDivId);
            if (elem) elem.style.display = "none";
            break;
        case 2:
            elem = $get(generalInfoTabId);
            if (elem) elem.className = "tabPopS";
            elem = $get(reviewsTabId);
            if (elem) elem.className = "tabPop";
            elem = $get(videoTabId);
            if (elem) elem.className = "tabPopS";
            elem = $get(infoTabDivId);
            if (elem) elem.style.display = "none";
            elem = $get(reviewTabDivId);
            if (elem) elem.style.display = "inline";
            elem = $get(videoTabDivId);
            if (elem) elem.style.display = "none";
            break;
        case 3:
            elem = $get(generalInfoTabId);
            if (elem) elem.className = "tabPopS";
            elem = $get(reviewsTabId);
            if (elem) elem.className = "tabPopS";
            elem = $get(videoTabId);
            if (elem) elem.className = "tabPop";
            elem = $get(infoTabDivId);
            if (elem) elem.style.display = "none";
            elem = $get(reviewTabDivId);
            if (elem) elem.style.display = "none";
            elem = $get(videoTabDivId);
            if (elem) elem.style.display = "inline";
            break;
    }
}

function closeRadWindow(arg) {
    var wnd = getRadWindow();
    if (wnd) {
        if (wnd.BrowserWindow && wnd.BrowserWindow.hideDivBg) wnd.BrowserWindow.hideDivBg();
        if (typeof (arg) != "undefined") wnd.argument = arg;
        wnd.close();
    }
}

function detectBrowser() {
    var browser = navigator.appName;
    var b_version = navigator.appVersion;
    var version = parseFloat(b_version);

    if (b_version.indexOf('MSIE 7.0') != -1)
        return (7);
    else if (b_version.indexOf('MSIE 6.0') != -1)
        return (6);
    else {
        if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) { //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
            var ffversion = new Number(RegExp.$1) // capture x.x portion and store as a number
            if (ffversion >= 3)
                return ('ff');
            else if (ffversion >= 2)
                return ('ff2');
            else if (ffversion >= 1)
                return ('ff1');
        }
    }
}

function openRadWindow(id, url, width, height, arg, func) {
    showDivBg();
    closeEdit();
    var wnd = $find(id);
    if (wnd) {
        wnd.hide();
        wnd.setUrl(url);
        if (typeof (width) != "undefined") wnd.set_width(width);
        if (typeof (height) != "undefined") wnd.set_height(height);

        /*                
        else if (url.indexOf('RateIt.aspx?ServiceId') != -1)// Rate Activity 
        {
        if (browserDet == 7) {
        wnd.set_width(315);
        wnd.set_height(413);
        }
        else if (browserDet == 6) {
        wnd.set_width(315);
        wnd.set_height(413);
        }
        else {
        wnd.set_width(315);
        wnd.set_height(413);
        }
        }
        }
        else if (url.indexOf('About.aspx') != -1)//About Us 
        {
        if (browserDet == 7) {
        wnd.set_width(608);
        wnd.set_height(461);
        }
        else if (browserDet == 6) {
        wnd.set_width(608);
        wnd.set_height(463);
        }
        else {
        wnd.set_width(608);
        wnd.set_height(465);
        }
        }
        else if (url.indexOf('Terms.aspx') != -1)// Terms of Use
        {
        if (browserDet == 7) {
        wnd.set_width(800);
        wnd.set_height(461);
        }
        else if (browserDet == 6) {
        wnd.set_width(800);
        wnd.set_height(461);
        }
        else {
        wnd.set_width(800);
        wnd.set_height(459);
        }
        }
        else if (url.indexOf('Privacy.aspx') != -1)// Privacy Statement
        {
        if (browserDet == 7) {
        wnd.set_width(800);
        wnd.set_height(457);
        }
        else if (browserDet == 6) {
        wnd.set_width(800);
        wnd.set_height(457);
        }
        else {
        wnd.set_width(800);
        wnd.set_height(455);
        }
        }
        */
        wnd.show();
        if (typeof (arg) != "undefined") wnd.argument = arg;
        if (typeof (func) == "function") wnd.add_close(func);
        wnd.center();
        wnd.add_pageLoad(hideDivOpenBgLoader);
    }
}

function changeWindowUrl(url) {
    var wnd = getRadWindow();
    if (wnd) wnd.setUrl(url);
}

function changeWindowSize(width, height, id) {
    var wnd;
    if (typeof (id) != 'undefined')
        wnd = $find(id);
    else
        wnd = getRadWindow();
    if (wnd) {
        wnd.setSize(width, height);
        wnd.center();
    }
}

function openRadWindowCtrl(sender, eventArgs) {
    var id = sender.get_element().id + "_text";
    var txt = $get(id);
    if (txt) openRadWindow(txt.getAttribute("mWindowClientId"), txt.getAttribute("urlChangeCity"));
}

function doCancel(sender, eventArgs) {
    eventArgs.set_cancel(true);
}

function showDivGoogleMapBg() {
    showMenu("divGoogleMapBg", 1);
}

function hideDivGoogleMapBg() {
    showMenu("divGoogleMapBg", 0);
}

function showDivBg() {
    if (location.href.toLowerCase().indexOf('homepage.aspx') > -1) {
        var elem = $get("divOpenBg");
        var b = detectBrowser();
        if (b == "ff") {
            if (elem) elem.style.height = "580px";
        }
        else
            if (elem) elem.style.height = "612px";
        showMenu("divOpenBg", 1);
    }
    else
        showMenu("divOpenBg", 1);
}

function hideDivBg() {
    showMenu("divOpenBg", 0);
    showMenu("divOpenBgLoader", 1);
}

function hideDivOpenBgLoader() {
    showMenu("divOpenBgLoader", 0);
}

function showPopUp(elId, visibility) {
    var scrWidth = document.body.clientWidth;
    var scrHeight = document.documentElement.clientHeight;
    var elInner = $get(elId);
    if (visibility) {
        hideDivOpenBgLoader();
        elInner.style.display = "block";
        showDivBg();
        var elHeight = elInner.offsetHeight;
        var elementHeight = (scrHeight / 2) - (elHeight / 2);
        var elWidth = elInner.offsetWidth;
        var elementWidth = (scrWidth / 2) - (elWidth / 2);
        var t = document.documentElement.scrollTop;
        elInner.style.left = elementWidth + "px";
        elInner.style.top = elementHeight + "px";
    }
    else {
        elInner.style.display = "none";
        hideDivBg();
    }
}

function openServiceInfoWindow(serviceInfoDivId, leftArrowImageId, x, y) {
    if (arguments.length == 1) {
        showPopUp(arguments[0], true);
        return;
    }

    hideDivOpenBgLoader();

    var scrWidth = document.body.clientWidth;
    var scrHeight = document.documentElement.clientHeight;
    var serviceInfoDiv = $get(serviceInfoDivId);

    serviceInfoDiv.style.display = "block";
    var elHeight = serviceInfoDiv.offsetHeight;
    var elementHeight = Math.abs((scrHeight / 2) - (elHeight / 2));
    var elWidth = serviceInfoDiv.offsetWidth;
    var elementWidth = (scrWidth / 2) - (elWidth / 2);
    var t = document.documentElement.scrollTop;
    var l = document.documentElement.scrollLeft;
    if (!(t && (t > 0))) t = 0;
    if (!(l && (l > 0))) l = 0;
    var ex, ey;
    var b = detectBrowser();
    var h = 0;
    var leftArrowImage = null;

    if (typeof (leftArrowImageId) == "string") {
        ex = x;
        ey = elementHeight;
        y = y - parseInt(elementHeight) - 12;
        if (b == "ff") y -= t;
        if (y > -1) {
            leftArrowImage = $get(leftArrowImageId);
            if (leftArrowImage) {
                leftArrowImage.style.top = y + "px";
                h = leftArrowImage.clientHeight;
            }
        }
        ey += t;
        if (y > (elHeight - h)) {
            var dy = (y - (elHeight - h));
            ey += dy;
            if (leftArrowImage) leftArrowImage.style.top = (y - dy - 6) + "px";
        }

        if (window.rtl)
            ex -= serviceInfoDiv.clientWidth + (window.IE ? 18 : 0);
        else if (!window.IE)
            l = 0;
    }
    else {
        ex = elementWidth;
        ey = parseInt(elementHeight) + t;
    }

    if (!window.rtl) ex += l;

    serviceInfoDiv.style.left = parseInt(ex) + "px";
    serviceInfoDiv.style.top = parseInt(ey) + "px";
}

function initializeMap(latitude, longitude) {
    clearMap();
    var browserIsCompatible = (window.GBrowserIsCompatible ? GBrowserIsCompatible() : false);
    var elem = null;
    if (browserIsCompatible && latitude && longitude) {
//        elem = $get("GoogleMapTableRow");
//        if (elem) elem.style.display = "";
//        elem = $get("aMinimizeCal");
//        if (elem) elem.style.display = "";
//        elem = $get("aCollapseCal");
//        if (elem) elem.style.display = "";
//        $get("aMinimizeMap").className = "restore";
        //        collapse("aMinimizeMap");
    if (window.map != null) {
            window.map.setCenter(new GLatLng(latitude, longitude));
        }
        else {
            window.map = new GMap2(document.getElementById("map_canvas"));
            window.map.setCenter(new GLatLng(latitude, longitude), 14);
            window.map.addControl((window.CustomMapControl ? new CustomMapControl() : new GLargeMapControl()));
            window.map.clearOverlays();
        }
    }
//    else {
//        $get("aMinimizeMap").className = "minimize";
//        collapse("aMinimizeMap");
//        elem = $get("GoogleMapTableRow");
//        if (elem) elem.style.display = "none";
//        elem = $get("aMinimizeCal");
//        if (elem) elem.style.display = "none";
//        elem = $get("aCollapseCal");
//        if (elem) elem.style.display = "none";
//    }
}

function getParentOffset(el, positions) {
    positions[0] += el.offsetLeft;
    positions[1] += el.offsetTop;
    if (el.offsetParent) positions = getParentOffset(el.offsetParent, positions);
    return positions;
}

function fixViewMenu() {
    positions = [0, 0];
    positions = getParentOffset($get("tdView"), positions);
    $get("tdViewMenu").style.left = positions[0] + 493 + "px";
    $get("tdViewMenu").style.top = positions[1] + "px";
}

function showMenu(id, mode) {
    var elem = $get(id);
    if (elem) elem.style.display = (mode ? "block" : "none");
}

function openEdit(isEvent, eventId, isDisabled, isEditable, serviceInfo, mapInfo, event) {
    var elem = $get("divEdit");
    elem.setAttribute("isEvent", isEvent);
    elem.setAttribute("eventId", eventId);
    elem.setAttribute("eventIsDisabled", isDisabled);
    if (serviceInfo) {
        elem.setAttribute("serviceInfo", serviceInfo);
        elem.setAttribute("serviceId", serviceInfo[0]);
        elem.setAttribute("categoryId", serviceInfo[1]);
        elem.setAttribute("bookOnlineUrl", serviceInfo[2]);
        elem.setAttribute("alreadyInCalendar", true);
    }
    if (mapInfo) {
        elem.setAttribute("mapInfo", mapInfo);
        elem.setAttribute("latitude", mapInfo[0]);
        elem.setAttribute("longitude", mapInfo[1]);
        elem.setAttribute("iconFileName", mapInfo[2]);
    }
    var nameDiv = $get("NameDiv_" + isEvent + "_" + eventId);
    if (nameDiv) elem.setAttribute("activityName", nameDiv.title);

    var ScrollTop = document.body.scrollTop;
    var ScrollLeft = document.body.scrollLeft;
    if (ScrollTop == 0) {
        if (window.pageYOffset)
            ScrollTop = window.pageYOffset;
        else
            ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
    }
    if (ScrollLeft == 0) {
        if (window.pageXOffset)
            ScrollLeft = window.pageXOffset;
        else
            ScrollLeft = (document.body.parentElement) ? document.body.parentElement.scrollLeft : 0;
    }
    getMouseXY((typeof (event) != "undefined") ? event : null);

    if (window.IE) {
        tempY = tempY + ScrollTop;
        tempX = tempX + ScrollLeft;
    }

    if ((tempX + 120) >= 1024) {
        elem.style.left = tempX - 120 + "px";
    }
    else {
        elem.style.left = tempX - 15 + "px";
    }

    elem.style.top = tempY + "px";
    elem.style.display = ((elem.style.display == "none") ? "block" : "none");
    elem = $get("ChangeRateListItem");
    if (elem) elem.style.display = ((isEvent && (!isDisabled)) ? "block" : "none");
    var display = (isEvent ? "block" : "none");
    elem = $get("BookOnlineListItem");
    if (elem) {
        elem.style.display = display;
        if (!(serviceInfo && (serviceInfo.length > 2) && (serviceInfo[2] != null))) elem.style.display = "none";
    }
    elem = $get("ViewDetailsListItem");
    if (elem) elem.style.display = display;
    display = (mapInfo ? "block" : "none");
    elem = $get("ShowOnMapListItem");
    if (elem) elem.style.display = display;
    elem = $get("SearchNearbyListItem");
    if (elem) elem.style.display = display;
    display = (isDisabled ? "none" : "block");
    elem = $get("ChangeStatusListItem");
    if (elem) elem.style.display = display;
    elem = $get("EditListItem");
    if (elem) {
        elem.style.display = "block";
        if (isEvent && isDisabled && (!isEditable)) elem.style.display = "none";
    }
}

function openMapContextMenu(marker, name, serviceId, categoryId, alreadyInCalendar) {
    var elem = $get("MapContextMenuDiv");
    window.markerOnMap = marker;
    var point = marker.getLatLng();
    elem.setAttribute("latitude", point.lat());
    elem.setAttribute("longitude", point.lng());
    elem.setAttribute("activityName", name);
    elem.setAttribute("serviceId", serviceId);
    elem.setAttribute("categoryId", categoryId);
    elem.setAttribute("alreadyInCalendar", alreadyInCalendar);

    var ScrollTop = document.body.scrollTop;
    var ScrollLeft = document.body.scrollLeft;
    if (ScrollTop == 0) {
        if (window.pageYOffset)
            ScrollTop = window.pageYOffset;
        else
            ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
    }
    if (ScrollLeft == 0) {
        if (window.pageXOffset)
            ScrollLeft = window.pageXOffset;
        else
            ScrollLeft = (document.body.parentElement) ? document.body.parentElement.scrollLeft : 0;
    }
    getMouseXY((typeof (event) != "undefined") ? event : null);
    if (window.IE) {
        tempY = tempY + ScrollTop;
        tempX = tempX + ScrollLeft;
    }

    if ((tempX + 120) >= 1024) {
        elem.style.left = tempX - 120 + "px";
    }
    else {
        elem.style.left = tempX - 15 + "px";
    }

    elem.style.top = tempY + "px";
    elem.style.display = ((elem.style.display == "none") ? "block" : "none");
    var display = (serviceId ? "block" : "none");
    elem = $get("ViewDetailsFromMapListItem");
    if (elem) elem.style.display = display;
    elem = $get("AddServiceFromMapToCalendarListItem");
    if (elem) elem.style.display = ((serviceId && alreadyInCalendar) ? "none" : display);
    var isStayingPlace = (window.stayingPlace && (window.stayingPlace == marker));
    elem = $get("RemoveFromMapListItem");
    elem.style.display = (isStayingPlace ? "none" : "block");
    elem = $get("ChangeStayingPlaceListItem");
    elem.style.display = (isStayingPlace ? "block" : "none");
}

function addActivityByDblClick(id, cellId) {
    var day = 1
    var hour = 0;
    var minute = 0;
    if (cellId != null) {
        var parts = cellId.split("_");
        var l = parts.length;
        day = parts[l - 3];
        hour = parts[l - 2];
        minute = parts[l - 1];
    }
    openAddActivityWindow(id, "ActivityEdit.aspx?d=" + day + "&h=" + hour + "&m=" + minute);
}

function deleteActivityConfirmation(msg) {
    closeEdit();
    var elem = $get("divEdit");
    radconfirm(msg.replace("{0}", elem.getAttribute("activityName")), deleteActivity);
}

function deleteActivity(arg) {
    if (arg) {
        var elem = $get("divEdit");
        updateCalendarPanel("DeleteActivity," + elem.getAttribute("isEvent") + "," + elem.getAttribute("eventId"));
    }
}

function openAddActivityWindow(id, url) {

    openRadWindow(id, url, 498, 410, null, updateCalendarPanel);
}

function openAddStayPlannerEventWindow(id, url) {
    openRadWindow(id, url, 500, 444, null, updateCalendarPanel);
}

function openAddServiceWindow(id, urlFormatString) {
    var elem = $get("MapContextMenuDiv");
    openAddStayPlannerEventWindow(id, urlFormatString.replace("{0}", elem.getAttribute("serviceId")).replace("{1}", elem.getAttribute("categoryId")));
}

function openChangeStatusWindow(id, url) {
    var elem = $get("divEdit");
    url = url.replace("{0}", elem.getAttribute("eventId")).replace("{1}", elem.getAttribute("isEvent"));
    openRadWindow(id, url, 238, 285, null, updateCalendarPanel);
}

function openChangeRateWindow(id, urlFormatString) {
    var elem = $get("divEdit");
    openRadWindow(id, urlFormatString.replace("{0}", elem.getAttribute("serviceId")), 315, 413, null, changeRate);
}

function openEditEventWindow(id) {
    closeEdit();
    var elem = $get("divEdit");
    var isEvent = elem.getAttribute("isEvent");
    if (typeof (isEvent) != "undefined") {
        if ((isEvent == "true") || (isEvent == true))
            openAddStayPlannerEventWindow(id, "ServiceEventEdit.aspx?ServiceId=0&StayPlannerEventId=" + elem.getAttribute("eventId"));
        else
            openAddActivityWindow(id, "ActivityEdit.aspx?ActivityId=" + elem.getAttribute("eventId"));
    }
}

function openStayPlannerWindow(id, url) {
    openRadWindow(id, url, 558, 393, null, loadStayPlanner);
}

function changeRate() {
    var wnd = getRadWindow();
    if (wnd) {
        wnd.close();
        wnd.BrowserWindow.updateContentPanel("ChangeRate");
    }
}

function loadStayPlanner(sender, eventArgs) {
    if (typeof (sender.argument) == "string") updateContentPanel(sender.argument);
    sender.remove_close(loadStayPlanner);
}

function saveStayPlanner(arg) {
    var realArg = arg;
    if ((typeof (arg) == "object")) {
        if (arg.remove_close) arg.remove_close(saveStayPlanner);
        if (arg.argument)
            realArg = arg.argument;
        else
            realArg = null;
    }
    if (realArg) updateCalendarPanel("SaveStayPlanner");
}

function logIn(arg) {
    if (typeof (arg) == "object") {
        if (arg.remove_close) arg.remove_close(logIn);
        if (typeof (arg.argument) != "undefned") {
            if (arg.argument == null) return;
        }
    }
    updateContentPanel("LogIn");
}

function openSearchNearbyWindow(elemId, dontShowMeThisAgainVisible) {
    closeEdit();
    var elem = $get("SearchNearByDontShowMeThisAgainTableRow");
    if (elem) elem.style.display = (dontShowMeThisAgainVisible ? "inline" : "none");
    if (typeof (elemId) != "string") elemId = "divEdit";
    elem = $get(elemId);
    var name = elem.getAttribute("activityName");
    elem = $get("divSearchNearby");
    var nameSpan = $get(elem.getAttribute("activitynamespanid"));
    if (nameSpan) nameSpan.innerHTML = name;
    elem.setAttribute("storageElemId", elemId);
    showPopUp("divSearchNearby", true);
}

function searchNearby() {
    var elem = $get("divSearchNearby");
    val1 = $get(elem.getAttribute("categorylistid")).value;
    elem = $get(elem.getAttribute("storageElemId"));
    showPopUp("divSearchNearby");
    var val2 = elem.getAttribute("serviceId");
    if (!val2) val2 = null;
    var val3 = "";
    var elem2 = $get("SearchNearByDontShowMeThisAgainTableRow");
    if (elem2) {
        if (elem2.style.display != "none") {
            elem2 = $get("SearchNearByDontShowMeThisAgainCheckBox");
            if (elem2) val3 = "," + elem2.checked;
        }
    }
    var val4 = elem.getAttribute("activityName").replace(new RegExp(",", "gi"), "&#44;");
    updateSearchPanel("SearchNearby," + elem.getAttribute("latitude") + "|" + elem.getAttribute("longitude") + "|" + val4 + "," + val1 + "," + val2 + val3);
}

function showSendEmail() {
    var validationResult;
    if (typeof (Page_ClientValidate) == "function") validationResult = Page_ClientValidate("SendEmail");
    if (validationResult) showPopUp("divSendEmail");
}

function showServiceDetails(elemId) {
    closeEdit();
    if (typeof (elemId) != "string") elemId = "divEdit";
    var elem = $get(elemId);
    var showAddToCalendarButton = elem.getAttribute("alreadyInCalendar");
    if (typeof (showAddToCalendarButton) == "boolean")
        showAddToCalendarButton = (!showAddToCalendarButton);
    else
        showAddToCalendarButton = true;
    var showBookOnlineUrl = true;
    if (typeof (elem.getAttribute("eventIsDisabled")) == "boolean") showBookOnlineUrl = (!elem.getAttribute("eventIsDisabled"));
    updateServiceInfoPanel(elem.getAttribute("serviceId") + "," + showAddToCalendarButton + "," + showBookOnlineUrl + ",false");
}

function signInClose(sender, eventArgs) {
    if (sender.argument && (typeof (sender.argument) == "object") && sender.argument.length && (sender.argument.length > 3)) {
        openRadWindow(sender.argument[0], sender.argument[1], sender.argument[2], sender.argument[3], ((sender.argument.length > 4) ? sender.argument[4] : null), ((sender.argument.length > 5) ? sender.argument[5] : null));
        logIn();
    }
    sender.remove_close(signInClose);
}

function runFunctionAfterLogIn(id, arg, func) {
    openRadWindow(id, "RegistrationUser.aspx", 588, 0, arg, func);
}

function closeEdit() {
    showMenu('divEdit', 0);
    showMenu('menuFile', 0);
    showMenu('menuAction', 0);
    showMenu('menuReady', 0);
    showMenu('menuView', 0);
    showMenu('MapContextMenuDiv', 0);
    showMenu('LanguageListDiv', 0);
}

function createMarker(latitude, longitude, iconFileName, name, serviceId, categoryId, alreadyInCalendar) {
    var point = new GLatLng(latitude, longitude);
    var shadowSize, iconSize;
    var baseIcon = new GIcon();

    switch (iconFileName) {
        case "main_attraction.png":
            shadowFileName = "main_attraction_shadow.png";
            shadowSize = new GSize(33, 17);
            iconSize = new GSize(34, 33);
            baseIcon.iconAnchor = new GPoint(17, 33);
            break;
        case "blue_flag.png":
            shadowFileName = "red_flag_shadow.png";
            shadowSize = new GSize(25, 25);
            iconSize = new GSize(15, 25);
            baseIcon.iconAnchor = new GPoint(15, 25);
            break;
        case "green_flag.png":
            shadowFileName = "green_flag_shadow.png";
            shadowSize = new GSize(23, 10);
            iconSize = new GSize(15, 25);
            baseIcon.iconAnchor = new GPoint(15, 25);
            break;
        case "staying_place.png":
            shadowFileName = "staying_place_shadow.png";
            shadowSize = new GSize(33, 17);
            iconSize = new GSize(34, 38);
            baseIcon.iconAnchor = new GPoint(17, 38);
            break;
        default:
            if (iconFileName.indexOf("_") > -1) {
                shadowFileName = "shadow.png";
                //shadowSize = new GSize(46, 32);
                shadowSize = new GSize(65, 53);
                iconSize = new GSize(41, 53);
                baseIcon.iconAnchor = new GPoint(20, 53);
            }
            break;
    }
    baseIcon.shadow = window.mapIconPath + shadowFileName;
    baseIcon.shadowSize = shadowSize;

    var letteredIcon = new GIcon(baseIcon);
    letteredIcon.image = window.mapIconPath + iconFileName;
    letteredIcon.iconSize = iconSize;

    name = name.replace("&amp;", "&");
    var marker = new GMarker(point, { icon: letteredIcon, title: name });
    //GEvent.addListener(marker, "click", function() { openMapContextMenu(this, name, serviceId, categoryId, alreadyInCalendar); });

    return marker;
}

function addMarker(latitude, longitude, iconFileName, name, serviceId, categoryId, alreadyInCalendar, centerMapOnMarker) {
    if (window.map) {
        var marker = createMarker(latitude, longitude, iconFileName, name, serviceId, categoryId, alreadyInCalendar);
        window.map.addOverlay(marker);
        if (centerMapOnMarker) window.map.setCenter(marker.getLatLng());
        return marker;
    }
}

function addActivitiesMarkers(info) {
    removeActivitiesMarkers();
    if (window.map && info) {
        window.activitiesMarkers = [];
        var bounds = new GLatLngBounds();
        for (var i = 0; i < info.length; i++) {
            if (info[i].length > 6) {
                var marker = createMarker(info[i][0], info[i][1], info[i][2], info[i][3], info[i][4], info[i][5], info[i][6]);
                window.map.addOverlay(marker);
                if (info[i].length > 8) marker.uniqueEventId = info[i][7] + "," + info[i][8];
                window.activitiesMarkers[window.activitiesMarkers.length] = marker;
                bounds.extend(marker.getLatLng());
            }
        }
        window.map.setZoom(window.map.getBoundsZoomLevel(bounds));
        window.map.setCenter(bounds.getCenter());
    }
}

function addMainAttractionsMarkers(info) {
    removeMainAttractionsMarkers();
    if (window.map && info) {
        window.mainAttractionsMarkers = [];
        var bounds = new GLatLngBounds();
        for (var i = 0; i < info.length; i++) {
            if (info[i].length > 6) {
                var marker = createMarker(info[i][0], info[i][1], info[i][2], info[i][3], info[i][4], info[i][5], info[i][6]);
                window.map.addOverlay(marker);
                window.mainAttractionsMarkers[window.mainAttractionsMarkers.length] = marker;
                bounds.extend(marker.getLatLng());
            }
        }
        window.map.setZoom(window.map.getBoundsZoomLevel(bounds));
        window.map.setCenter(bounds.getCenter());
    }
}

function addMarkers(info) {
    if (window.map && info) {
        var bounds = new GLatLngBounds();
        for (var i = 0; i < info.length; i++) {
            if (info[i].length > 6) {
                var marker = createMarker(info[i][0], info[i][1], info[i][2], info[i][3], info[i][4], info[i][5], info[i][6]);
                window.map.addOverlay(marker);
                bounds.extend(marker.getLatLng());
            }
        }
        window.map.setZoom(window.map.getBoundsZoomLevel(bounds));
        window.map.setCenter(bounds.getCenter());
    }
}

function addStayingPlaceMarker(marker, centerMapOnMarker) {
    if (window.map) {
        if (window.stayingPlace) window.map.removeOverlay(window.stayingPlace);
        if (marker) {
            window.stayingPlace = marker;
            window.map.addOverlay(marker);
            if (centerMapOnMarker) window.map.setCenter(marker.getLatLng());
        }
        else
            window.stayingPlace = null;
    }
}

function clearMap() {
    addStayingPlaceMarker();
    removeMarkers(true);
}

function removeMarker() {
    showMenu('MapContextMenuDiv', 0);
    if (window.map && window.markerOnMap) {
        window.map.removeOverlay(window.markerOnMap);
        removeArrayMember(window.searchResultMarkers, window.markerOnMap);
        window.markerOnMap = null;
    }
}

function removeMarkers(arg) {
    if (arg && window.map) {
        window.map.clearOverlays();
        window.searchResultMarkers = null;
        if (window.stayingPlace) window.map.addOverlay(window.stayingPlace);
    }
    window.markerOnMap = null;
}

function removeActivitiesMarkers() {
    if (window.map && window.activitiesMarkers) {
        while (window.activitiesMarkers.length > 0) {
            var marker = window.activitiesMarkers[0];
            window.map.removeOverlay(marker);
            removeArrayMember(window.activitiesMarkers, marker);
        }
        window.activitiesMarkers = null;
    }
}

function removeMainAttractionsMarkers() {
    if (window.map && window.mainAttractionsMarkers) {
        while (window.mainAttractionsMarkers.length > 0) {
            var marker = window.mainAttractionsMarkers[0];
            window.map.removeOverlay(marker);
            removeArrayMember(window.mainAttractionsMarkers, marker);
        }
        window.mainAttractionsMarkers = null;
    }
}

function removeSearchResultMarkers() {
    if (window.map && window.searchResultMarkers) {
        while (window.searchResultMarkers.length > 0) {
            var marker = window.searchResultMarkers[0];
            window.map.removeOverlay(marker);
            removeArrayMember(window.searchResultMarkers, marker);
        }
        window.searchResultMarkers = null;
    }
}

function showActivityOnMap() {
    closeEdit();
    var elem = $get("divEdit");
    var marker = addMarker(elem.getAttribute("latitude"), elem.getAttribute("longitude"), elem.getAttribute("iconFileName"), elem.getAttribute("activityName"), elem.getAttribute("serviceId"), elem.getAttribute("categoryId"), elem.getAttribute("alreadyInCalendar"), true);
    marker.uniqueEventId = elem.getAttribute("isEvent") + "," + elem.getAttribute("eventId");
    if (window.activitiesMarkers == null) window.activitiesMarkers = [];
    window.activitiesMarkers[window.activitiesMarkers.length] = marker;
}

function removeActivityFromMap(isEvent, eventId) {
    if (window.map && window.activitiesMarkers) {
        var uniqueEventId = (isEvent + "," + eventId);
        for (var i = 0; i < window.activitiesMarkers.length; i++) {
            var marker = window.activitiesMarkers[i];
            if (marker && (typeof (marker.uniqueEventId) == "string") && (marker.uniqueEventId == uniqueEventId)) {
                window.map.removeOverlay(marker);
                removeArrayMember(window.activitiesMarkers, marker);
                break;
            }
        }
    }
}

function showSearchResult(showStayingPlace) {
    closeEdit();
    if (window.map) {
        var bounds = null;
        var info = window.searchResult;
        if (info) {
            window.searchResultMarkers = [];
            bounds = new GLatLngBounds();
            for (var i = 0; i < info.length; i++) {
                if (info[i].length > 6) {
                    var serviceId = info[i][4];
                    var marker = createMarker(info[i][0], info[i][1], info[i][2], info[i][3], serviceId, info[i][5], info[i][6]);
                    marker.serviceId = serviceId;
                    window.map.addOverlay(marker);
                    window.searchResultMarkers[window.searchResultMarkers.length] = marker;
                    GEvent.addListener(marker, "mouseover", markerMouseOver);
                    GEvent.addListener(marker, "mouseout", markerMouseOut);
                    bounds.extend(marker.getLatLng());
                }
            }
        }
        if (bounds != null) {
            if ((showStayingPlace == true) && (window.stayingPlace != null))
                bounds.extend(window.stayingPlace.getLatLng());
            window.map.setZoom(window.map.getBoundsZoomLevel(bounds));
            window.map.setCenter(bounds.getCenter());
        }
    }
}

function getSearchResultMarker(serviceId) {
    var marker = null;
    if (window.searchResultMarkers) {
        for (var i = 0; i < window.searchResultMarkers.length; i++) {
            marker = window.searchResultMarkers[i];
            if (marker.serviceId && (marker.serviceId == serviceId))
                break;
            else
                marker = null;
        }
    }
    return marker;
}

function serviceCellMouseOver(serviceId) {
    var marker = getSearchResultMarker(serviceId);
    if (marker) marker.setImage(window.mapIconPath + "green_flag.png");
    if (window.IE) {
        var elem = $get("ServiceCell_" + serviceId);
        if (elem) {
            elem.className += " hover";
            if (elem.className.indexOf("tdResultHovered") == -1) elem.className += " tdResultHovered";
        }
    }
}

function serviceCellMouseOut(serviceId) {
    var marker = getSearchResultMarker(serviceId);
    if (marker) marker.setImage(window.mapIconPath + "blue_flag.png");
    if (window.IE) {
        var elem = $get("ServiceCell_" + serviceId);
        if (elem) elem.className = elem.className.replace(" hover", "");
    }
}

function markerMouseOver() {
    this.setImage(window.mapIconPath + "green_flag.png");
    var elem = $get("ServiceCell_" + this.serviceId);
    if (elem) elem.className += " hover";
}

function markerMouseOut() {
    this.setImage(window.mapIconPath + "blue_flag.png");
    var elem = $get("ServiceCell_" + this.serviceId);
    if (elem) elem.className = elem.className.replace(" hover", "");
}

function deleteConfirm(arg) {
    if (arg) return arg;
    else return false;
}

function deleteEvent(arg) {
    if (arg) closeEdit();
}

function restoreMapState() {
    if (window.mapState) collapse(window.mapState[0], window.mapState[1]);
}
/*
function collapse(el, commandName) {
    if (typeof (commandName) != "string") commandName = $get(el).className;
    window.mapState = [el, commandName];
    switch (el) {
        case "aMinimizeCal":
            switch (commandName) {
                case "minimize":
                    $get("trCalendar").style.display = "none";
                    $get("trGoogleMap").style.display = "block";
                    $get("map_canvas").style.height = "546px";

                    $get("aMinimizeCal").className = "restore";
                    $get("aMinimizeCal").title = "Dual View";
                    $get("aCollapseCal").className = "maximize";
                    $get("aCollapseCal").title = "Maximize";
                    $get("aMinimizeMap").className = "minimize";
                    $get("aMinimizeMap").title = "Minimize";
                    $get("aCollapseMap").className = "restore";
                    $get("aCollapseMap").title = "Dual View";

                    setDivGoogleMapBg(546);
                    $get("divCalContentHeightField").value = "";
                    break;

                case "restore":
                    $get("divCalContent").style.height = "236px";
                    $get("map_canvas").style.height = "290px";
                    $get("trCalendar").style.display = "block";
                    $get("trGoogleMap").style.display = "block";

                    $get("aMinimizeCal").className = "minimize";
                    $get("aMinimizeCal").title = "Minimize";
                    $get("aCollapseCal").className = "maximize";
                    $get("aCollapseCal").title = "Maximize";
                    $get("aMinimizeMap").className = "minimize";
                    $get("aMinimizeMap").title = "Minimize";
                    $get("aCollapseMap").className = "maximize";
                    $get("aCollapseMap").title = "Maximize";

                    setDivCalendarBg();
                    setDivGoogleMapBg();
                    $get("divCalContentHeightField").value = "236";
                    break;
            }
            break;

        case "aCollapseCal":
            switch (commandName) {
                case "restore":
                    $get("divCalContent").style.height = "236px";
                    $get("map_canvas").style.height = "290px";
                    $get("trCalendar").style.display = "block";
                    $get("trGoogleMap").style.display = "block";

                    $get("aMinimizeCal").className = "minimize";
                    $get("aMinimizeCal").title = "Minimize";
                    $get("aCollapseCal").className = "maximize";
                    $get("aCollapseCal").title = "Maximize";
                    $get("aMinimizeMap").className = "minimize";
                    $get("aMinimizeMap").title = "Minimize";
                    $get("aCollapseMap").className = "maximize";
                    $get("aCollapseMap").title = "Maximize";

                    setDivCalendarBg();
                    setDivGoogleMapBg();
                    $get("divCalContentHeightField").value = "236";
                    break;

                case "maximize":
                    $get("divCalContent").style.height = "520px";
                    $get("trGoogleMap").style.display = "none";
                    $get("trCalendar").style.display = "block";

                    $get("aMinimizeCal").className = "minimize";
                    $get("aMinimizeCal").title = "Minimize";
                    $get("aCollapseCal").className = "restore";
                    $get("aCollapseCal").title = "Dual View";
                    $get("aMinimizeMap").className = "restore";
                    $get("aMinimizeMap").title = "Dual View";
                    $get("aCollapseMap").className = "maximize";
                    $get("aCollapseMap").title = "Maximize";

                    setDivCalendarBg(576);
                    $get("divCalContentHeightField").value = "520";
                    break;
            }
            break;

        case "aMinimizeMap":
            switch (commandName) {
                case "minimize":
                    $get("divCalContent").style.height = "520px";
                    $get("trGoogleMap").style.display = "none";
                    $get("trCalendar").style.display = "block";

                    $get("aMinimizeCal").className = "minimize";
                    $get("aMinimizeCal").title = "Minimize";
                    $get("aCollapseCal").className = "restore";
                    $get("aCollapseCal").title = "Dual View";
                    $get("aMinimizeMap").className = "restore";
                    $get("aMinimizeMap").title = "Dual View";
                    $get("aCollapseMap").className = "maximize";
                    $get("aCollapseMap").title = "Maximize";

                    setDivCalendarBg(576);
                    $get("divCalContentHeightField").value = "520";
                    break;

                case "restore":
                    $get("divCalContent").style.height = "236px";
                    $get("map_canvas").style.height = "290px";
                    $get("trCalendar").style.display = "block";
                    $get("trGoogleMap").style.display = "block";

                    $get("aMinimizeCal").className = "minimize";
                    $get("aMinimizeCal").title = "Minimize";
                    $get("aCollapseCal").className = "maximize";
                    $get("aCollapseCal").title = "Maximize";
                    $get("aMinimizeMap").className = "minimize";
                    $get("aMinimizeMap").title = "Minimize";
                    $get("aCollapseMap").className = "maximize";
                    $get("aCollapseMap").title = "Maximize";

                    setDivCalendarBg();
                    setDivGoogleMapBg();
                    $get("divCalContentHeightField").value = "236";
                    break;
            }
            break;

        case "aCollapseMap":
            switch (commandName) {
                case "restore":
                    $get("divCalContent").style.height = "236px";
                    $get("map_canvas").style.height = "290px";
                    $get("trCalendar").style.display = "block";
                    $get("trGoogleMap").style.display = "block";

                    $get("aMinimizeCal").className = "minimize";
                    $get("aMinimizeCal").title = "Minimize";
                    $get("aCollapseCal").className = "maximize";
                    $get("aCollapseCal").title = "Maximize";
                    $get("aMinimizeMap").className = "minimize";
                    $get("aMinimizeMap").title = "Minimize";
                    $get("aCollapseMap").className = "maximize";
                    $get("aCollapseMap").title = "Maximize";

                    setDivCalendarBg();
                    setDivGoogleMapBg();
                    $get("divCalContentHeightField").value = "236";
                    break;

                case "maximize":
                    $get("trCalendar").style.display = "none";
                    $get("trGoogleMap").style.display = "block";
                    $get("map_canvas").style.height = "546px";

                    $get("aMinimizeCal").className = "restore";
                    $get("aMinimizeCal").title = "Dual View";
                    $get("aCollapseCal").className = "maximize";
                    $get("aCollapseCal").title = "Maximize";
                    $get("aMinimizeMap").className = "minimize";
                    $get("aMinimizeMap").title = "Minimize";
                    $get("aCollapseMap").className = "restore";
                    $get("aCollapseMap").title = "Dual View";

                    setDivGoogleMapBg(546);
                    $get("divCalContentHeightField").value = "";
                    break;
            }
            fixViewMenu();
            break;
    }
}
*/
function onDragDrop(e, id) {
    var day = 1
    var hour = 0;
    var minute = 0;
    if (id != null) {
        var parts = id.split("_");
        var l = parts.length;
        day = parts[l - 3];
        hour = parts[l - 2];
        minute = parts[l - 1];
    }
    var dragEl = this.getDragEl();
    var serviceId = dragEl.getAttribute("serviceid");
    var categoryId = dragEl.getAttribute("categoryid");
    var osw = parseInt(dragEl.getAttribute("osw"));
    if (isNaN(osw)) osw = 1;
    var cell = $get(id);
    var anim = true;
    var y = 130;
    if (window.IE) y -= document.documentElement.scrollTop;
    if ((tempY > y) && (tempY < (y + parseInt($get("divCalContent").style.height)))) {
        if (osw == 1) {
            anim = false;
            dragEl.style.display = "none";
            openServiceWindow(serviceId, categoryId, day, hour, minute);
        }
        else if ((id != null) && cell) {
            var row = cell.parentNode;
            if (row) {
                var table = row.parentNode;
                if (table) {
                    var rowsCount = 0;
                    var rows = table.rows;
                    var handleEl = $get(this.handleElId);
                    var rid = handleEl.getAttribute("rid");
                    var requiredRowsCount = parseInt(handleEl.getAttribute("rs"));
                    if (isNaN(requiredRowsCount)) requiredRowsCount = 1;
                    var i = 0;
                    var rowSpan = 1;
                    var re = 1;
                    for (i = row.rowIndex; i < rows.length; i++) {
                        rowSpan = parseInt(rows[i].getAttribute("rs"));
                        if (isNaN(rowSpan)) rowSpan = 1;
                        re = parseInt(rows[i].getAttribute("re"));
                        if (isNaN(re)) re = 0;
                        if ((re > 0) || (rid == rows[i].getAttribute("rid")))
                            rowsCount += rowSpan;
                        else
                            break;
                    }
                    if (rowsCount < requiredRowsCount) {
                        if (i >= rows.length) {
                            var currentCell = row.parentNode.parentNode.parentNode;
                            if (currentCell != null) {
                                var nextCell = currentCell.nextSibling;
                                if ((nextCell != null) && (!(nextCell.tagName && (nextCell.tagName == "TD")))) nextCell = nextCell.nextSibling;
                                do {
                                    if (nextCell != null) {
                                        var tables = nextCell.getElementsByTagName("TABLE");
                                        if (tables.length > 0) {
                                            rows = tables[0].rows;
                                            for (i = 0; i < rows.length; i++) {
                                                rowSpan = parseInt(rows[i].getAttribute("rs"));
                                                if (isNaN(rowSpan)) rowSpan = 1;
                                                re = parseInt(rows[i].getAttribute("re"));
                                                if (isNaN(re)) re = 0;
                                                if ((re > 0) || (rid == rows[i].getAttribute("rid")))
                                                    rowsCount += rowSpan;
                                                else {
                                                    nextCell = null;
                                                    break;
                                                }
                                            }
                                        }
                                        currentCell = nextCell;
                                    }
                                    if (currentCell != null) {
                                        nextCell = currentCell.nextSibling;
                                        if ((nextCell != null) && (!(nextCell.tagName && (nextCell.tagName == "TD")))) nextCell = nextCell.nextSibling;
                                    }
                                }
                                while ((nextCell != null) && (rowsCount < requiredRowsCount));
                            }
                        }
                    }
                    if (rowsCount >= requiredRowsCount) {
                        dragEl.style.display = "none";
                        var startIndex = this.handleElId.indexOf("DragImage_");
                        if (startIndex > -1) {
                            startIndex = startIndex + 10;
                            var endIndex = this.handleElId.indexOf("_", startIndex);
                            if (endIndex > -1) {
                                var isEvent = this.handleElId.substring(startIndex, endIndex);
                                var eventId = this.handleElId.substr(endIndex + 1);
                                var elem = $get("divCalContent");
                                if (elem) window.stayPlannerScrollTop = elem.scrollTop;
                                anim = false;
                                updateCalendarPanel("EventDrop," + eventId + "," + isEvent + "," + day + "," + hour + "," + minute);
                            }
                        }
                    }
                }
            }
        }
    }
    if (anim) {
        var m = new YAHOO.util.Motion(this.dragElId, { points: { to: YAHOO.util.Dom.get(this.handleElId).startPos} }, 0.3, YAHOO.util.Easing.easeOut).animate();
    }
    this.setDragElId(this.handleElId);
}

function onInvalidDrop(e) {
    var m = new YAHOO.util.Motion(this.dragElId, { points: { to: YAHOO.util.Dom.get(this.handleElId).startPos} }, 0.3, YAHOO.util.Easing.easeOut).animate();
    this.setDragElId(this.handleElId);
}

function startDrag(x, y) {
    var el = $get(this.getDragEl().getAttribute("DragDiv"));
    el.style.display = "inline";
    el.setAttribute("dragStarted", "1");
    this.setDragElId(el.id);
}

function onMouseDown(e) {
    var el = $get(this.getDragEl().getAttribute("DragDiv"));
    el.style.display = "inline";

    var ScrollTop = document.body.scrollTop;
    var ScrollLeft = document.body.scrollLeft;
    if (ScrollTop == 0) {
        if (window.pageYOffset)
            ScrollTop = window.pageYOffset;
        else
            ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
    }
    if (ScrollLeft == 0) {
        if (window.pageXOffset)
            ScrollLeft = window.pageXOffset;
        else
            ScrollLeft = (document.body.parentElement) ? document.body.parentElement.scrollLeft : 0;
    }
    getMouseXY(e);
    tempY = tempY + ScrollTop;
    tempX = tempX + ScrollLeft;

    el.style.left = tempX + "px";
    el.style.top = tempY + "px";
}

function onMouseUp(e) {
    var dragDivId = this.getDragEl().getAttribute("DragDiv");
    if (dragDivId) {
        var el = $get(dragDivId);
        if (el) {
            if (!el.getAttribute("dragStarted")) el.style.display = "none";
            el.removeAttribute("dragStarted");
            if (window.IE) {
                var serviceId = el.getAttribute("serviceId");
                var marker = getSearchResultMarker(serviceId);
                if (marker) marker.setImage(window.mapIconPath + "blue_flag.png");
                var elem = $get("ServiceCell_" + serviceId);
                if (elem) {
                    elem.className = elem.className.replace(" hover", "");
                    elem.className = elem.className.replace(" tdResultHovered", "");
                }
            }
        }
    }
}

function initializeDragNDropSources(elemIdArray) {
    for (var i = 0; i < elemIdArray.length; i++) {
        var el = $get(elemIdArray[i]);
        if (el) {
            el.startPos = YAHOO.util.Dom.getXY(el);
            var dd = new YAHOO.util.DD(el);
            dd.startDrag = startDrag;
            dd.onMouseDown = onMouseDown;
            dd.onMouseUp = onMouseUp;
            dd.onDragDrop = onDragDrop;
            dd.onInvalidDrop = onInvalidDrop;
        }
    }
    initializeDragNDropTargets();
}

function initializeDragNDropTargets(elemIdArray) {
    if (elemIdArray)
        window.DragNDropTargets = elemIdArray;
    else
        elemIdArray = window.DragNDropTargets;
    if (elemIdArray) {
        for (var i = 0; i < elemIdArray.length; i++) {
            var dd = new YAHOO.util.DDTarget(elemIdArray[i]);
        }
    }
}

function scrollDivToElement(divElementId, elementId) {
    var divElement = $get(divElementId);
    var element = $get(elementId);
    if (divElement && element) divElement.scrollTop = element.offsetTop;
}

function scrollDivCalContent() {
    var elem = $get("divCalContent");
    if (elem) {
        if (!isNaN(parseInt(window.stayPlannerScrollTop)))
            elem.scrollTop = window.stayPlannerScrollTop;
        else
            elem.scrollTop = 480;
    }
}

function addHookedupValidatedValidator(id) {
    if (typeof (window.hookedupValidatedValidators) == "undefined") window.hookedupValidatedValidators = [];
    var add = true;
    for (var i = 0; i < window.hookedupValidatedValidators.length; i++) {
        if (window.hookedupValidatedValidators[i] == id) {
            add = false;
            break;
        }
    }
    if (add) window.hookedupValidatedValidators[window.hookedupValidatedValidators.length] = id;
}

function hookupAllValidators() {
    window.hookedupValidatedValidators = [];
    if (typeof (Page_Validators) == "undefined") return;
    for (var i = 0; i < Page_Validators.length; i++) {
        var val = Page_Validators[i];
        if (val) {
            val.display = "None";
            val.originalevaluationfunction = val.evaluationfunction;
            val.evaluationfunction = hookedupValidatorEvaluateIsValid;
        }
    }
}

function hookedupValidatorEvaluateIsValid(val) {
    var valIsValid = val.originalevaluationfunction(val);
    if ((typeof (event) != "undefined") && (event != null)) return valIsValid;
    addHookedupValidatedValidator(val.id);
    if (typeof (Page_Validators) != "undefined") {
        var count = Page_Validators.length;
        if (window.hookedupValidatedValidators.length == count) {
            window.hookedupValidatedValidators = [];
            var str = "";
            for (var i = 0; i < count; i++) {
                var validator = Page_Validators[i];
                if (validator) {
                    var validatorIsValid = validator.isvalid;
                    if (validator.id == val.id) validatorIsValid = valIsValid;
                    if ((validatorIsValid == false) && (typeof (validator.errormessage) == "string"))
                        str += validator.errormessage + "<br />";
                }
            }
            if (str.length > 0) showAlertMessage(str);
        }
    }
    return valIsValid;
}
function showValidationMessage() {
    var str = "";
    for (var i = 0; i < Page_Validators.length; i++) {
        var validator = Page_Validators[i];
        if (validator) {
            var validatorIsValid = validator.isvalid;
            if ((validatorIsValid == false) && (typeof (validator.errormessage) == "string"))
                str += validator.errormessage + "<br />";
        }
    }
    if (str.length > 0) showAlertMessage(str);
}
function removeArrayMember(source, member) {
    if ((!source) || (source.length < 1)) return;
    for (var i = 0; i < source.length; i++) {
        if (source[i] == member) {
            source.splice(i, 1);
            return;
        }
    }
}

function findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent)
        while (1) {
        curtop += obj.offsetTop;
        if (!obj.offsetParent)
            break;
        obj = obj.offsetParent;
    }
    else if (obj.y)
        curtop += obj.y;
    return curtop;
}

function startDateSelected(startDatePicker, eventArgs, endDatePickerId) {
    var endDatePicker = $find(endDatePickerId);
    var d = eventArgs.get_newDate();
    if (d) {
        var hours = d.getHours();
        if (hours == 23)
            d.setMinutes(59);
        else {
            hours++;
            d.setHours(hours);
        }
        endDatePicker.set_selectedDate(d);
    }
}

Date.prototype.addDays = function(days) {
    this.setDate(this.getDate() + days);
}

function startDateSelected2(startDatePicker, eventArgs, endDatePickerId) {
    var endDatePicker = $find(endDatePickerId);
    var d = eventArgs.get_newDate();
    if (d) {
        d.addDays(3);
        endDatePicker.set_selectedDate(d);
    }
}

function endDateSelected(endDatePicker, eventArgs, startDatePickerId) {
    var startDatePicker = $find(startDatePickerId);
    var d = eventArgs.get_newDate();
    if (d) {
        var sd = startDatePicker.get_selectedDate();
        //        if ((d - sd) < 3540000) {
        //            var hours = sd.getHours();
        //            hours++;
        //            sd.setHours(hours);
        //            endDatePicker.set_selectedDate(sd);
        //        }
    }
}

function toggleElement(elemId) {
    var elem = $get(elemId);
    if (elem) elem.style.display = ((elem.style.display == "none") ? "block" : "none");
}

function preventBackspace(e) {
    var k = (e.keyCode ? e.keyCode : (e.which ? e.which : null));
    if (k == 8) {
        var t = (e.target ? e.target : (e.srcElement ? e.srcElement : null));
        if (t && t.tagName && (!t.readOnly) && ((t.type && /(password)|(text)|(file)/.test(t.type.toLowerCase())) || (t.tagName.toLowerCase() == "textarea")))
            return true;
        if (e.preventDefault) e.preventDefault();
        return false;
    }
}

function validateText(sender, args) {
    var text = unescape(args.Value);
    args.IsValid = ((text.indexOf("<") == -1) && (text.indexOf(">") == -1));
    return args.IsValid;
}

function showDateTimePickerPopupOverlay(sender, eventArgs) {
    var popup = eventArgs.get_popupControl();
    var popupElem = popup.get_element();
    var b = detectBrowser();
    if (b == 6) {
        var frm = document.getElementById("DateTimePickerPopupOverlay");
        if (frm == null) {
            frm = document.createElement("IFRAME");
            frm.id = "DateTimePickerPopupOverlay";
            frm.frameBorder = 0;
            frm.style.position = "absolute";
            frm.style.zIndex = -1;
        }
        frm.width = popupElem.offsetWidth;
        frm.height = popupElem.offsetHeight;
        frm.style.top = popupElem.offsetTop + "px";
        frm.style.left = popupElem.offsetLeft + "px";
        popupElem.parentNode.insertBefore(frm, popupElem);
    }
    if (window.rtl) {
        var isCalendar = (popup == sender.get_calendar());
        var d = 0;
        var url = document.location.href.toLowerCase();
        if (url.indexOf("stayplanneredit.aspx") != -1) {
            if (isCalendar) d = ((b == "ff") ? 54 : 58);
        }
        else if (url.indexOf("activityedit.aspx") != -1) {
            if (isCalendar)
                d = ((b == "ff") ? 51 : 55);
            else
                d = ((b == "ff") ? 101 : 105);
        }
        else if (url.indexOf("serviceeventedit.aspx") != -1) {
            if (isCalendar)
                d = ((b == "ff") ? 50 : 56);
            else
                d = ((b == "ff") ? 100 : 66);
        }
        else if (url.indexOf("default.aspx") != -1) {
            if (isCalendar)
                d = ((b == "ff") ? 56 : 81);
        }

        if (d > 0) {
            var p = popupElem.parentNode.parentNode;
            var l = (parseInt(p.style.left) - d);
            p.style.left = l + "px";
        }
    }
}

function dateTimePickerPopupOpening(sender, eventArgs) {
    setTimeout(function() { showDateTimePickerPopupOverlay(sender, eventArgs); }, 10);
}

function SizeToFit() {
    var oWnd = getRadWindow();
    var browserDet = detectBrowser();
    var url = oWnd.GetUrl();
    var go = false;
    var lang = 1;

    if (document.getElementById('curLang'))
        lang = document.getElementById('curLang').value;

    var w, h;
    if (url.indexOf('SignIn.aspx') != -1)// sign in
    {
        w = 340;
        if (browserDet == 7)
            h = 240;
        else if (browserDet == 6) {
            w = 339;
            h = 241;
        }
        else {
            h = 225;
        }
        go = true;
    }
    else if (url.indexOf('RegistrationUser.aspx') != -1)// Registration
    {
        w = 588;
        if (browserDet == 7) {
            if (lang == 9)
                h = 408;
            else
                h = 436;
        }
        else if (browserDet == 6) {
            if (lang == 9)
                h = 410;
            else
                h = 438;
        }
        else if (browserDet == "ff") {
            if (lang == 9)
                h = 393;
            else
                h = 420;
        }
        else {
            if (lang == 9)
                h = 393;
            else
                h = 422;
        }
        go = true;
    }
    else if (url.indexOf('ChangeCity.aspx') != -1)//  Select a City 
    {
        w = 463;
        if (browserDet == 7) {
            if (lang == 9)
                h = 400;
            else
                h = 405;
        }
        else if (browserDet == 6) {
            if (lang == 9)
                h = 401;
            else
                h = 405;
        }
        else {
            if (lang == 9)
                h = 406;
            else
                h = 410;
        }
        go = true;
    }
    else if (url.indexOf('PasswordRecovery.aspx') != -1)//  Add Activity   
    {
        w = 416;
        if (browserDet == 7) {
            h = 270;
        }
        else if (browserDet == 6) {
            h = 268;
        }
        else {
            h = 263;
        }
        go = true;
    }
    else if (url.indexOf('UpdateDetails.aspx') != -1) {
        w = 588;
        if (browserDet == 7) {
            if (lang == 9)
                h = 379;
            else
                h = 384;
        }
        else if (browserDet == 6) {
            if (lang == 9)
                h = 381;
            else
                h = 384;
        }
        else if (browserDet == "ff") {
            if (lang == 9)
                h = 364;
            else
                h = 368;
        }
        else {
            if (lang == 9)
                h = 366;
            else
                h = 370;
        }
        go = true;
    }
    else if (url.indexOf('StayPlannerEdit.aspx') != -1) {
        w = 558;
        if (browserDet == 7) {
            if (lang == 9)
                h = 392;
            else
                h = 397;
        }
        else if (browserDet == 6) {
            if (lang == 9)
                h = 396;
            else
                h = 401;
        }
        else if (browserDet == "ff") {
            if (lang == 9)
                h = 382;
            else
                h = 386;
        }
        else {
            if (lang == 9)
                h = 389;
            else
                h = 393;
        }
        go = true;
    }
    else if (url.indexOf('StayPlannerLoad.aspx') != -1) {
        w = 708;
        if (browserDet == 7) {
            if (lang == 9)
                h = 334;
            else
                h = 339;
        }
        else if (browserDet == 6) {
            if (lang == 9)
                h = 334;
            else
                h = 339;
        }
        else {
            if (lang == 9)
                h = 334;
            else
                h = 339;
        }
        go = true;
    }
    else if (url.indexOf('ServiceEventEdit.aspx') != -1) {
        w = 498;
        if (browserDet == 7) {
            if (document.getElementById('tdDif'))
                document.getElementById('tdDif').style.paddingBottom = "6px";
            if (lang == 9)
                h = 444;
            else
                h = 450;
        }
        else if (browserDet == 6) {
            if (document.getElementById('tdDif'))
                document.getElementById('tdDif').style.paddingBottom = "8px";
            if (lang == 9)
                h = 447;
            else
                h = 451;
        }
        else {
            if (document.getElementById('tdDif'))
                document.getElementById('tdDif').style.paddingBottom = "15px";
            if (lang == 9)
                h = 444;
            else
                h = 448;
        }
        go = true;
    }
    else if (url.indexOf('ActivityEdit.aspx') != -1) {
        w = 498;
        if (browserDet == 7) {
            if (lang == 9)
                h = 414;
            else
                h = 418;
        }
        else if (browserDet == 6) {
            if (lang == 9)
                h = 418;
            else
                h = 422;
        }
        else if (browserDet == "ff") {
            if (lang == 9)
                h = 401;
            else
                h = 405;
        }
        else {
            if (lang == 9)
                h = 407;
            else
                h = 412;
        }
        go = true;
    }
    else if (url.indexOf('SendEmail.aspx') != -1) {
        w = 462;
        if (browserDet == 7) {
            if (lang == 9)
                h = 431;
            else
                h = 435;
        }
        else if (browserDet == 6) {
            if (lang == 9)
                h = 431;
            else
                h = 435;
        }
        else {
            if (lang == 9)
                h = 419;
            else
                h = 423;
        }
        go = true;
    }
    else if (url.indexOf('ChangeStatus.aspx') != -1) {
        w = 238;
        if (browserDet == 7) {
            if (lang == 9)
                h = 259;
            else
                h = 288;
        }
        else if (browserDet == 6) {
            if (lang == 9)
                h = 259;
            else
                h = 288;
        }
        else {
            if (lang == 9)
                h = 259;
            else
                h = 288;
        }
        go = true;
    }
    else if (url.indexOf('RateIt.aspx') != -1) {
        w = 315;
        if (browserDet == 7) {
            if (lang == 9)
                h = 415;
            else
                h = 417;
        }
        else if (browserDet == 6) {
            if (lang == 9)
                h = 415;
            else
                h = 417;
        }
        else {
            w = 314
            if (lang == 9)
                h = 423;
            else
                h = 424;
        }
        go = true;
    }
    else if (url.indexOf('JajahCall.aspx') != -1) {
        w = 448;
        if (browserDet == 7) {
            if (lang == 9)
                h = 275;
            else
                h = 274;
        }
        else if (browserDet == 6) {
            if (lang == 9)
                h = 275;
            else
                h = 274;
        }
        else {
            if (lang == 9)
                h = 274;
            else
                h = 272;
        }
        go = true;
    }
    else if (url.indexOf('StayPlannerSearch.aspx') != -1) {
        w = 708;
        if (browserDet == 7) {
            if (lang == 9)
                h = 270;
            else
                h = 278;
        }
        else if (browserDet == 6) {
            if (lang == 9)
                h = 271;
            else
                h = 279;
        }
        else if (browserDet == "ff") {
            if (lang == 9)
                h = 273;
            else
                h = 283;
        }
        else {
            if (lang == 9)
                h = 278;
            else
                h = 286;
        }
        go = true;
    }
    if (go) {
        oWnd.SetWidth(w);
        oWnd.SetHeight(h);
    }
    else {
        window.setTimeout(
        function() {
            w = document.documentElement.scrollWidth + 9;
            h = document.documentElement.scrollHeight + 23;
            oWnd.SetWidth(w);
            oWnd.SetHeight(h);
        }, 100);
    }
}
function noScroll() {
    if (document.documentElement && document.documentElement.scrollTop) {
        var oTop = document.documentElement.scrollTop;
        document.documentElement.scroll = "no";
        document.documentElement.style.overflow = "hidden";
        document.documentElement.scrollTop = oTop;

    } else if (document.body) {
        var oTop = document.body.scrollTop;
        document.body.scroll = "no";
        document.body.style.overflow = "hidden";
        document.body.scrollTop = oTop;
    }
}