﻿/*
* Swisschecklist.ChecklistController Javascript
* Copyright (c) 2010 2sic internet solutions gmbh
* Author: Pascal Schweizer
* 
* Description
* Requires jQuery 1.3.2, SwissChecklist.js
*
*/

// Define master variables
with (SwissChecklist.ChecklistController) {
    $(function() {
        Checklist.CurrentView = Checklist.ViewModes["use"];
        SwissChecklist.ChecklistController.UserMayLeavePage = true;
    });
}

$(function() {
    with (SwissChecklist.ChecklistController) {
        Checklist.ChangeView = function(ViewMode) {

            // Check if CurrentViewMode is not the same as the wished one
            if (ViewMode != this.CurrentView.Name && typeof (Checklist.ViewModes[ViewMode]) != "undefined") { // == "use" || ViewMode == "change" || ViewMode == "sort" || ViewMode == "preview")) {
                // Leave the old ViewMode
                this.CurrentView.Dispose();
                this.CurrentView = this.ViewModes[ViewMode];
                // Change to new ViewMode
                this.CurrentView.Initialize();

                // Call Extenionmethod which changes the viewmode
                // TODO: Check this
                if (typeof (SwissChecklist.Extensions.ChangeExtensionChecklistMode) != 'undefined') {
                    if (!IsChecklistInEditMode)
                        SwissChecklist.Extensions.ChangeExtensionChecklistMode(this.CurrentView.Name);
                }
            }
        };
    }
});

// Step Marker
SwissChecklist.ChecklistController.Steps.MarkStepAsChanged = function(StepObject, MarkPrev) {
    StepObject.attr("StepHasChanged", "true");
    if (MarkPrev) {
        StepObject.prev("li").attr("StepHasChanged", "true");
    }
}

// User leaving site check status
SwissChecklist.ChecklistController.ConfirmBrowseAway = function() {
    if (!SwissChecklist.ChecklistController.UserMayLeavePage) {
        return GetLocalizedText("SiteLeaveMessage");
    }
}
window.onbeforeunload = SwissChecklist.ChecklistController.ConfirmBrowseAway;

SwissChecklist.ChecklistController.ForbidUserToLeave = function() {
    SwissChecklist.ChecklistController.UserMayLeavePage = false;
}
SwissChecklist.ChecklistController.AllowUserToLeave = function() {
    SwissChecklist.ChecklistController.UserMayLeavePage = true;
}
