function newstickerController(boxId, absoluteJsUrl, absoluteCssUrl) { // CONSTRUCT { var boxElement = null; var boxHtmlId = boxId; var boxPageSelect = null; var boxHeightInput = null; var boxWidthInput = null; var boxHtml = null; var pagesStack = {}; var selectedPage = 0; var selectedWidth = 0; var selectedHeight = 0; var minWidth = 150; var minHeight = 200; var jsPath = absoluteJsUrl; var cssPath = absoluteCssUrl; newstickerControllerStack.push(this); } // Internal function to store width integer in this object var readWidth = function() { var elementValue = parseInt(boxWidthInput.val()); if (elementValue > 0) { if (elementValue < minWidth) { boxWidthInput.val(minWidth); elementValue = minWidth; } selectedWidth = elementValue; } } // Internal function to store height integer in this object var readHeight = function() { var elementValue = parseInt(boxHeightInput.val()); if (elementValue > 0) { if (elementValue < minHeight) { boxHeightInput.val(minHeight); elementValue = minHeight; } selectedHeight = elementValue; } } // Internal function to store selected page ID (as integer) in this object var readPageId = function() { var selectedPageId = parseInt(boxPageSelect.val()); if (selectedPageId > 0 && typeof pagesStack[selectedPageId] != 'undefined') { if (pagesStack[selectedPageId].categoryCount > 0) { selectedPage = selectedPageId; } } } // Function to redraw code this.redrawCode = function(){ var newstickerHtml = '' + "\n" + '
' + "\n" + '' + "\n" + '
'; boxHtml.val(newstickerHtml); $('iframe#newsticker_preview').hide(); $('div#newsticker_preview_wait').show(); $.ajax({ url: '/pu_all/scripts/newsticker/saveNewstickerPreview.php', type: 'POST', data: {html: newstickerHtml}, success: function(response){ $('div#newsticker_preview_wait').hide(); $('iframe#newsticker_preview').attr('src', response).show(); } }); } // Handler function, which handles a "change" event on page select box this.handlePageSelect = function() { readPageId(); newstickerControllerStack[0].redrawCode(); } // Set up minimum values for width and height of newsticker this.setMinimumValues = function(width, height) { minWidth = parseInt(width); minHeight = parseInt(height); } // Handler function, which handles a "change" event on the input fields "width" and "height" this.handleInputChange = function(e) { var target = $(e.currentTarget); if (target.size() > 0) { var elementName = target.attr('name').toLowerCase(); if (elementName == 'width') { readWidth(); } else if (elementName == 'height') { readHeight(); } newstickerControllerStack[0].redrawCode(); } } // Function to register single pages in javascript controller this.registerPage = function(pageId, pageName, categoryCount) { pageId = parseInt(pageId); categoryCount = parseInt(categoryCount); if (pageId > 0 && pageName != '') { pagesStack[pageId] = {name: pageName, categoryCount: categoryCount}; } } // Initial function which is called from template this.init = function() { boxElement = $('div#' + boxHtmlId); if (boxElement.size() > 0) { boxPageSelect = boxElement.find('select:first'); boxHeightInput = boxElement.find('input[name=height]'); boxWidthInput = boxElement.find('input[name=width]'); boxHtml = boxElement.find('textarea:first'); boxPageSelect.change(newstickerControllerStack[0].handlePageSelect); boxElement.find('input').change(newstickerControllerStack[0].handleInputChange); readPageId(); readWidth(); readHeight(); this.redrawCode(); } } } if (typeof newstickerControllerStack == 'undefined') { newstickerControllerStack = new Array(); }