﻿function DoSearchByUrl(url) {
    OnBeginSearch();
    
    //Maklarhuset.Web.ObjektSearchCommand.GetSearchResultByUrl(url, DoSearch_Callback);
}

function OnBeginSearch() {
    document.getElementById("listing").style.display = "none";

    var divSearchTips = document.getElementById("divSearchTips");
    if (divSearchTips) {
        divSearchTips.style.display = "none";
        ClearChildNodes(divSearchTips);
    }


    var showAllResults = document.getElementById("showAllResults");
    if (showAllResults) {
        showAllResults.style.display = "none";
    }

    var showingAllResults = document.getElementById("showingAllResults");
    if (showingAllResults) {
        showingAllResults.style.display = "none";
    }

    var showingPartialResults = document.getElementById("showingPartialResults");
    if (showingPartialResults) {
        showingPartialResults.style.display = "none";
    }

    var divHitCount = document.getElementById("divHitCount");
    if (divHitCount) {
        divHitCount.style.display = "none";
    }

    ShowLoading(true);
}


function DoSearch_Callback(result) {
    ShowLoading(false);
    
    if (result.value) {
        var searchResults = result.value;
        if (result.value.IsNewSearch == 1) {
            var txt = document.getElementsByName("blabla");
            var str = txt[0].innerHTML;
            str = str.replace(/Sökningar/, "");
            str = str.replace(/\(/, "");
            str = str.replace(/\)/, "");
            var newstr = "Sökningar (" + (parseInt(str) + 1).toString() + ")";
            txt[0].innerHTML = newstr;
        }

        if (window.location.toString().indexOf("Search.aspx") != -1) {
            var txtSearchString = document.getElementById("txtSearchString");
            txtSearchString.value = decodeURI(searchResults.Details.SearchString);
            eraseCookie('searchstring');
            createCookie('searchstring', txtSearchString.value);
        }

        //var startklarTopBarFull = document.getElementById("startklarTopBarFull");
        //if (startklarTopBarFull) {
        //    startklarTopBarFull.onclick = function() {
        //        StartklarPopupSearch(searchResults)
        //    }
       // }

        if (result.value.ObjektList.length > 0) {
            var theTable = document.getElementById("searchResultTable");
            clearSearchResultTable(theTable);
            showingCampaign = false;

            for (var i = 0; i < result.value.ObjektList.length; i++) {
                var objektList = result.value.ObjektList[i];
                var tableRow = document.createElement("tr");
                tableRow.objektId = objektList.ID;
                tableRow.id = "objektRow" + objektList.ID;
                tableRow.onclick = function() { ExpandObjektDetails(this, this.objektId); /* this.objektIdTick(1); */ };
                tableRow.onmouseover = function() { this.className += " over" };
                tableRow.onmouseout = function() { this.className = this.className.replace(/over/, "") };

                var cellTyp = document.createElement("td");
                cellTyp.className = "typ" + objektList.BostadsTyp;
                var strSpan;
                switch (objektList.BostadsTyp) {
                    case 1:
                        strSpan = "Villa";
                        break;
                    case 2:
                        strSpan = "Fritidshus";
                        break;
                    case 3:
                        strSpan = "Bostadsrätt";
                        break;
                    case 4:
                        strSpan = "Hyresrätt";
                        break;
                    case 5:
                        strSpan = "Tomt";
                        break;
                    case 6:
                        strSpan = "Lantbruk eller gård";
                        break;
                    case 7:
                        strSpan = "Kommersiell fastighet";
                        break;
                    case 8:
                        strSpan = "Andel i bostadsf&ouml;rening";
                        break;
                    case 9:
                        strSpan = "Nybyggnation";
                        break;
                    case 10:
                        strSpan = "Ägarlägenhet";
                        break;
                }
                var elmImg = document.createElement("img");
                elmImg.src = MH_rootPath + "images/listingIconTyp" + objektList.BostadsTyp + ".gif";
                elmImg.alt = strSpan;
                elmImg.title = strSpan;

                cellTyp.appendChild(elmImg);
                tableRow.appendChild(cellTyp);


                var cellOmrade = document.createElement("td");
                cellOmrade.innerHTML = objektList.Omrade;
                tableRow.appendChild(cellOmrade);

                var cellAdress = document.createElement("td");
                cellAdress.innerHTML = objektList.Adress;
                tableRow.appendChild(cellAdress);

                var cellRum = document.createElement("td");
                cellRum.innerHTML = objektList.AntalRum;
                tableRow.appendChild(cellRum);

                var cellBoYta = document.createElement("td");
                cellBoYta.innerHTML = objektList.BoYta;
                tableRow.appendChild(cellBoYta);

                var cellTomtYta = document.createElement("td");
                cellTomtYta.innerHTML = objektList.TomtYta.replace(/ /g, "&nbsp;");
                tableRow.appendChild(cellTomtYta);

                var cellPris = document.createElement("td");
                cellPris.innerHTML = objektList.Pris.replace(/ /g, "&nbsp;");
                tableRow.appendChild(cellPris);

                var cellVisning = document.createElement("td");
                if (objektList.NastaVisning.length > 0) {
                    cellVisning.innerHTML = objektList.NastaVisning;
                }
                else {
                    cellVisning.innerHTML = "-";
                }
                tableRow.appendChild(cellVisning);

                /*var dateVisning = objektList.NastaVisning;
                dateVisning.setUTCDate(dateVisning.getUTCDate() + 1);
                var cellVisning = document.createElement("td");
                var dateNow = new Date();
                var bShowVisning = false;
					
					if(dateVisning.getUTCFullYear() >= dateNow.getUTCFullYear())
                {
                if (dateVisning.getUTCMonth() > dateNow.getUTCMonth())
                {
                bShowVisning = true;
                }
                else if (dateVisning.getUTCMonth() == dateNow.getUTCMonth())
                {
                if (dateVisning.getUTCDate() >= dateNow.getUTCDate())
                {
                bShowVisning = true;
                }
                }
                }
					
					if (bShowVisning)
                {
                cellVisning.innerHTML = "" + padout(dateVisning.getUTCFullYear()-2000) + padout(dateVisning.getMonth() + 1) + padout(dateVisning.getDate());
                }
                else
                {
                cellVisning.innerHTML = "-"
                }
                tableRow.appendChild(cellVisning);
                */

                var dateAndrad = new Date(objektList.SenastAndrad);
                var cellAndrad = document.createElement("td");
                if (dateAndrad.getFullYear() > 2000) {
                    cellAndrad.innerHTML = "" + padout(dateAndrad.getUTCFullYear() - 2000) + padout(dateAndrad.getMonth() + 1) + padout(dateAndrad.getDate());
                }
                else {
                    cellAndrad.innerHTML = "-";
                }
                tableRow.appendChild(cellAndrad);

                var cellFavorit = document.createElement("td");
                cellFavorit.id = "objektRowFavoriteCol" + objektList.ID;
                elmImg = document.createElement("img");

                //if (!MH_profileIsAnonymous) { ////////////////////////////////#####
                if (objektList.IsFavorite == "true") {
                    elmImg.src = MH_rootPath + "images/listingIconFavorite.gif";
                    elmImg.alt = "favorit";
                    elmImg.title = "Ta bort från favoriter"
                }
                else {
                    elmImg.src = MH_rootPath + "images/listingIconNoFavorite.gif";
                    elmImg.alt = "";
                    elmImg.title = "Lägg till bland favoriter"
                }

                elmImg.onclick = toggleFavorite;
                //}
                //else {
                //    elmImg.src = MH_rootPath + "images/listingIconNoFavorite.gif";
                //    elmImg.alt = "";
                //    elmImg.title = "Du m\u00E5ste vara inloggad medlem f\u00F6r att spara favoriter"
                //    elmImg.onclick = function() { alert("Du m\u00E5ste vara inloggad medlem f\u00F6r att spara favoriter"); }
                // }

                cellFavorit.appendChild(elmImg);

                //cellFavorit.innerHTML = objektList.IsFavorite;
                tableRow.appendChild(cellFavorit);

                //if (objektList.IsFavorite) {
                //    tableRow.className = "favorite";
                //}

                theTable.appendChild(tableRow);
                theTable.parentNode.style.display = "block";
            }

            var showingAllResults = document.getElementById("showingAllResults");
            var showAllResults = document.getElementById("showAllResults");
            var showingPartialResults = document.getElementById("showingPartialResults");
            var HitCount = document.getElementById("HitCount");
            var divHitCount = document.getElementById("divHitCount");

            if (divHitCount != null) {
                divHitCount.style.display = "block";
                HitCount.innerHTML = result.value.Details.HitCount;
                divHitCount.firstChild.style.visibility = "visible";
            }

            if (result.value.Details.HitCount > 300 && result.value.Details.SearchCommand.ResultCount != 0) {
                showingPartialResults.style.display = "block";
                var showingPartialResultsHitCount = document.getElementById("showingPartialResultsHitCount");
                showingPartialResultsHitCount.innerHTML = result.value.Details.HitCount;
            }
            else if (result.value.Details.HitCount > result.value.ObjektList.length && result.value.Details.SearchString.length > 0) {
                // More results are available
                showAllResults.style.display = "block";
                var showAllResultsHitCount = document.getElementById("showAllResultsHitCount");
                showAllResultsHitCount.innerHTML = result.value.Details.HitCount;

                var showAllResultsText = document.getElementById("showAllResultsText");
                showAllResultsText.style.display = (result.value.Details.HitCount > 100 ? "block" : "none");
            }
            else if (result.value.Details.HitCount > 0) {
                showingAllResults.style.display = "block";
                var showingAllResultsHitCount = document.getElementById("showingAllResultsHitCount");
                showingAllResultsHitCount.innerHTML = result.value.Details.HitCount;
            }
            else {
                showAllResults.style.display = "none";
            }
        }

      // PopulateSearchTips(result.value.Details.SearchTips);
        AdvancedSearchToggled(); /// ###
        //refresh
        
        var divNoResults = document.getElementById("divNoResults");
        //			divNoResults.parentNode.parentNode.parentNode.parentNode.style.display = (result.value.ObjektList.length > 0 ? "none" : "block");  // Wrapperdivs
        if( divNoResults )
            divNoResults.style.display = (result.value.ObjektList.length > 0 ? "none" : "block");
        
        document.body.style.display = "block"; // IE bug fix

        //if(typeof Instadia_sendEvent == "function") {Instadia_sendEvent("011FI", "Search # " + txtSearchString.value);}
        // if (window.location.toString().indexOf("Search.aspx") != -1 && getUrlParameter("from") != "sokningar" ) {
        if( searchResults.IsNewSearch == 1 ) {
            fade('activityAlert', 'msgAlert', '<h4>Sökningen finns nu under fliken "<a href=\"/MinSida/Sokningar.aspx\">Sökningar</a>"</h4>Där kan du spara sökningen som favorit.');
        }
    }
    else if (result.error) {
        logError(result);
    }
    updateSortHeaders();

    tickerSearch();
}

function getFlashMovie(movieName) {

    var isIE = navigator.appName.indexOf("Microsoft") != -1;
    return (isIE) ? window[movieName] : document[movieName];

    return document.getElementById(movieName);
}

function tickerSearch() {
 //  alert("update 1: " + urlpath);
   // getFlashMovie("tickerflash").updateTicker("default");

    //
    var urlpath;

    if (window.location.toString().indexOf("Search.aspx") != -1)
        urlpath = "search";
    else if (window.location.toString().indexOf("Sokningar.aspx") != -1)
        urlpath = "sokningar";
    else if (window.location.toString().indexOf("Visningar.aspx") != -1)
        urlpath = "visningar";
    else if (window.location.toString().indexOf("Bostader.aspx") != -1)
        urlpath = "bostader";
    else
        urlpath = "default";

/*
    if( getFlashMovie("tickerflash") ) {
        getFlashMovie("tickerflash").updateTicker(urlpath, Math.round(1000 * Math.random()).toString());
    }
    */
 //   alert("update 2");
}

function ShowLoading(loading) {
    var ele = document.getElementById("divLoading");
    ele.style.display = (loading ? "block" : "none");
}

function showAllResults() {
    if (window.location.href.indexOf("resultCount") > -1) {
        window.location.href = window.location.href.replace(/&?resultCount=[^&]*/, "&resultCount=0");
    }
    else {
        window.location.href += "&resultCount=0";
    }
}

function clearSortHighlight() {
    var arrA = document.getElementById("listing").getElementsByTagName("thead")[0].getElementsByTagName("a");
    for (var i = 0; i < arrA.length; i++) {
        arrA[i].className = "";
    }
}

function SortResults(columnName) {
    if (window.location.href.indexOf("sortColumn") > -1) {
        obj = document.getElementById("colHeader" + columnName);

        clearSortHighlight();
        var currentColumn;
        var columnExp = /&?sortColumn=([^&]*)/;
        var match = columnExp.exec(window.location.href);
        if (match != null && match.length > 1) {
            currentColumn = match[1];
            obj = document.getElementById("colHeader" + currentColumn);
        } else {
            currentColumn = "";
        }


        if (currentColumn == columnName) {
            var sortDescending;
            var columnExp = /&?sortDescending=([^&]*)/;
            var match = columnExp.exec(window.location.href);
            if (match != null && match.length > 1) {
                sortDescending = match[1];
                sortDescending = (sortDescending == "true" ? "false" : "true");
            } else {
                sortDescending = "true";
            }

            window.location = window.location.href.replace(/&?sortColumn([^&]*)(&?sortDescending([^&]*))?/, "&sortColumn=" + columnName + "&sortDescending=" + sortDescending);
        }
        else {
            window.location = window.location.href.replace(/&?sortColumn([^&]*)(&?sortDescending([^&]*))?/, "&sortColumn=" + columnName);
        }
    }
    else {
        window.location += "&sortColumn=" + columnName;
    }
}

function updateSortHeaders() {
    var columnExp = /&?sortColumn=([^&]*)/;
    var match = columnExp.exec(window.location.href);
    if (match != null && match.length > 1) {
        currentColumn = match[1];

        if (currentColumn) {
            obj = document.getElementById("colHeader" + currentColumn);

            var sortDescending = true;
            var columnExp = /&?sortDescending=([^&]*)/;
            var match = columnExp.exec(window.location.href);
            if (match != null && match.length > 1) {
                sortDescending = match[1];
                sortDescending = (sortDescending == "true" ? false : true);
            }
            if (sortDescending) {
                obj.className = "sortDesc";
            }
            else {
                obj.className = "sortAsc";
            }
        }
    } else {

        var arrLinks = document.getElementById("listing").getElementsByTagName("thead")[0].getElementsByTagName("a");
        for (var i = 0; i < arrLinks.length; i++) {
            arrLinks[i].className = "";
        }

    }

}

function toggleFavorite(e) {

    if (!e) var e = window.event
    // handle event
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();

    var objektRow = this.parentNode.parentNode;
   



    if (this.src.indexOf("listingIconFavorite.gif") > 0) //är favorit
    {

        Maklarhuset.Web.MHProfileManager.ObjectInsertFavourite(objektRow.objektId, '0');
        this.src = MH_rootPath + "images/listingIconNoFavorite.gif";
        this.alt = "";
        this.title = "Lägg till bland favoriter"
        fade('activityAlert', 'msgAlert', '<h4>Favorit borttagen</h4><p>Kommer inte vara kvar vid nästa besök.</p>');

        //objektRow.className = objektRow.className.replace("favorite", "");
    }
    else {

        Maklarhuset.Web.MHProfileManager.ObjectInsertFavourite(objektRow.objektId, '1');
        this.src = MH_rootPath + "images/listingIconFavorite.gif";
        this.alt = "favorit";
        this.title = "Ta bort från favoriter"

        fade('activityAlert', 'msgAlert', '<h4>Favorit sparad</h4><p>Kommer att vara kvar vid nästa besök.</p>');
        //objektRow.className += " favorite";

    }



}

function clearSearchResultTable(theTable) {
    while (theTable.childNodes.length > 0) {
        theTable.removeChild(theTable.firstChild);
    }
}

function ExpandObjektDetails(sender, id, all) {

    //Is object expanded already?
    if($("#objektRow"+id).hasClass("expanded") && all!="all"){
        
        //Collapse explanation
        $("#objektRow"+id+" + tr").remove();
        $("#objektRow"+id).removeClass("expanded");

    }
    else{

        $.ajax({
            url: "/ajax/User.aspx?command=objectDetails&id=" + id,
            type: "get",
            cache: false,
            dataType: "xml",
            success: function (response) {
                
                //Create object for resultentry
                var resultEntry = {};

                $(response).find("ObjectDetails").each(function () {

                    //Loop through XML elements and create properties
                    $(this).children().each(function () {
                        var property = this.nodeName;
                        if ($(this).children().length == 0) {
                            resultEntry[property] = $(this).text();
                        }
                        else {
                            resultEntry[property] = {};
                            $(this).children().each(function () {
                                var childProperty = this.nodeName;
                                if ($(this).children().length == 0) {
                                    resultEntry[property][childProperty] = $(this).text();
                                }
                                else {
                                    resultEntry[property][childProperty] = {};
                                    $(this).children().each(function () {
                                        resultEntry[property][childProperty][this.nodeName] = $(this).text();
                                    });
                                }
                            });
                        }
                    });

                });

                //Run callback function
                ExpandObjektDetails_Callback({
                    value: resultEntry
                });

            }
        });

        //Maklarhuset.Web.ObjektSearchCommand.GetObjektDetails(id, ExpandObjektDetails_Callback)

    }

}


var showingCampaign = false;
function ExpandObjektDetails_Callback(result) {
   
    if (result.value) {
        var objektDetails = result.value;
        
        var objektRow = document.getElementById("objektRow" + objektDetails.ID);

        if (objektRow && objektRow.className.indexOf("expanded") == -1) {
            
            objektRow.setAttribute("class","expanded");

            var expandedRow = document.createElement("tr");
            expandedRow.className = " objektDetails";

            var newCell = document.createElement("td");
            newCell.setAttribute("colspan", 10);
            newCell.colSpan = 10;
            newCell.innerHTML = '<div class="imageBox">' +
										'<img src="' + MH_rootPath + 'Images/objekt/288/' + objektDetails.BildGUID + '.jpg" alt="" />' +
										'<div class="bCornerTL"></div>' +
										'<div class="bCornerTR"></div>' +
										'<div class="bCornerBL"></div>' +
										'<div class="bCornerBR"></div>' +
									'</div>' +
									'<div class="objektText typ' + objektDetails.BostadsTyp + '">' +
										'<h2>' + objektDetails.Adress + ', ' + objektDetails.Ort + '</h2>' +
										'<p>' + objektDetails.Beskrivning.replace(/\n/g, "<br />") + '</p>' +
										(objektDetails.iBudgivningTypID == "3" || objektDetails.iBudgivningTypID == "1" || objektDetails.iBudgivningTypID == "2" ? '<p class="visning"><strong>Budgivning pågår!</strong></p>' : '') +
										(objektDetails.NastaVisning.length > 0 ? '<p class="visning"><strong>N&auml;sta visning: </strong>' + objektDetails.NastaVisning + '</p>' : '') +
										(objektDetails.GUID != objektDetails.BelongsToProjectGUID ? '<p class="showDescription"><a href="' + MH_rootPath + 'ViewObjekt.aspx?objektid=' + objektDetails.ID + '">Visa beskrivning</a></p>' : '') +
									    (!IsEmpty(objektDetails.BelongsToProjectGUID) ? '<p class="showProject"><a href="' + MH_rootPath + 'Viewproject.aspx?sourceid=' + objektDetails.BelongsToProjectGUID + '">Se projektet</a></p>' : '') +
									    '<p class="showOffice"><a href="' + objektDetails.OfficeURL + '">' + objektDetails.OfficeTitle + '</a></p>' +
									 '</div>';

            expandedRow.appendChild(newCell);
            insertAfter(objektRow.parentNode, expandedRow, objektRow);
            //refresh
            /*objektRow.onclick = function() {
                var objNextSibling = objektRow.nextSibling
                if (objNextSibling) {
                    objektRow.parentNode.removeChild(objNextSibling);
                    /*
                    if (objNextSibling.className.indexOf("campaign") > -1) {
                        objektRow.parentNode.removeChild(objNextSibling);
                        showingCampaign = false;
                    }
                    */
            /*
            }
            this.className = this.className.replace("expanded", "");
            this.onclick = function() { ExpandObjektDetails(this, this.objektId); };
            //refresh
            };
            */
            /*
            if (ShowCampaign && !showingCampaign) {
            var newRow = document.createElement("tr");
            newRow.className = " campaign";
            var newCell = document.createElement("td");
            newCell.colSpan = 10;
            newCell.onclick = function() {
            location.href = MH_rootPath + 'Salja/DubbelBoendekostnadsForsakring.aspx'
            }

            // Build tablecell
            newCell.innerHTML = '<h4>Nu har du som säljer din bostad genom Mäklarhuset möjlighet att skydda dig mot dubbla boendekostnader.</h4>';

            newRow.appendChild(newCell);
            insertAfter(objektRow.parentNode, newRow, expandedRow);
            showingCampaign = true;
            }
            */
        }
    }
    else {
    }
}




function IsEmpty(sToCheck) {
    var sToCheck
    if (sToCheck == null || sToCheck == "") {
        return true
    }
    else
        return false
}

