﻿/// <reference name="MicrosoftAjax.js"/>
Type.registerNamespace("TraderMagazine");

TraderMagazine.Archive = function() {
    TraderMagazine.Archive.initializeBase(this);
    this.articles = [];
    this.articleObject = new Object();
    this.currentIndex = 0;
    this.page = 0;
}
TraderMagazine.Archive.prototype = {
    initialize: function() {
    TraderMagazine.Archive.callBaseMethod(this, 'initialize');
    this.init();
    },
    /// <summary>
    /// initialize handlers for this page
    /// </summary>
    initHandler: function() {
        $addHandler($get("SearchTag"), "keypress", PAGE.checkKeyInput);
        $addHandler($get("SearchTheme"), "keypress", PAGE.checkKeyInput);
        $addHandler($get("SearchCategory"), "keypress", PAGE.checkKeyInput);
        $addHandler($get("SearchAuthor"), "keypress", PAGE.checkKeyInput);
    },
    /// <summary>
    /// check the key input
    /// </summary>
    checkKeyInput: function(e) {
        if (e.charCode == 13) {
            PAGE.initSearch();
        }
        return null;
    },
    /// <summary>
    /// get page
    /// </summary>
    init: function() {
        TradersMag.WebService.PageService.CreateArchivePage(this.insertContent, GLOBALS.callError);
    },

    /// <summary>
    /// insert content
    /// </summary>
    insertContent: function(html) {

        $get("Content").innerHTML = html;
        PAGE.initHandler();
    },

    /// <summary>
    /// edit archive
    /// </summary>
    editArchive: function() {
        TradersMag.WebService.PageService.CreateArchiveEditor(this.insertEditor, GLOBALS.callError);
        /*
        var src = "Editor/ArchiveEditor.aspx";
        var c = "<iframe id='ArchiveEditor' frameborder='0' width='800' height='1200' scrolling='no' src='" + src + "' ></iframe>";
        $get("Content").innerHTML = c;
        */
    },
    /// <summary>
    /// insert content
    /// </summary>
    insertEditor: function(html) {

        $get("Content").innerHTML = html;





    },
    /// <summary>
    /// edit archive
    /// </summary>
    initIssue: function() {
        var year = $get("IssueYear").value;
        var month = $get("IssueMonth").value;
        var country = $get("IssueCountry").value;
        TradersMag.WebService.PageService.GetIssue(year, month, country, this.issueResult, GLOBALS.callError);


    },

    /// <summary>
    /// edit archive
    /// </summary>
    issueResult: function(result) {



        PAGE.articles = [];
        var test = escape(result);

        var t2 = test.replace(/%0D%0A/g, "%20");



        t2 = unescape(t2);

        PAGE.articles = Array.parse(t2);



        var year = $get("IssueYear").value;
        var month = $get("IssueMonth").value;
        var country = $get("IssueCountry").value;
        $get("SelectedIssue").innerHTML = year + " " + Text.months.item[month - 1] + " " + country;
        $get("SelectedIssue").style.backgroundColor = "#80ff80";
        PAGE.issueId = PAGE.articles[0].IssueId;
        $get("CoverUploadArea").innerHTML = "<iframe id='ArchiveEditor' frameborder='0' width='400' height='100' scrolling='no' src='Editor/Upload.aspx?issueId=" + PAGE.issueId + "' ></iframe>";
        var filepath = "Content/Archive/cover_" + PAGE.issueId + ".gif";
        $get("CoverImage").src = filepath;



        var Sel = document.createElement("SELECT");
        Sel.id = "SelectArticle";
        Sel.className = "archive_select";

        var opto = document.createElement("OPTION");
        opto.innerHTML = Text.select_article;
        opto.value = "-1";
        Sel.appendChild(opto);
        if (PAGE.articles[0].ArticleId == "0") {
            var opto = document.createElement("OPTION");
            opto.innerHTML = Text.new_article;
            opto.value = "0";
            Sel.appendChild(opto);


        } else {
            var opto = document.createElement("OPTION");
            opto.innerText = Text.new_article;
            opto.value = "0";
            Sel.appendChild(opto);
            for (var i = 0; i < PAGE.articles.length; i++) {
                var opto = document.createElement("OPTION");
                opto.innerHTML = PAGE.articles[i].Title;
                opto.value = PAGE.articles[i].ArticleId;
                opto.id = "op" + opto.value;
                Sel.appendChild(opto);
            }
        }
        $get("ArchiveEditor_6_0").innerHTML = "";
        $get("ArchiveEditor_7_0").innerHTML = "";
        $get("ArchiveEditor_6_0").appendChild(Sel);


        Sel.onchange = function() {
            PAGE.articleId = this.value;
            $get("ArchiveEditor_7_0").innerHTML = "";
            if (PAGE.articleId >= 0) {
                var t = COMP.createTable("ArticleEditor", 20, 1, "100%", "middle");
                attr = document.createAttribute("cellPadding");
                attr.nodeValue = 2;
                t.setAttributeNode(attr);


                $get("ArchiveEditor_7_0").appendChild(t);
                for (var i = 0; i < Text.article_input.item.length; i++) {
                    var id = Text.article_input.item[i].id;
                    var label = Text.article_input.item[i].label;
                    var index = i * 2;
                    $get("ArticleEditor_" + index + "_0").innerHTML = label;
                    $get("ArticleEditor_" + index + "_0").style.height = "10px";
                    var index = i * 2 + 1;
                    if (id == "CopyInput") {
                        $get("ArticleEditor_" + index + "_0").innerHTML = "<textarea rows='4' type='text' class='archive_select' id='" + id + "' />";
                    } else {
                        $get("ArticleEditor_" + index + "_0").innerHTML = "<input type='text' class='archive_select' id='" + id + "' />";
                    }

                    $get("ArticleEditor_" + index + "_0").appendChild(COMP.createErrorField(id + "Error"));
                }
                $get("ArticleEditor_16_0").innerHTML = "<input type='button' value='Speichern' onclick='PAGE.saveArticle()' /><div id='SaveArticleResult'></div>";

                $get("ArticleEditor_17_0").innerHTML = "";
                $get("ArticleEditor_18_0").innerHTML = "";
                $get("ArticleEditor_19_0").innerHTML = "";


                PAGE.currentIndex = PAGE.articles.length;
                for (var i = 0; i < PAGE.articles.length; i++) {
                    if (PAGE.articles[i].ArticleId == PAGE.articleId) {
                        PAGE.currentIndex = i;
                        $get("ThemeInput").value = PAGE.articles[i].Theme;
                        $get("TitleInput").value = PAGE.articles[i].Title;
                        $get("SubtitleInput").value = PAGE.articles[i].Subtitle;
                        $get("CopyInput").value = PAGE.articles[i].Copy;
                        $get("AuthorInput").value = PAGE.articles[i].Author;
                        $get("TagsInput").value = PAGE.articles[i].Tags;
                        $get("PageNumberInput").value = PAGE.articles[i].PageNumber;

                        $get("ArticleEditor_17_0").innerHTML = "<div style='font-weight:bold;margin:5px 0px 5px 0px;'>Upload: Bild zu diesem Artikel und PDF des Artikels.</div>";
                        $get("ArticleEditor_18_0").innerHTML = "<iframe id='ArticleImageUpload' frameborder='0' width='400' height='100' scrolling='no' src='Editor/UploadArticleImage.aspx?articleId=" + PAGE.articleId + "' ></iframe>";
                        $get("ArticleEditor_19_0").innerHTML = "<iframe id='ArticlePDFUpload' frameborder='0' width='400' height='100' scrolling='no' src='Editor/UploadArticlePdf.aspx?articleId=" + PAGE.articleId + "' ></iframe>";



                    }
                }
            }
        }
    },
    readInput: function() {


        var success = true;


        PAGE.articleObject.ArticleId = PAGE.articleId;
        PAGE.articleObject.IssueId = PAGE.issueId;
        PAGE.articleObject.Theme = $get("ThemeInput").value;
        PAGE.articleObject.Title = $get("TitleInput").value;
        PAGE.articleObject.Subtitle = $get("SubtitleInput").value;
        PAGE.articleObject.Copy = $get("CopyInput").value;
        PAGE.articleObject.Author = $get("AuthorInput").value;
        PAGE.articleObject.Tags = $get("TagsInput").value;
        PAGE.articleObject.PageNumber = $get("PageNumberInput").value;
        if (PAGE.articleObject.PageNumber == "") PAGE.articleObject.PageNumber = 0;

        if (!ERROR.checkField(PAGE.articleObject.Theme, "ThemeInputError", "singleline", 0, Text.errors.e33)) success = false;
        if (!ERROR.checkField(PAGE.articleObject.Title, "TitleInputError", "singleline", 0, Text.errors.e33)) success = false;
        if (!ERROR.checkField(PAGE.articleObject.Subtitle, "SubtitleInputError", "singleline", 0, Text.errors.e33)) success = false;
        if (!ERROR.checkField(PAGE.articleObject.Copy, "CopyInputError", "multiline", 0, Text.errors.e33)) success = false;
        if (!ERROR.checkField(PAGE.articleObject.Author, "AuthorInputError", "singleline", 0, Text.errors.e33)) success = false;
        if (!ERROR.checkField(PAGE.articleObject.Tags, "TagsInputError", "singleline", 0, Text.errors.e33)) success = false;
        if (!ERROR.checkField(PAGE.articleObject.PageNumber, "PageNumberInputError", "int", 0, Text.errors.e33)) success = false;

        if (PAGE.articleObject.Tags.length >= 190) {
            ERROR.showError("TagsInputError", Text.errors.e34);
        }
        if (PAGE.articleObject.Author.length >= 99) {
            ERROR.showError("AuthorInputError", Text.errors.e34);
        }
        if (PAGE.articleObject.Copy.length >= 1500) {
            ERROR.showError("CopyInputError", Text.errors.e34);
        }
        if (PAGE.articleObject.Subtitle.length >= 500) {
            ERROR.showError("SubtitleInputError", Text.errors.e34);
        }

        if (PAGE.articleObject.Title.length >= 250) {
            ERROR.showError("TitleInputError", Text.errors.e34);
        }
        if (PAGE.articleObject.Theme.length >= 50) {
            ERROR.showError("ThemeInputError", Text.errors.e34);
        }

        return success;


    },
    saveArticle: function() {
        var success = PAGE.readInput();
        if (success)
            TradersMag.WebService.PageService.SaveArticle(PAGE.articleObject, PAGE.articleSaved, GLOBALS.callError);

    },
    articleSaved: function(articleId) {

        if (articleId > 0) {
            $get("SaveArticleResult").innerHTML = "Der Artikel wurde gespeichert";

            PAGE.articles[PAGE.currentIndex] = new Object();
            PAGE.articles[PAGE.currentIndex].ArticleId = articleId;
            PAGE.articles[PAGE.currentIndex].Theme = PAGE.articleObject.Theme;
            PAGE.articles[PAGE.currentIndex].Title = PAGE.articleObject.Title;
            PAGE.articles[PAGE.currentIndex].Subtitle = PAGE.articleObject.Subtitle;
            PAGE.articles[PAGE.currentIndex].Copy = PAGE.articleObject.Copy;
            PAGE.articles[PAGE.currentIndex].Author = PAGE.articleObject.Author;
            PAGE.articles[PAGE.currentIndex].Tags = PAGE.articleObject.Tags;
            PAGE.articles[PAGE.currentIndex].PageNumber = PAGE.articleObject.PageNumber;


            if (PAGE.articleId != articleId) {
                PAGE.articleId = articleId;
                var opto = document.createElement("OPTION");
                opto.innerHTML = PAGE.articleObject.Title;
                opto.value = PAGE.articleId;
                opto.id = "op" + opto.value;
                $get("SelectArticle").appendChild(opto);

                $get("SelectArticle").value = PAGE.articleId;
                $get("ArticleEditor_17_0").innerHTML = "<div style='font-weight:bold;margin:5px 0px 5px 0px;'>Upload: Bild zu diesem Artikel und PDF des Artikels.</div>";
                $get("ArticleEditor_18_0").innerHTML = "<iframe id='ArticleImageUpload' frameborder='0' width='400' height='100' scrolling='no' src='Editor/UploadArticleImage.aspx?articleId=" + PAGE.articleId + "' ></iframe>";
                $get("ArticleEditor_19_0").innerHTML = "<iframe id='ArticlePDFUpload' frameborder='0' width='400' height='100' scrolling='no' src='Editor/UploadArticlePdf.aspx?articleId=" + PAGE.articleId + "' ></iframe>";

            } else {
                $get("op" + articleId).innerHTML = PAGE.articleObject.Title;
            }

        } else {
            $get("SaveArticleResult").innerHTML = "Es ist leider ein Fehler aufgetreten.";
        }
    },

    //  ===========================================================
    //  search methods
    //  ===========================================================
    /// <summary>
    /// search
    /// </summary>
    initSearch: function() {
        this.page = 0;
        var success = true;
        this.searchObj = new Object();
        this.searchObj.searchYear = $get("SearchYear").value;
        this.searchObj.searchMonth = $get("SearchMonth").value;
        this.searchObj.searchTag = $get("SearchTag").value;
        this.searchObj.searchCategory = $get("SearchCategory").value;
        this.searchObj.searchTitle = $get("SearchTheme").value;
        this.searchObj.searchAuthor = $get("SearchAuthor").value;



        if (!ERROR.checkField(this.searchObj.searchTag, "SearchTagError", "singleline", 0, Text.errors.e33)) success = false;
        if (!ERROR.checkField(this.searchObj.searchTitle, "SearchThemeError", "singleline", 0, Text.errors.e33)) success = false;
        if (!ERROR.checkField(this.searchObj.searchCategory, "SearchCategoryError", "singleline", 0, Text.errors.e33)) success = false;
        if (!ERROR.checkField(this.searchObj.searchAuthor, "SearchAuthorError", "singleline", 0, Text.errors.e33)) success = false;
        if (this.searchObj.searchMonth == "-1" && this.searchObj.searchYear == "-1" && this.searchObj.searchTag == "" && this.searchObj.searchTitle == "" && this.searchObj.searchAuthor == "" && this.searchObj.searchCategory == "") {
            ERROR.showError("SearchAuthorError", Text.errors.e33);
            success = false;
        }
        if (success) {
            TradersMag.WebService.PageService.SearchInArchive(this.page, this.searchObj, PAGE.searchResult, GLOBALS.callError);
        }
    },
    /// <summary>
    /// search
    /// </summary>
    resetSearch: function() {
        this.page = 0;
        this.searchObj = new Object();
        this.searchObj.searchYear = "-1";
        this.searchObj.searchMonth = "-1";
        this.searchObj.searchTag = "";
        this.searchObj.searchCategory = "";
        this.searchObj.searchTitle = "";
        this.searchObj.searchAuthor = "";
        $get("SearchYear").value = "-1";
        $get("SearchMonth").value = "-1";
        $get("SearchTag").value = "";
        $get("SearchCategory").value = "";
        $get("SearchTheme").value = "";
        $get("SearchAuthor").value = "";

    },
    /// <summary>
    /// search
    /// </summary>
    callSearchFromBox: function(searchTag) {
        this.searchObj = new Object();
        this.searchObj.searchYear = "-1";
        this.searchObj.searchMonth = "-1";
        this.searchObj.searchTag = searchTag;
        this.searchObj.searchCategory = "";
        this.searchObj.searchTitle = "";
        this.searchObj.searchAuthor = "";
        PAGE.page = 0;
        TradersMag.WebService.PageService.SearchInArchive(PAGE.page, PAGE.searchObj, PAGE.searchResult, GLOBALS.callError);

    },
    /// <summary>
    /// insert content
    /// </summary>
    searchResult: function(html) {

        $get("ArchiveHolder1_1_0").innerHTML = html;
        var y = Sys.UI.DomElement.getBounds($get("ArchiveSearchHolder_0_0")).y;
        COMP.setScrollY(y);
    },
    /// <summary>
    /// switch page
    /// </summary>
    switchSearchResultPage: function(page) {
        this.page += page;
        TradersMag.WebService.PageService.SearchInArchive(this.page, this.searchObj, PAGE.searchResult, GLOBALS.callError);
    },
    /// <summary>
    /// switch page
    /// </summary>
    openPDF: function(articleId) {  

        var address = "Content/Archive/ArticlePDF/article_" + articleId + ".pdf";
        newWindow = window.open(address, "newWindow", "");
        newWindow.focus();


    },
    dispose: function() {
        //Add custom dispose actions here
        if ($get("SearchTag")) $clearHandlers("SearchTag");
        if ($get("SearchTheme")) $clearHandlers("SearchTheme");
        if ($get("SearchCategory")) $clearHandlers("SearchCategory");
        if ($get("SearchAuthor")) $clearHandlers("SearchAuthor");

        TraderMagazine.Archive.callBaseMethod(this, 'dispose');
    }
}
TraderMagazine.Archive.registerClass('TraderMagazine.Archive', Sys.Component);

if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
