﻿var lastCall;
var urls = new Array();
var displayElement =  document.getElementById('content'); 

function handleMouseEvent( type, id ) {

    lastCall = type + " : " + id;
    if(type=='onMouseClick')
    {
        setTimer();
        loadAjaxPage(id)
    }
}
function loadAjaxPage(id)
{
 
for(var a=0;a<urls.length;a++)
        {
            var url = urls[a];
            
            if(url[0] == id) {

                    if(isBookNow == 0) {
                        // update page
                        var ajaxurl = languagePrefix + url[1] + "default.aspx?Ajax=1";
                        DoWebRequest(ajaxurl, OnWebRequestCompleted); 
                        
                        // track page view
                        try {
                            if (ajaxurl.indexOf("default.aspx?Ajax=1") > -1)
                                ajaxurl = ajaxurl.substring(0, ajaxurl.indexOf("default.aspx?Ajax=1"));
                            TrackGAPageView("/map" + ajaxurl);
                        }
                        catch(e) { }
                        
                      try {
                      
                         reloadConfig(url[2],url[3],url[4],url[5]);
                      }
                        catch(e) 
                        { 
//                          alert(e.message);
                        }
                    } 
                    if(isOurShips != 1) {

                    // Get route selection "ws"
                    var serviceUrl = '/services/InternalServices.aspx?MapRouteName=' + id;
                    DoWebRequest(serviceUrl, OnRouteSelectionCallCompleted); 
                }
            }
        }
    }

    function loadShipAjax(url) {
    setTimer();
        j$('.imagebrowser_clientID').each(function() {
            j$(document).stopTime("#" + j$(this).html());
        }); 

    DoWebRequest(url, OnWebRequestCompleted); 
    
}

function handleAjaxConnection(path, key) {
    var serviceUrl = '/services/InternalServices.aspx?ajaxconnection=1&path=' + path + '&key=' + key;
    DoWebRequest(serviceUrl, PerformPageUpdate); 

}

function PerformPageUpdate(executor, eventArgs) {
    if(executor.get_responseAvailable()) {
        var url = executor.get_responseData();
        if (url != null && url != '') {
            DoWebRequest(url, OnWebRequestSubcontentCompleted);
        }
    }
    else {
        if (executor.get_timedOut()) {
            window.status = 'Service call timed out';
        }else{
            if (executor.get_aborted())
			    window.status = 'Service call aborted';
	    }
    }

}



function GetUrlSubContent(url) {
    if (url != null && url != '') {
        DoWebRequest(url, OnWebRequestSubcontentCompleted); 
        //todo: track pageview
    }
}

function pageLoad()
{
    displayElement = $get("content");
}

function DoWebRequestForOnboardCalendarEvents(url) {
    displayElement = document.getElementById('EventsStart')

    DoWebRequest(url, ReplaceCalendarEvents);

}

function ReplaceCalendarEvents(executor) {
    var body = executor.get_responseData();
    if (body.indexOf("id=\"EventsStart\"") != -1) {
        
        var pos1 = body.indexOf("id=\"EventsStart\"");
        body = body.substring(pos1);

        pos1 = body.indexOf(">");
        body = body.substring(pos1 + 1);
        var pos2 = body.indexOf("id=\"EventsEnd\" />") + 17;
        body = body.substring(0, pos2);

        if (document.all) {
            displayElement.innerHTML = body;
        }
        else {
            // Firefox
            displayElement.innerHTML = body;
        }
    }


}


// execute the request
function DoWebRequest(url, callBackFunction)
{
    var wRequest =  new Sys.Net.WebRequest();

    wRequest.set_url(url);  

    // Set the request verb.
    wRequest.set_httpVerb("GET");
    wRequest.set_userContext("user's context");
    var resUrl = wRequest.getResolvedUrl();   

    // Method handler to process result
    wRequest.add_completed(callBackFunction);

    wRequest.invoke();  
    
}

function OnRouteSelectionCallCompleted(executor, eventArgs) {
    if(executor.get_responseAvailable()) {
        HandleRouteSelectionServiceResponse(executor);
    }
    else {
        if (executor.get_timedOut())
            window.status = 'Service call timed out';
        else
            if (executor.get_aborted())
			    window.status = 'Service call aborted';
    }
}

// This function is used to display the Web request body.
function HandleRouteSelectionServiceResponse(executor)
{   
    var response = executor.get_responseData();
    if (response != null && response.split("|").length > 1  ) {
	    if (response.split("|")[0] != null && response.split("|")[0] != '')		
		    SetOutwardFerryRoute(response.split("|")[0]);	
	    if (response.split("|")[1] != null && response.split("|")[1] != '')		
		    SetHomewardFerryRoute(response.split("|")[1]);	
    }
}

function OnWebRequestCompleted(executor, eventArgs) 
{
    if(executor.get_responseAvailable()) 
    {
        DisplayWebRequestBody(executor);
        j$('.imagebrowser_timerInfo').each(function() {
            if (j$(this).html() != "") {
                var arr = j$(this).html().split("|");
                var elementId = arr[0];
                var intervalMilliSeconds = arr[1];
                
                j$(document).everyTime(parseInt(intervalMilliSeconds), '#' + elementId, function(i) {
                    next_image(elementId);
                });
                j$('#' + elementId + '_lnkNext').click(function(i) {
                    j$(document).stopTime('#' + elementId);
                });
                j$('#' + elementId + '_lnkPrevious').click(function(i) {
                    j$(document).stopTime('#' + elementId);
                });
            }
        }); 
    }
    else
    {
        if (executor.get_timedOut())
            alert("Timed Out");
        else
            if (executor.get_aborted())
                alert("Aborted");
    }
}

function OnWebRequestSubcontentCompleted(executor, eventArgs) 
{
    if(executor.get_responseAvailable()) 
    {
        DisplayWebRequestSubcontent(executor);
    }
    else
    {
        if (executor.get_timedOut())
            alert("Timed Out");
        else
            if (executor.get_aborted())
                alert("Aborted");
    }
}


// This function is used to display the Web request body <!--subcontent-->-part.
function DisplayWebRequestSubcontent(executor)
{   
    var body = executor.get_responseData();
    var pos1=body.indexOf('<!--subcontent -->');
    body=body.substring(pos1 + 18 );

    var pos2 = body.indexOf("<!--/subcontent -->");
    body=body.substring(0,pos2);

    if (document.all) {
         displayElement.innerHTML = body;
    }
    else {
        // Firefox
         displayElement.innerHTML = body;
    }
    try {
        InitImageBrowsers();
//	    if (InitImageBrowser)
//		    InitImageBrowser();
    }
    catch(e) { }
}



// This function is used to display the Web request body.
function DisplayWebRequestBody(executor)
{   
    var body = executor.get_responseData();
    var pos1=body.indexOf('"__VIEWSTATE"');
    body=body.substring(pos1);

    pos1=body.indexOf(">");
    body=body.substring(pos1 + 1);
    var pos2 = body.indexOf("</form");
    body=body.substring(0,pos2);

    if (document.all) {
         displayElement.innerHTML = body;
    }
    else
        // Firefox
         displayElement.innerHTML = body;

    try {
        InitImageBrowsers();
    }
    catch(e) { }
}

function InitImageBrowsers() {
    // Find all elements in document that have a classname that equals 'imagebrowser_clientID'
    // Init each of the Image Browser in the page with a call to the InitImageBrowser() method in
    // common.js  with the innerHtml (= ClientId of the usercontrol) of each found element as parameter
    var arrElements = document.all || document.getElementsByTagName('*');

    var arrReturnElements = new Array();
    strClassName = "imagebrowser_clientID";
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for (var i = 0; i < arrElements.length; i++) {
        oElement = arrElements[i];
        if (oRegExp.test(oElement.className)) {
//            alert("found:" + oElement.className);
            InitImageBrowser(oElement.innerHTML);
        }
       
    }
}


if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();



