﻿/// <reference path="cookies.js" />
/// <reference path="jquery-1.3.2-vsdoc.js" />
/// <reference path="MicrosoftAjax.js" />
/// <reference path="jquery.alerts.js" />
/// <reference path="Project.js" />
/// <reference path="Base64.js" />
/// <reference path="MultiEditContent.js" />
/// <reference path="EditCalendar.js" />
/// <reference path="EditSingle.js" />
/// <reference path="EditArea.js" />
/// <reference path="imageEditHandling.js" />
/// <reference path="EditRichtext.js" />
/// <reference path="../External/fckeditor/fckeditor.js" />
/// <reference path="elements.js" />
/// <reference path="jsGlobalElements.js" />


function OnError(args) {
    var Message;
    Message = 'Beim Versuch den Webdienst aufzurufen ist ein Fehler aufgetreten. ';
    if (args) {
        Message += 'Es liegt folgende Fehlermeldung vor: <br />';
        Message += 'StatusCode: ' + args._statusCode + '<br />';
        Message += 'TimedOut: ' + args._timedOut + '<br />';
        Message += 'Message: ' + args._message + '<br />';
        Message += 'StackTrace: ' + args._stackTrace + '<br />';
    }
    jAlert(Message, 'Fehlermeldung Webdienst');
}

function OnTimeOut() {
    jAlert('Der Versuch den Webdienst aufzurufen dauert zu lange. Bitte wiederholen Sie den Vorgang zu einem späteren Zeitpunkt noch einmal', 'Fehlermeldung Timeout');
}

function CheckUserLogon() {
    var nm = $("#fldUser").val();
    var pw = $("#fldPassword").val();
    if(nm==''||pw=='') {
        //document.getElementById('ErrorMessage').innerHTML = 'Benutzername und/oder Passwort dürfen zur Anmeldung nicht leer sein!';
        jAlert('Der Benutzername und/oder das Passwort dürfen zur Anmeldung nicht leer sein!','Fehlermeldung');
        return;
    }
    WebTest.WSData.LogonUser(nm, pw, onCheckUserLogon, OnError, OnTimeOut);
}

function onCheckUserLogon(args) {
    if (args.IsError) {
        jAlert(args.ErrorMessage, 'Fehlermeldung');
    } else {
    $('#AnmeldeDiv').dialog('close');
    CookieWrite('UserID', args.UserID);
    CookieWrite('FirstName', args.FirstName);
    CookieWrite('LastName', args.LastName);
    CookieWrite('PageSet', args.PageSet);
    CookieWrite('BookSet', args.BookSet);
    CookieWrite('BGSet', args.BGSet);
    CookieWrite('UserFolder', args.UserFolder);
    CookieWrite('IsLogon', 1);
    CookieWrite('UserMode', args.UserMode);
    CheckLogonMask();
    CheckUserMatchAlbum();
    }

}

function GetMaxPageCount() {
    var AlbID = CookieRead('AlbumID');
    var PageSet = CookieRead('PageSet');
    if (AlbID.length > 0 && PageSet.length > 0)
        WebTest.WSData.GetMaxPageCount(AlbID, PageSet, onGetMaxPageCount, OnError, OnTimeOut);

}

function onGetMaxPageCount(args) {
    if (args > 0) {
        CookieWrite('MaxPage', args);
    } else {
        CookieWrite('MaxPage', '-1');
        jAlert('Die maximale Seitenzahl für das Album [' + CookieRead('AlbumID') + '] kann nicht ausgelesen werden!', 'Fehlermeldung');
    }
}

function CheckUserMatchAlbum() {
    if (CookieRead('UserID') == '-1') {
        CookieWrite('UserMatchAlbum', '-1');
        onCheckUserMatchAlbum('-1');
    } else {
        WebTest.WSData.CheckUserMatchAlbum(CookieRead('UserID'), CookieRead('AlbumID'), onCheckUserMatchAlbum, OnError, OnTimeOut);
    }
    
}

function onCheckUserMatchAlbum(args) {
    if (parseInt(args) == 1) {
        CookieWrite('UserMatchAlbum', '1');
    } else {
        CookieWrite('UserMatchAlbum', '-1');
    }
    SetEditMode();
}

function GetSiteContent(ContentID) {
    var WithCheckBox = false;
    if (ContentID == 0) {
        WithCheckBox = !CookieRead('WelcomeMessage');
    }

    if (ContentID == 5) {
        ContentID = 0;
    }
    
    $("#hdSiteContent").val(ContentID);
    WebTest.WSData.GetSiteContent(ContentID, CookieRead('UserID'), 
    function(args) {
        BuildSiteContent(WithCheckBox);
        if (args) {
            $("#ShowSiteContent").dialog('option', 'title', args.SiteContentName);
            $("#ShownContent").html(Base64.decode_base64(args.SiteContent));
            $("#ShowSiteContentDescription").html('<center><b>' + args.SiteContentDescription + '<\/b><\/center>');
            if (args.UserCanEdit) {
                $('#btnEditSiteContent').show();
                $('#NavDiv').show();
            } else {
                $('#btnEditSiteContent').hide();
                $('#NavDiv').hide();
            }
        }
        $("#ShowSiteContent").dialog('open');    
    }, OnError, OnTimeOut);
}

function FCKeditor_OnComplete(editorInstance) {
    if(editorInstance.Name =='fckSiteContent')
        editorInstance.SetHTML($("#ShownContent").html());
    if (editorInstance.Name == 'freeEditRT')
        editorInstance.SetHTML($global_FreeContent);
    if (editorInstance.Name == 'fckExtPage')
        editorInstance.SetHTML($('#ctl00_ContentPlaceHolder1_ctl00_InnerControl').html());
}

function OpenEditSiteContent() {
    if (typeof (FCKeditorAPI) == "undefined") {
        var fck = new FCKeditor("fckSiteContent");
        fck.BasePath = "/external/fckeditor/";
        fck.Height = '460';
        fck.Width = '100%';
        $("#divEditContent").html(fck.CreateHtml());
    } else {
        var oEdit = FCKeditorAPI.GetInstance('fckSiteContent');
        if (typeof (oEdit) == "undefined") {
            oEdit = new FCKeditor("fckSiteContent");
            oEdit.BasePath = "/external/fckeditor/";
            oEdit.Height = '615';
            oEdit.Width = '100%';
            $('#divEditContent').html(oEdit.CreateHtml());
        } else {
            if ($('#divEditContent').html().length == 0) {
                oEdit = new FCKeditor('fckSiteContent');
                oEdit.BasePath = "/external/fckeditor/";
                oEdit.Height = '615';
                oEdit.Width = '100%';
                $('#divEditContent').html(oEdit.CreateHtml());
            } else {
                oEdit.SetHTML($('#ShownContent').html());
            }
        }
    }
    $('#ShownContent').css('display', 'none');
    $('#divEditContent').css('display', '');
    $('#btnSaveSiteContent').css('display', '');
    $('#btnCancelEditSiteContent').css('display', '');
    $('#btnEditSiteContent').css('display', 'none');
    CookieWrite('OrigUserFolder', CookieRead('UserFolder'));
    CookieWrite('UserFolder', '86CA25B6-2717-4310-94B4-CD6B3CBAEDBF');
}

function SaveSiteContent() {
    var oEditor = FCKeditorAPI.GetInstance('fckSiteContent');
    $("#ShownContent").html(oEditor.GetHTML());
    var SaveObject = new Object;
    SaveObject.SiteContent = Base64.encode_base64($("#ShownContent").html());
    SaveObject.ContentID = $("#hdSiteContent").val();
    WebTest.WSData.SaveSiteContent(SaveObject, onSaveSiteContent, OnError, OnTimeOut);
}

function onSaveSiteContent(args) {
    $('#ShownContent').css('display', '');
    $('#divEditContent').css('display', 'none');
    $('#btnSaveSiteContent').css('display', 'none');
    $('#btnCancelEditSiteContent').css('display', 'none');
    $('#btnEditSiteContent').css('display', '');
    CookieWrite('UserFolder', CookieRead('OrigUserFolder'));
    CookieDelete('OrigUserFolder');    
}

function onCloseSiteContent() {
    CancelSiteContent();
    $('#btnSaveSiteContent').css('display', 'none');
    $('#btnCancelEditSiteContent').css('display', 'none');
    $('#btnEditSiteContent').css('display', '');
    $('#hdSiteContent').val('');
}

function CancelSiteContent() {
    $('#ShownContent').css('display', '');
    $('#divEditContent').css('display', 'none');
    $('#btnSaveSiteContent').css('display', 'none');
    $('#btnCancelEditSiteContent').css('display', 'none');
    $('#btnEditSiteContent').css('display', '');
    CookieWrite('UserFolder', CookieRead('OrigUserFolder'));
    CookieDelete('OrigUserFolder');
}

function OpenWaitDialog() {
    $('#WaitDialog').dialog('open' );
}

function CloseWaitDialog() {
    $('#WaitDialog').dialog('close');
}

function EditElement(AlbumID, PageID, ElementID, ElementType, PageSet) {
    $('#hdAlbumID').val(AlbumID);
    $('#hdPageID').val(PageID);
    $('#hdElementID').val(ElementID);
    $('#hdPageSet').val(PageSet);
    switch (ElementType) {
        case "1":       //Calendar in Editalendar.js
            OpenWaitDialog();
            $.getScript('scripts/ui.datepicker.js', function() {
                $.getScript('scripts/i18n/ui.datepicker-de.js', function() {
                    $.getScript('scripts/EditCalendar.js', function() {
                        BuildCalendar();
                        OpenEditCalendar(AlbumID, PageID, ElementID, PageSet);
                        CloseWaitDialog();
                    });
                });
            });
            break;
        case "2":       //MultiLabel in MultiEditContent.js
            OpenWaitDialog()
            $.getScript('scripts/EditArea.js', function() {
                BuildArea();
                OpenEditMultiLabel(AlbumID, PageID, ElementID, PageSet);
                CloseWaitDialog();
            });
            break;
        case "3":       //SingleLabel in EditSingle.js
            OpenWaitDialog();
            $.getScript('scripts/EditSingle.js', function() {
                BuildSingle();
                OpenEditSingleLabel(AlbumID, PageID, ElementID, PageSet);
                CloseWaitDialog();
            });
            break;
        case "4":       //Richtext
            OpenWaitDialog();
            $.getScript('scripts/EditRichtext.js', function() {
                $.getScript('external/fckeditor/fckeditor.js', function() {
                    BuildRichtext();
                    OpenEditRichtext(AlbumID, PageID, ElementID, PageSet);
                    CloseWaitDialog();
                });
            });
            break;
        case "5":       //Image
            OpenWaitDialog(); 
            $.getScript('scripts/imageEditHandling.js', function() {
                $.getScript('scripts/jquery.jcrop.js', function() {
                    $.getScript('scripts/jquery.uploadify.js', function() {
                        BuildEditImage();
                        BuildImageAlbum();
                        OpenEditImage(AlbumID, PageID, ElementID, PageSet);
                        CloseWaitDialog();
                    });
                });
            });
            break;
        case "6":       //MultiCalendar
            OpenWaitDialog();
            $.getScript('scripts/ui.datepicker.js', function() {
                $.getScript('scripts/i18n/ui.datepicker-de.js', function() {
                    $.getScript('scripts/ui.tabs.js', function() {
                        $.getScript('scripts/MultiEditContent.js', function() {
                            BuildMultiEdit();
                            OpenEditMultiCalendar(AlbumID, PageID, ElementID, PageSet);
                            CloseWaitDialog();
                        });
                    });
                });
            });
            break;
        case "7":       //EditComboItem
            OpenWaitDialog();
            $.getScript('scripts/EditCombo.js', function() {
                BuildCombo();
                OpenEditCombo(AlbumID, PageID, ElementID, PageSet);
                CloseWaitDialog();
            });
            break;
    }
}

function CreateNewAlbumDialog() {
    if (CookieRead('IsLogon') == '-1') {
        NewUserDlg('Bitte geben Sie in das Feld eine gültige e-Mail-Adresse ein, wir schicken dann eine e-Mail mit einem Link. Klicken Sie bitte auf den Link um Ihre Anmeldung abzuschliessen. Erst dann sind Sie ein registrierter Benutzer von www.dasbabyalbum.de und können über die Schaltfläche "Neues Album" ein neues Babyalbum anlegen.\nVielen Dank.', 'Neues Album anlegen');
    } else {
    //Benutzer eingeloggt, Album direkt anlegen!
    var args = new Object;
    args.UserID = CookieRead('UserID');
    WebTest.WSData.CreateNewUserAlbum(args, onCreateNewUserAlbum, OnError, OnTimeOut);
    }
}

function CreateNewUserDialog() {
    NewUserDlg('Bitte geben Sie in das Feld eine gültige e-Mail-Adresse ein, wir schicken dann eine e-Mail mit einem Link. Klicken Sie bitte auf den Link um Ihre Anmeldung abzuschliessen. Dann können Sie selbst Alben anlegen, Alben anderer Benutzer betrachten oder bei anderen Album-Besitzern die Lesegenehmigung für ein Album erbitten.\nVielen Dank', 'Neuer Benutzer anlegen');
}

function AlbumSettings(AlbumID) {
    OpenWaitDialog();
    $.getScript('scripts/ui.tabs.js', function() {
        $.getScript('scripts/AlbumSettings.js', function() {
            WebTest.WSData.GetAlbumInformation(AlbumID, CookieRead('UserID'), function(args) {
                BuildAlbumSettings(args);
                OpenEditAlbumSettings();
                CloseWaitDialog();
            }, OnError, OnTimeOut);
        });
    });
}


function OpenEditAlbumSettings() {
    $('#ShowAlbumSettings').dialog('open');
}

function onCreateNewUserAlbum(args) {
    if (args) {
        CookieWrite('AlbumID', args.AlbumID);
        CookieWrite('MyAlbum', '0');
        GetMaxPageCount()
        CookieWrite('PageID', '0');
        CheckUserMatchAlbum();
        SetEditMode();
        if (args.AlbumCount == 1) {
            jAlert('Sie haben ein neues Album angelegt. Bitte klicken Sie auf den roten Button "Bearbeiten" ganz rechts oben um in den "Bearbeiten-Modus" zu gelangen. In diesem Modus haben alle veränderbaren Elemente einen Rahmen, daran erkennen Sie dass Sie bearbeiten können. Nun brauchen Sie nur noch in die Rahmen/Elemente klicken und schon können Sie loslegen!', 'Hinweis zur Bearbeitung Ihres Albums');
        }
    }
}

function SendNewUserMail() {
    var args = new Object;
    args.eMailAddress = $('#AnnounceEmail').val();
    OpenWaitDialog();
    WebTest.WSData.CheckMailAvailable(args.eMailAddress, function(argM) {
        if (!argM) {
            jAlert('Die e-Mail-Adresse ' + args.eMailAddress + ' ist bereits in unserem System vorhanden oder ist eine ungültige e-mail-Adresse und kann somit nicht gespeichert werden. Der Vorgang wird abgebrochen.', 'Warnung');
            CloseWaitDialog();
            return;
        }
        WebTest.WSData.NewUserMail(args, function(arge) {
            $('#NewUserDialog').dialog('close');
            CloseWaitDialog();
            jAlert('An Ihre e-mail-Adresse ' + args.eMailAddress + ' ist soeben eine e-mail für die Freischaltung des Kontos bei www.dasbabyalbum.de gesendet worden. Bitte überprüfen Sie Ihren Posteingang und klicken auf den Link um die Registrierung abzuschliessen.', 'Hinweis');
        }, OnError, OnTimeOut);
    }, OnError, OnTimeOut);    
}

function SendUserFgtMail() {
    $('#WaitDialog').dialog('open');
    WebTest.WSData.UserFgtMail($('#fldFgtEmail').val(), onSendUserFgtMail, OnError, OnTimeOut);
}

function onSendUserFgtMail(args) {
    $('#WaitDialog').dialog('close');
    if (args.length > 0)
        jAlert(args, 'Achtung');
    $('#FgtUserPassword').dialog('close');
}

function ResetUserDialogFields() {
    $('#sl_UserTitle').attr('selectedIndex', 0);
    $('#tb_UserEditFirstName').val('');
    $('#tb_UserEditLastName').val('');
    $('#tb_UserEditPostalCode').val('');
    $('#tb_UserEditUserName').val('');
    $('#tb_UserEditPassword').val('');
    $('#tb_UserEditPasswordRepeat').val('');
    $('#tb_UserEditEmail').val('');
}

function OpenUserEditDialog(UState) {
    WebTest.WSData.GetUserData(CookieRead('UserID'), function(args) {
        OpenWaitDialog();
        $.getScript('scripts/useredit.js', function() {
            BuildUserEditDialog(UState);
            var newOption;
            for (i = document.getElementById('sl_UserTitle').length - 1; i >= 0; i--) {
                document.getElementById('sl_UserTitle').options[i] = null;
            }
            if (args) {
                for (var i = 0; i < args.Titles.length; i++) {
                    if (args.Title == i) {
                        newOption = new Option(args.Titles[i], i, false, true);
                    } else {
                        newOption = new Option(args.Titles[i], i, false, false);
                    }
                    document.getElementById('sl_UserTitle').options[document.getElementById('sl_UserTitle').length] = newOption;
                }
                $('#tb_UserEditFirstName').val(args.FirstName);
                $('#tb_UserEditLastName').val(args.LastName);
                $('#tb_UserEditUserName').val(args.UserName);
                $('#tb_UserEditEmail').val(args.emailAddress);
                $('#tb_UserEditPostalCode').val(args.PostalCode);
            }
            $('#UserEditDialog').dialog('open');
            CloseWaitDialog();
        });
    }, OnError, OnTimeOut);
}

function SaveUserEditDialog() {
    var args = new Object;
    if ($('#tb_UserEditPassword').val() != $('#tb_UserEditPasswordRepeat').val()) {
        jAlert('Passwort und Passwortwiederholung stimmen nicht überein, bitte überprüfen Sie Ihere Eingabe!', 'Warnung');
        return;
    }
    if ($('#tb_UserEditPassword').val().length < 5 && $('#tb_UserEditPassword').val().length > 0) {
        jAlert('Zu Ihrer eigenen Sicherheit sollte die Passwortlänge mindestens aus 5 Zeichen bestehen!', 'Warnung');
        return;
    }
    if ($('#tb_UserEditEmail').val().length == 0) {
        jAlert('Das Feld e-Mail-Adresse darf nicht leer sein, der Vorgang wird abgebrochen.');
        return;
    }
    if ($('#tb_UserEditUserName').val().length == 0) {
        jAlert('Das Feld Benutzername darf nicht leer sein, der Vorgang wird abgebrochen.');
        return;
    }
    args.FirstName = $('#tb_UserEditFirstName').val();
    args.LastName = $('#tb_UserEditLastName').val();
    args.UserName = $('#tb_UserEditUserName').val();
    args.emailAddress = $('#tb_UserEditEmail').val();
    args.PostalCode = $('#tb_UserEditPostalCode').val();
    args.Title = $('#sl_UserTitle').attr('selectedIndex');
    if ($('#tb_UserEditPassword').val() == 'koieokrmfawoe') {
        args.Password = '';
    } else {
        args.Password = $('#tb_UserEditPassword').val();
    }
    args.UserID = CookieRead('UserID');
    CookieWrite('FirstName', args.FirstName);
    CookieWrite('LastName', args.LastName);
    CookieWrite('UserID', args.UserID);
    CheckLogonMask();
    WebTest.WSData.SetUserData(args, onSaveUserEditDialog, OnError, OnTimeOut);
}

function onSaveUserEditDialog(args) {
    if (args.IsError) {
        jAlert(args.ErrorMessage, 'Fehler');
    } else {
        CookieWrite('UserSaveState', 'true');
        $('#UserEditDialog').dialog('close');
    }
}

function OpenMyAlbum() {
    //CookieWrite('MyAlbum', '1');
    //CookieWrite('EditMode', '-1');
    //CookieWrite('ContextMode', '-1');
    //SetEditMode();
    location.href = 'Meine_Alben';
}

function OpenSearchAlbums() {
    CookieWrite('MyAlbum', '2');
    CookieWrite('EditMode', '-1');
    CookieWrite('ContextMode', '-1');
    SetEditMode();
}

function GotoStartPage() {
    //    CookieWrite('MyAlbum', '-1');
    //    CookieWrite('PageID', '0');
    //    CookieWrite('AlbumID', 'EEC71A96-3552-4280-98EE-7B626F443B7C');
    //    WebTest.WSData.GetMaxPageCount(CookieRead('AlbumID'), CookieRead('PageSet'), onCheckPageCountReady, OnError, OnTimeOut);
    WebTest.WSData.GetRandomChildName(function(args) {
        location.href = args;        
    }, OnError, OnTimeOut);
}

function OpenLocation(ChName, AlbumID) {
    CookieWrite('AlbumID', AlbumID);
    location.href = ChName;
}

function OpenAlbum(AlbumID) {
    CookieWrite('PageID', '0');
    CookieWrite('MyAlbum', '-1');
    CookieWrite('AlbumID', AlbumID);
    WebTest.WSData.GetMaxPageCount(AlbumID, 'm', function(args) {
        if (args > 0)
            CookieWrite('MaxPage', args);
        if (CookieRead('UserID') == '-1') {
            CookieWrite('UserMatchAlbum', '-1')
            location.href = 'default.aspx';
        } else {
            WebTest.WSData.CheckUserMatchAlbum(CookieRead('UserID'), AlbumID, function(argso) {
                //                if (parseInt(argso) == 1) {
                //                    CookieWrite('UserMatchAlbum', '1');
                //                    location.href = 'default.aspx';
                //                } else {
                //                    CookieWrite('UserMatchAlbum', '-1');
                //                    location.href = 'default.aspx';
                //                }
                CookieWrite('UserMatchAlbum', argso);
                location.href = 'default.aspx';
            }, OnError, OnTimeOut);
        }
    }, OnError, OnTimeOut);
}

function onCheckPageCountReady(args) {
    if (args > 0)
        CookieWrite('MaxPage', args);
    CheckUserMatchAlbum();
}

function DeleteAlbum(AlbumID) {
    jConfirm('Möchten Sie dieses Album wirklich löschen?', 'Achtung', function(r) {
        if (r) {
            WebTest.WSData.DeleteAlbum(AlbumID, function(args) {
            OpenMyAlbum();
            }, OnError, OnTimeOut);
        }
    });
}

function dv(t) {
    return document.createElement(t);
}

function sa(e, k, v) {
    $(e).attr(k, v);
}

function ac(e, c) {
    $(e).append(c);
}

function sp(s) {
    var d = dv('div');
    $(d).css('height', s + 'px');
    return d;
}

function ct(t) {
    return document.createTextNode(t);
}

function tbs(cs, spa) {
    var g = dv('tr');
    var h = dv('td');
    sa(h, 'colspan', cs);
    ac(h, sp(spa));
    ac(g, h);
    return g;
}

function tds(spa) {
    var g = dv('td');
    $(g).css('width', spa + 'px');
    ac(g, ct('\u00A0'));
    return g;
}

function getOuterHTML(o) {
    var e;
    if (!o) return null;
    e = dv('div');
    ac(e, o);
    return $(e).html();
}

function GotoExtSite(SiteID) {
//    CookieWrite('EditMode', '-1');
//    CookieWrite('ContextMode', '-1');
//    CookieWrite('MyAlbum', '3');
      CookieWrite('SiteID', SiteID);
      CookieDelete('EditExt');
    //    SetEditMode();
    location.href = "Linkliste";
}

function GotoGuestBook() {
    //    CookieWrite('EditMode', '-1');
    //    CookieWrite('ContextMode', '-1');
    //    CookieWrite('MyAlbum', '4');
    //    CookieWrite('GBookState', '0');
    //    SetEditMode();
    location.href = 'Gaestebuch';
}
