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();
}