//
// $Id: News.js,v 1.3 2010/07/10 16:48:24 steve Exp $
//
var News = function() {

    this.cms      = new CMSActions()
    this.editor   = new CMSEditor()
    this.html     = new Html()
    this.textarea = new Textarea()
    this.thickbox = new ThickBoxGeneric()
    this.url      = new Url()

    // Editor
    //
    this.init = function() {
    
        var self = this
        
        $('img.contentNewsEditButton').click( function() { self.showEditor($(this)) })
        $('img.contentNewsDeleteButton').click( function() { self.cms.deleteSection($(this), 'News') })
        $('input.contentNewsSave').click( function() { self.saveDetails($(this)) })
    }
    
    this.showEditor = function(elem) {

        var self = this
        
        var id     = $(elem).attr('id').split('_')
        id         = id[1]
        var editor = 'contentNewsEditorEdit_' + id

        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=loadNewsSection&Id=' + id,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {
                        $('#newsEditLabel_' + id).val(data.News.label)
                        $('#contentNewsRssSelect_' + id).val(data.News.rssid)
                         self.editor.position(elem, editor)
                    }
                }
        })
    }
    
    this.saveDetails = function(elem) {
    
        var self = this
        
        var id = $(elem).attr('id').split('_')
        id = id[1]
        
        var label   = escape($('#newsEditLabel_' + id).val())
        var rssId   = $('#contentNewsRssSelect_' + id).val()
        
        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=saveNewsSection&Id=' + id +
                                                  '&Label=' + label +
                                                  '&RssId=' + rssId,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {
                        self.cms.reloadPage('#contentNewsEditor_' + id)
                    }
                }
        })
    }

    // Listing functions
    //
    this.initCMS = function() {

        var self = this

        $('#cmsNewsTable .enableNewsItem').click( function() { self.enable($(this)) })
        $('#cmsNewsTable .deleteNewsItem').click( function() { self.deleteNews($(this)) })
    }

    this.enable = function(elem) {
    
        var self = this
        
        var elemId = $(elem).attr('id')
        var enable = self.html.getCheckBoxValue('#' + elemId)
        id         = elemId.split('_')
        id         = id[1]
                
        $('#newsItemTr_' + id).addClass('selectedRow')
        if (enable == 0) {
            action = 'disableNewsItem'
            if (! confirm('Disable this news item?')) {
                self.html.setCheckBoxValue('#' + elemId, 1)
                $('#newsItemTr_' + id).removeClass('selectedRow')
                return
            }
        } else {
            action = 'enableNewsItem'
            if (! confirm('Enable this news item?')) {
                self.html.setCheckBoxValue('#' + elemId, 0)
                $('#newsItemTr_' + id).removeClass('selectedRow')
                return
            }
        }
        
        $('#newsItemTr_' + id).removeClass('selectedRow')
        
        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=' + action + '&Id=' + id,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {
                        if (enable == 0) {
                            $('#newsItemTr_' + id).addClass('disabledTr')
                        } else {
                            $('#newsItemTr_' + id).removeClass('disabledTr')
                        }
                    }
                }
        })
    }
    
    this.deleteNews = function(elem) {
    
        var self = this
        var id     = $(elem).attr('id')
        id         = id.split('_')
        id         = id[1]

        $('#newsItemTr_' + id).addClass('selectedRow')
        if (! confirm('Delete this news item?')) {
            self.html.setCheckBoxValue(id, 1)
            $('#newsItemTr_' + id).removeClass('selectedRow')
            return
        }

        $('#newsItemTr_' + id).remove()
        
        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=deleteNewsItem&Id=' + id,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    }
                }
        })
    }

    // News item editing
    //
    this.initNewsItem = function() {
    
        var self = this
        
        self.thickbox.init()

        self.id = self.url.clickedUrlArg('Id')
        
        if (self.id) {
            $('#editNewsTitle').html('Edit News Item ' + self.id)
        } else {
            $('#editNewsTitle').html('Create News Item')
            self.html.setCheckBoxValue('#newsEnabled', 1)
        }

        self.loadNewsParameters()

        $('#newsSaveButton').click( function() { self.saveNewsItem() })

        $('#boldButton').click( function() { self.textarea.bold($('#newsText')) })
        $('#italicButton').click( function() { self.textarea.italic($('#newsText')) })
        $('#underlineButton').click( function() { self.textarea.underline($('#newsText')) })
    }

    this.loadNewsParameters = function() {

        var self = this

        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=loadNewsParameters&CalendarId=news' +
                                                     '&InsertsId=insertType',
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {

                        self.editor.inserters(data, 'newsText', 'newsTable')

                        if (self.id) {
                            self.loadNewsItem()
                        }
                    }
                }
        })    
    }
    
    this.loadNewsItem = function() {
    
        var self = this

        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=loadNewsItem&Id=' + self.id,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {
                        $('#newsTitle').val(data.News.title)
                        $('#newsText').val(data.News.text)
                        self.html.setCheckBoxValue('#newsEnabled', data.News.enabled)
                    }
                }
        })
    }
    
    this.saveNewsItem = function() {
    
        var self = this
        
        var title      = $('#newsTitle').val()
        var text       = escape($('#newsText').val())
        var enabled    = self.html.getCheckBoxValue('#newsEnabled')
        var updateDate = self.html.getCheckBoxValue('#newsUpdateDate')

        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=saveNewsItem&Id=' + self.id +
                                               '&Enabled=' + enabled +
                                               '&UpdateDate=' + updateDate +
                                               '&Title=' + title +
                                               '&Text=' + text,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {
                        $('#content').replaceWith(data.News)
                        self.thickbox.applyThickBox('#content .thickbox')
                        if (self.id) {
                            alert('News story updated')
                        } else {
                            alert('News story created')
                        }
                        self.initCMS()
                    }
                    tb_remove()
                }
        })
    }
}
