﻿    //Globals
    var hasBeenLoaded = false;
    var SlidingShow = null;    
    //Const
    var MAX_SIZE = -2; // cmd for max the IE float wnd    
    var TIMER_ROLLOVER = 8000;           
    var NUMBER_OF_SPEAKUPS = 3;
    var SPEAKUP_WITHOUT_ID = -1;    
    var DEFAULT_HTTP_REQUEST = DOMAIN_NAME+"/default.aspx"+location.search.substring(0);
    var SPEKAUP_ID_REQUEST = "&SpeakupId=";    
    var DORY_PREVIEW = "&IsFromPreview=1"

    var DEFAULT_MINIMIZE_HTTP_REQUEST = DOMAIN_NAME+"/DefaultMinimize.aspx"+location.search.substring(0);
    var DEFAULT_HIDE_HTTP_REQUEST = DOMAIN_NAME+"/DefaultClose.aspx"+location.search.substring(0);

    var MAX_HEIGHT = 330;
    var WIN_HEIGHT_REG = -2;
    var WIN_HEIGHT_HIDE = 51;
    var WIN_WIDTH_HIDE = 24;
    var WIN_WIDTH_MIN = 325;
    var WIN_WIDTH_DORY_PREVIEW = 551;
    /// last view state - MUST BE SYNCH WITH INI SETTINGS FILE
    // 1 - hidden
    // 2 - minimized
    // 3 - minimized+preview
    // 4 - maximized
    var UI_STATE_HIDDEN	=	1; // hidden == closed (we mean the same thing)
    var UI_STATE_MIN =		2;
    var UI_STATE_MIN_PREV =	3;
    var UI_STATE_MAX =		4;
    var m_FltWndState = UI_STATE_MIN;
    
    function OnClose()
    {
        // set state to hiden
        ChangeStateTo(UI_STATE_HIDDEN);
    }
    
    function OnLoadFltWnd(FltWndStateNeeded)
    {
        // set state
        m_FltWndState = FltWndStateNeeded;

        // cmd to load flt wnd in the specific state
        window.location = "WSWndCmd::CMD:1229~wParam:0~lParam:"+ m_FltWndState +"~";
        
        // cmd flt wnd size
        SetFltWndSize();
    }

    function ChangeStateTo(FltWndStateNeeded)
    {
        var FltCurrState = m_FltWndState
        m_FltWndState = FltWndStateNeeded;

        //clean url to remove any former state like drilldown or speakup clicked from preview
        //only from maximize view to minimize
 /*       if(FltCurrState == UI_STATE_MAX)
        {
            var qs = new WSQuerystring();
            var CurrentURL = qs.get("UDSideSiteVacuumURL");
//      alert(window.location);
//      alert(CurrentURL);
            DEFAULT_MINIMIZE_HTTP_REQUEST = DOMAIN_NAME+"/DefaultMinimize.aspx?UDSideSiteVacuumURL="+CurrentURL;
            DEFAULT_HIDE_HTTP_REQUEST = DOMAIN_NAME+"/DefaultClose.aspx?UDSideSiteVacuumURL="+CurrentURL;        
        }
*/        
        loading();
        //
        // animations
        
        // if moving from  UI_STATE_MIN_PREV/UI_STATE_MIN  to UI_STATE_HIDDEN - animate
        if ((UI_STATE_MIN_PREV == FltCurrState || UI_STATE_MIN == FltCurrState) && UI_STATE_HIDDEN == m_FltWndState)
        {
            window.location = "WSWndCmd::CMD:1230~wParam:0~lParam:0~";
        }
        // if moving from  UI_STATE_HIDDEN to UI_STATE_MIN UI_STATE_HIDDEN - animate
        else if (UI_STATE_MIN == m_FltWndState && UI_STATE_HIDDEN == FltCurrState)
        {
            window.location = "WSWndCmd::CMD:1230~wParam:0~lParam:0~";
        }
    
        //
        // logic

        // change base URL
        SetFltWndBaseURL();

        // change size
        SetFltWndSize();
        
        // navigate to new page
        NavigateToURL();
    }
    
    function OnDrilldownThisPage()
    {
        window.location ="WSWndCmd::CMD:1227~wParam:drillpopupmenu~lParam:0~";
    }    






    function NavigateToURL()
    {
        // navigate to new page
        if (UI_STATE_MAX == m_FltWndState)
        {
            if (window.location != DEFAULT_HTTP_REQUEST)
                window.location = DEFAULT_HTTP_REQUEST;
        }
        else if (UI_STATE_HIDDEN == m_FltWndState)
        {
            if (window.location != DEFAULT_HIDE_HTTP_REQUEST)
                window.location = DEFAULT_HIDE_HTTP_REQUEST;
        }
        else
        {
            if (window.location != DEFAULT_MINIMIZE_HTTP_REQUEST)
                window.location = DEFAULT_MINIMIZE_HTTP_REQUEST;
        }
    }
    
    function SetFltWndBaseURL()
    {
        if (UI_STATE_MAX == m_FltWndState)
        {
            window.location = "WSWndCmd::CMD:1225~wParam:"+DOMAIN_NAME+"/Default.aspx~lParam:0~";        
        }
        else if (UI_STATE_HIDDEN == m_FltWndState)
        {
            window.location = "WSWndCmd::CMD:1225~wParam:"+DOMAIN_NAME+"/DefaultClose.aspx~lParam:0~";  
            window.location = "WSWndCmd::CMD:1232~wParam:LastBaseURLNavigated~lParam:"+DOMAIN_NAME+"/DefaultClose.aspx~";
        }
        else
        {
            window.location = "WSWndCmd::CMD:1225~wParam:"+DOMAIN_NAME+"/DefaultMinimize.aspx~lParam:0~";        
//            window.location = "WSWndCmd::CMD:1232~wParam:LastBaseURLNavigated~lParam:"+DOMAIN_NAME+"/DefaultMinimize.aspx~";
        }
    }
    
    function SetFltWndSize()
    {
        if (UI_STATE_HIDDEN == m_FltWndState)
        {
            // set the closed size
            resizeWindow(WIN_WIDTH_HIDE,WIN_HEIGHT_HIDE);
        }
        else if (UI_STATE_MIN == m_FltWndState)
        {
            // set the min size
            resizeWindow(WIN_WIDTH_MIN,WIN_HEIGHT_REG);
        }
        else if (UI_STATE_MIN_PREV == m_FltWndState)
        {
            // set the min + preview size
            resizeWindow(WIN_WIDTH_DORY_PREVIEW,WIN_HEIGHT_REG);
        }
        else if (UI_STATE_MAX == m_FltWndState)
        {
            // set the max size
            resizeWindow(MAX_SIZE,MAX_HEIGHT);
        }
    }

    var m_FltWndLastState = UI_STATE_MIN;
    function FltWndMinShowOrHide()
    {
        // switch states
        if (UI_STATE_HIDDEN != m_FltWndState)
        {
            // save last state to show next time
            m_FltWndLastState = m_FltWndState;
            m_FltWndState = UI_STATE_HIDDEN;
        }
        else
        {
            // restore last state
            m_FltWndState = m_FltWndLastState;
        }

        // change base URL
        SetFltWndBaseURL();

        // cmd flt wnd to switch between show and hide
        window.location = "WSWndCmd::CMD:1230~wParam:0~lParam:0~";
    }
    
    function resizeWindow(w,h)
    {
        window.location = "WSWndCmd::CMD:1224~wParam:"+w+"~lParam:"+h+"~";        
    }

    function navigateToSpeakup(SpeakupID)
    {
        m_FltWndState = UI_STATE_MAX;
        SetFltWndBaseURL();
        SetFltWndSize();
        loading();    

        window.location = DEFAULT_HTTP_REQUEST + SPEKAUP_ID_REQUEST + SpeakupID + DORY_PREVIEW;
    }
    
    function setSiteVacuumURL(url)
    {
        window.location = "WSWndCmd::CMD:1225~wParam:"+url+"~lParam:"+0+"~";        
    }

    function MinimizePreview()
    {
        if (UI_STATE_MIN_PREV == m_FltWndState)
        {
            document.getElementById("background").style.display = "none";
            document.getElementById("wrapper").className = "wrapper01 bg01";            
            document.getElementById("preview").className = "preview";        
            document.getElementById("previewhref").title = "Show Preview";
            document.getElementById("previewhref").className = "showpreview";            
            resizeWindow(WIN_WIDTH_MIN,WIN_HEIGHT_REG);      
            m_FltWndState = UI_STATE_MIN;
        }
        else
        {
            document.getElementById("background").style.display = "block";
            document.getElementById("wrapper").className = "wrapper02 bg02";
            document.getElementById("preview").className = "preview";
            document.getElementById("previewhref").title = "Hide Preview";
            document.getElementById("previewhref").className = "hidepreview";            
            setPreviewOnScreen();  
            resizeWindow(WIN_WIDTH_DORY_PREVIEW,WIN_HEIGHT_REG);                  
            m_FltWndState = UI_STATE_MIN_PREV;
        }
    }

    function setMyFriendsOnScreen()
    {
        try
        {
            if( null == loggedInUser())
            {
                onNoFriends();
                return;
            }            
            window.location = 'WSWndCmd::CMD:1231~wParam:ShowOthersMyLocation~lParam:ShowOthersMyLocationParam~';        
            var CurrentMyFriendsStatusState = ("false" == $get("showothersmylocationparam").innerText)?false:true;
            if(false == CurrentMyFriendsStatusState)
            {
                onNoFriends();
                return;            
            }
                
            $get("loadingFriends").style.display = "block";
            WS_SiteVisitingManager.GetFriendsVisits(1,onMyFriendsSuccess,onMyFriendsFail);
        }
        catch(e)
        {
            // write err to dbg wnd
            window.location = "WSWndCmd::CMD:1227~wParam:tracemessage~lParam:setMyFriendsOnScreen_could_not_be_executed_due_to_an_error-"+e.message.replace( new RegExp( " ", "g" ), "_" )+"~";                 
            onMyFriendsFail();
        }
    }
    
    function onMyFriendsSuccess(results)
    {
        try
        {    
            $get("loadingFriends").style.display = "none";
            SlidingShow = new slideshow("SlidingShow");
            SlidingShow.textid = "ss_text";            
            SlidingShow.timeout = TIMER_ROLLOVER;
            SlidingShow.repeat = true;


            if (results == null)
            {
                // write err to dbg wnd
                window.location = "WSWndCmd::CMD:1227~wParam:tracemessage~lParam:onMyFriendsSuccess_error_resultObj_is_empty~";
                //abnormal error        
                onMyFriendsFail();
                return;
            }
            
            if(results.length == 0)
            {
                onNoFriends();
                return;
            }
        
        
            var iIndexItems = 0;            
            for(var i=0;i<results.length;i++)
            {
                //defensive
                if(results[i] ==  null)
                {
                    continue;
                }
                if (results[i].Site.URLAddress == "<!Blocked!>")
                {
                    continue;
                }
                if (results[i].Site.URLAddress == "<!NoneIE!>")
                {
                    continue;
                }                
	            var showUser = results[i].User.Name.split('@'); 
                iIndexItems++; 
                var s = new slide();            
                s.link = "javascript:OpenWhereAreMyFriends('Friends');";    
                s.text = showUser[0];
                SlidingShow.add_slide(s);  
            }

            if (iIndexItems == 0)                
            {
                onNoFriends();
                return;                    
            }
        
            if (iIndexItems == 1)
            {
                var s = new slide();            
                s.link = "javascript:OpenWhereAreMyFriends('Friends');";    
                s.text = $get("AddFriends").innerText;
                SlidingShow.add_slide(s);            
            }
          
            SlidingShow.update();
            SlidingShow.play();

         }
         catch(e)
         {
            // write err to dbg wnd
            window.location = "WSWndCmd::CMD:1227~wParam:tracemessage~lParam:onMyFriendsSuccess_could_not_be_executed_due_to_an_error-"+e.message.replace( new RegExp( " ", "g" ), "_" )+"~";         
            onMyFriendsFail();
         }
    }
    
    function OpenWhereAreMyFriends(ScreenType)
    {
        window.location = 'WSWndCmd::CMD:1226~wParam:Where Are My Friends;'+DOMAIN_NAME+'/WhereAreMyFriends.aspx?ScreenType='+ScreenType+'~lParam:root~';    
    }
    
    function onNoFriends()
    {
        try
        {
            if(SlidingShow == null)
            {
                SlidingShow = new slideshow("SlidingShow");
                SlidingShow.textid = "ss_text";            
                SlidingShow.timeout = TIMER_ROLLOVER;
                SlidingShow.repeat = true;
            
            }        
            var s = new slide();            
            s.link = "javascript:OpenWhereAreMyFriends('Friends');";    
            s.text = $get("AddFriends").innerText;
            SlidingShow.add_slide(s);            
            SlidingShow.next();     
         }
         catch(e)
         {
            // write err to dbg wnd
            window.location = "WSWndCmd::CMD:1227~wParam:tracemessage~lParam:onNoFriends_could_not_be_executed_due_to_an_error-"+e.message.replace( new RegExp( " ", "g" ), "_" )+"~";         
            onMyFriendsFail();
         }            
    }
    
    function onMyFriendsFail()
    {
        try
        {    
            if(SlidingShow == null)
            {
                SlidingShow = new slideshow("SlidingShow");
                SlidingShow.textid = "ss_text";            
                SlidingShow.timeout = TIMER_ROLLOVER;
                SlidingShow.repeat = true;
            
            }
            var s = new slide();            
            s.link = "javascript:void(0);";    
            s.text = "";
            SlidingShow.add_slide(s);            
            SlidingShow.next();     
         }
         catch(e)
         {
            // write err to dbg wnd
            window.location = "WSWndCmd::CMD:1227~wParam:tracemessage~lParam:onNoFriends_could_not_be_executed_due_to_an_error-"+e.message.replace( new RegExp( " ", "g" ), "_" )+"~";         
            onMyFriendsFail();
         }
        
    }
    
    function setPreviewOnScreen()
    {
        if (true == hasBeenLoaded)
        {
            return;
        }
        try{
            $get("loading").style.display = "block";
            WS_DoryPreview.GetPreviewData(location.search.substring(0),NUMBER_OF_SPEAKUPS,onPreviewSuccess,onPreviewFail);
        }catch(e){onPreviewFail();return;}
    }

    function onPreviewFail()
    {
        try
        {                
            $get("previewdiv").style.display = "block";        
            $get("loading").style.display = "none";
            SlidingShow = new slideshow("SlidingShow");
            SlidingShow.textid = "ss_text";            
            SlidingShow.timeout = TIMER_ROLLOVER;
            SlidingShow.repeat = false;
            var s = new slide();            
            var currentSpeakupID = -1;
            s.link = "javascript:ChangeStateTo(UI_STATE_MAX);";    
            s.text = "Sorry but currently this service is not available";
            SlidingShow.add_slide(s);            
            SlidingShow.next();
            
        }catch(e){}
    
    }
    
    function onPreviewSuccess(results)
    {
        
        $get("previewdiv").style.display = "block";
        $get("loading").style.display = "none";

        if (results == null || results.length == 0)
        {
            onPreviewFail();
            return;
        }
        
        hasBeenLoaded = true;            
        try
        {
        
            SlidingShow = new slideshow("SlidingShow");
            SlidingShow.textid = "ss_text";            
            SlidingShow.timeout = TIMER_ROLLOVER;
            SlidingShow.repeat = true;
            for(var i=0;i<results.length;i++)
            {
                var s = new slide();            
                var currentSpeakupID = results[i].ID;
                if (currentSpeakupID == SPEAKUP_WITHOUT_ID)
                {
                    s.link = "javascript:ChangeStateTo(UI_STATE_MAX);";    
                }
                else
                {
                    var url = currentSpeakupID;
                    s.link = "javascript:navigateToSpeakup("+currentSpeakupID+");";                
                }  
                s.text = results[i].Subject + " " + results[i].Message;
                SlidingShow.add_slide(s);            
            }
        
            if (results.length == 1)
            {
                SlidingShow.next();
                return;                
            }
          
            SlidingShow.update();
            SlidingShow.play();

            document.getElementById("ManualRolloverPrev").style.display = "block";            
            document.getElementById("ManualRolloverNext").style.display = "block";            
         }
         catch(e)
         {onPreviewFail();return;}
    }
    
