//
// $Id: Boats.js,v 1.1.1.1 2010/02/26 08:30:05 steve Exp $
//
var Boats = function() {

    this.thickbox = new ThickBoxGeneric()
    this.url      = new Url()
    
    // Edit Description
    //
    this.init = function() {
    
        var self = this
        
        self.thickbox.init()

        self.id = self.url.clickedUrlArg('Id')

        if (self.id) {
            $('#boatTitle').html('Edit Boat')
            $('#boatSaveButton').val('Save')
            self.loadBoatDescription()
        } else {
            $('#boatTitle').html('Create Boat')
            $('#boatSaveButton').val('Create')
            self.showTable()
        }
        $('#boatSaveButton').click( function() { self.saveDescription() })
    }
    
    this.loadBoatDescription = function() {
    
        var self = this
        
        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=loadBoatDescription&Id=' + self.id,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {
                        $('#boatName').val(data.Boat.model)
                        $('#boatText').val(data.Boat.description)
                        self.showTable()
                    }
                }
        })
    }
    
    this.showTable = function() {
    
        $('#boatDetailsDiv').fadeIn()
    }
    
    this.saveDescription = function() {
    
        var self = this
        
        var model       = escape($('#boatName').val())
        var description = escape($('#boatText').val())
        
        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=saveBoatDescription&Id=' + self.id +
                                                      '&Model=' + model +
                                                      '&Description=' + description,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {
                        alert('Description Saved')
                        $('#content').replaceWith(data.Boats) 
                        self.thickbox.applyThickBox('#boatsDiv a.thickbox') 
                    }
                    tb_remove()
                }
        })
    }

    // Boat Details (Config)
    //
    this.initConfig = function() {

        var self = this

        self.thickbox.init()

        self.id    = self.url.clickedUrlArg('Id')

        self.loadBoatConfig()
        $('#boatConfigSaveButton').click( function() { self.saveConfig() })

        $('#addNewCondition').click( function() { addNew('Condition') })
        $('#addNewCategory').click( function() { addNew('Category') })
        $('#addNewManufacturer').click( function() { addNew('Manufacturer') })
        $('#addNewEngine').click( function() { addNew('Engine') })
    }

    this.addNew = function(type) {

        var self = this
    }
    
    this.loadBoatConfig = function() {

        var self = this

        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=loadBoatConfig&Id=' + self.id,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {

                        self.model          = data.Boat.model
                        self.scopeId        = data.Boat.scopecategoryid
                        self.categoryId     = data.Boat.categoryid
                        self.engineId       = data.Boat.enginetypeid
                        self.manufacturerId = data.Boat.manufacturerid

                        $('#boatTitle').html("Details for boat " + self.id + ": '" + self.model + "'")

                        $('#price').val(data.Boat.price)
                        $('#year').val(data.Boat.year)
                        $('#location').val(data.Boat.location)
                        $('#postcode').val(data.Boat.locationpostcode)
                        $('#ywno').val(data.Boat.ywno)

                        self.loadBoatParameters()
                    }
                }
        })
    }

   this.loadBoatParameters = function() {

        var self = this

        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=loadBoatParameters&ScopeId=' + self.scopeId +
                                                     '&CategoryId=' + self.categoryId +
                                                     '&EngineId=' + self.engineId +
                                                     '&ManufacturerId=' + self.manufacturerId,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {
                        $('#scopeTd').html(data.Scopes) 
                        $('#categoryTd').html(data.Categories) 
                        $('#engineTd').html(data.Engines) 
                        $('#manufacturerTd').html(data.Manufacturers) 

                        self.showConfigTable()
                    }
                }
        })
    }

    this.showConfigTable = function() {

        $('#boatConfigDiv').fadeIn()
    }

    this.saveConfig = function() {
    
        var self = this
        
        var price    = $('#price').val()
        var year     = $('#year').val()
        var location = $('#location').val()
        var postcode = $('#postcode').val()
        var ywno     = $('#ywno').val()
        
        var scope        = $('#scopes').val()
        var category     = $('#categories').val()
        var engine       = $('#engineTypes').val()
        var manufacturer = $('#manufacturers').val()

        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=saveBoatConfig&Id=' + self.id +
                                                 '&Price=' + price +
                                                 '&Year=' + year +
                                                 '&Location=' + location +
                                                 '&Postcode=' + postcode +
                                                 '&Ywno=' + ywno +
                                                 '&ScopeId=' + scope +
                                                 '&CategoryId=' + category +
                                                 '&EngineId=' + engine +
                                                 '&ManufacturerId=' + manufacturer,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {
                        alert('Details Saved')
                    }
                    tb_remove()
                }
        })
    }

    // CMS
    //
    this.initCMS = function() {

        var self = this

        $('#boatsDiv .enableBoat').click( function() { self.enableBoat($(this)) })
        $('#boatsDiv .deleteBoat').click( function() { self.deleteBoat($(this)) })
    }

    this.enableBoat = function(elem) {

        var self = this

        var elemId = $(elem).attr('id')
        var enable = self.html.getCheckBoxValue('#' + elemId)
        id         = elemId.split('_')
        id         = id[1]

        $('#boatDiv_' + id).addClass('selectedRow')
        if (enable == 0) {
            action = 'disableBoat'
            if (! confirm('Disable this boat?')) {
                self.html.setCheckBoxValue('#' + elemId, 1)
                $('#boatDiv_' + id).removeClass('selectedRow')
                return
            }
        } else {
            action = 'enableBoat'
            if (! confirm('Enable this boat?')) {
                self.html.setCheckBoxValue('#' + elemId, 0)
                $('#boatDiv_' + id).removeClass('selectedRow')
                return
            }
        }

        $('#boatDiv_' + 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) {
                            $('#boatDiv_' + id).addClass('disabledTr')
                        } else {
                            $('#boatDiv_' + id).removeClass('disabledTr')
                        }
                    }
                }
        })
    }    

    this.deleteBoat = function(elem) {

        var self = this

        var id = $(elem).attr('id').split('_')
        id     = id[1]

        $('#boatDiv_' + id).addClass('selectedRow')
        if (! confirm('Delete this boat?')) {
            $('#boatDiv_' + id).removeClass('selectedRow')
            return
        }

        $('#boatDiv_' + id).removeClass('selectedRow')

        $.ajax({
                  type:     'POST',
                  url:      CMSURL,
                  data:     'Action=deleteBoat&Id=' + id,
                  dataType: 'json',
                  timeout:  40000,
            error:
                function() {
                    return false;
                },
            success:
                function(data) {
                    if (data.Error) {
                        alert(data.Message)
                    } else {
                        $('#boatDiv_' + id).remove()
                        alert('Boat Deleted')
                    }
                }
        })
    }
}
