/*!
 * Zigiz JavaScript API
 *
 * Copyright 2011, Keesing Games
 */

// indexOf - https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
if(!Array.prototype.indexOf){Array.prototype.indexOf=function(searchElement){"use strict";if(this===void 0||this===null)throw new TypeError();var t=Object(this);var len=t.length>>>0;if(len===0)return-1;var n=0;if(arguments.length>0){n=Number(arguments[1]);if(n!==n)n=0;else if(n!==0&&n!==(1/0)&&n!==-(1/0))n=(n>0||-1)*Math.floor(Math.abs(n))}if(n>=len)return-1;var k=n>=0?n:Math.max(len-Math.abs(n),0);for(;k<len;k++){if(k in t&&t[k]===searchElement)return k}return-1}};

// escapeHTML - http://www.bytemycode.com/snippets/snippet/406/
if(!String.prototype.escapeHTML){String.prototype.escapeHTML=function(){return(this.replace(/&/g,'&amp;').replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/"/g,'&quot;'))}};

// zigiz skeleton
if (!window.zigiz) window.zigiz = {};
if (!window.zigiz.framework) window.zigiz.framework = function() {};
if (!window.zigiz.game) window.zigiz.game = {};
if (!window.zigiz.promotion) window.zigiz.promotion = {};

// zigiz.framework
zigiz.framework.jsencode = function(value) {

    // convert Dates into timestamps
    if (value instanceof Date) {
        return new Date(value).getTime();
    };

    // convert Arrays in semicolon separated strings
    if (value instanceof Array) {
        var values = [];
        for (var i = 0; i < value.length; i++) {
            values.push(encodeURIComponent(value[i]));
        };
        return values.join(";");
    };

    // and properly encode all values
    return encodeURIComponent(value);

};

zigiz.framework.jsonp = function(url, parameters, context, success, error, timeout) {
    /**
     * @param   url             String          URL to call.
     * @param   parameters      Map             Parameters to send. Optional.
     * @param   context         Object          Context for callback handlers. Optional.
     * @param   success         Function(data)  Successful api callback handler.
     * @param   error           Function(error) Error condition callback handler. Optional.
     * @param   timeout         Number          Timeout in ms. Optional.
     */

    var callBackName = "_jsonp_callback_" + zigiz.framework.randomstring();

    var queryString = "?jsonp=zigiz.framework." + callBackName;
    if (parameters) {
        for (var name in parameters) {
            if (parameters.hasOwnProperty(name)) {
                queryString = queryString + "&" + name + "=" + zigiz.framework.jsencode(parameters[name]);
            };
        };
    };

    // setup the callback
    zigiz.framework[callBackName] = function(data) {
        delete zigiz.framework[callBackName];
        if (data.error) {
            if (error) error(context, data);
        } else {
            success(context, data);
        };
    };

    // send the request
    var scr = document.createElement("script");
    scr.type = "text/javascript";
    scr.src = url + queryString;
    var head = document.getElementsByTagName("head")[0];
    head.insertBefore(scr, head.firstChild);

    // default to 10 second timeout
    timeout = timeout || 10000;

    // setup timeout
    window.setTimeout(function() {
        if (typeof zigiz.framework[callBackName] == "function") {

            // replace success with null callback in case the request is just very latent.
            zigiz.framework[callBackName] = function(data) {
                delete zigiz.framework[callBackName];
            };

            // call the error callback
            error(context, { result: null, error: 408, errormsg: "Request Timeout" });

            // set a longer timeout to safely clean up the unused callback.
            window.setTimeout(function() {
                if (typeof zigiz.framework[callBackName] == "function") {
                    delete zigiz.framework[callBackName];
                };
            }, 60000);
        };
    }, timeout);
};

zigiz.framework.randomstring = function(length) {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
    var randomstring = '';
    length = length || 10;
    for (var i=0; i<length; i++) {
        var rnum = Math.floor(Math.random() * chars.length);
        randomstring += chars.substring(rnum,rnum+1);
    };
    return randomstring;
};

zigiz.framework.zeropad = function(num, length) {
    var nz = num + '';
    while(nz.length < length) nz = "0" + nz;
    return nz;
};

// zigiz.game.data
if (!window.zigiz.game.data) {
    window.zigiz.game.data = function(affiliateId, channel, info) {
        this.host = 'www.zigiz.com';
        this.language = 'en-EN';

        this.setAffiliateId = function(affiliateId) {
            this.affiliateId = affiliateId;
        };
        this.setAffiliateId(affiliateId);

        this.setChannel = function(channel) {
            this.channel = channel;
        };
        this.setChannel(channel);
        
        this.setInfo = function(info) {
            this.info = info;
        };
        this.setInfo(info);

        this.setHost = function(host) {
            this.host = host;
        };
        
        this.setLanguage = function(lang) {
            this.language = lang;
        };

        this.get = function(success, error) {
            // retrieve products from zigiz using JSON-P; actual rendering is done by the success and error callback functions
            var parms = {};
            if (this.affiliateId) parms.a_aid = this.affiliateId;
            if (this.channel) parms.chan = this.channel;
            if (this.info) parms.data1 = this.info;
            zigiz.framework.jsonp('http://' + this.host + '/' + this.language + '/json/all_games', parms, this, success, error);
        };
    }
}

// zigiz.game.window
if (!window.zigiz.game.window) {
    window.zigiz.game.window = function(playMode, gameURL) {
        this.config = {};
        this.config.SP = {
            width: 800,
            height: 485,
            toolbar: 40,
            pluzzbar: 0
        };
        this.config.MP = {
            width: 960,
            height: 590,
            toolbar: 40,
            pluzzbar: 0
        };
        this.config.PG = {
            width: 960,
            height: 590,
            toolbar: 40,
            pluzzbar: 22
        };

        this.getSize = function() {
            sz = this.config[this.playMode];
            if (!sz) return false;
            sz.height += sz.toolbar;
            return sz;
        };

        this.getLink = function() {
            return "javascript:window.open('" + escape(this.gameURL) + "','gameframe','width=" + this.size.width + ",height=" + this.size.height + ",top=0,left=0,resizable=yes,toolbar=no,location=yes,directories=no,status=no,menubar=no,scrollbars=no,copyhistory=no');void(0);";
        };

        this.playMode = playMode;
        this.gameURL = gameURL;
        this.size = this.getSize();

    };
};

// zigiz.promotion.listing
if (!window.zigiz.promotion.listing) {
    window.zigiz.promotion.listing = function(affiliateId, channel, info) {
        this.host = 'www.zigiz.com';
        this.language = 'en-EN';
        this.text = { color: '#000000', bgcolor: '#FFFFFF', fontname: 'Arial', fontsize: 12 };
        this.title = { color: '#000000', bgcolor: '#FFFFFF', fontname: 'Arial', fontsize: 14 };
        this.layout = 'list';
        this.products = [];
        this.selection = 'top';
        this.autoAdd = false;
        this.maxProducts = 5;
        this.columns = 2;
        this.elementInserted = false;

        this.setAffiliateId = function(affiliateId) {
            this.affiliateId = affiliateId;
        };
        this.setAffiliateId(affiliateId);

        this.setChannel = function(channel) {
            this.channel = channel;
        };
        this.setChannel(channel);

        this.setInfo = function(info) {
            this.info = info;
        };
        this.setInfo(info);

        this.setHost = function(host) {
            this.host = host;
        };
        
        this.setLanguage = function(lang) {
            this.language = lang;
        };

        this.setTextColor = function(color, bgcolor) {
            if (color != null) this.text.color = color;
            if (bgcolor != null) this.text.bgcolor = bgcolor;
        };

        this.setTextFont = function(fontname, fontsize) {
            if (fontname != null) this.text.fontname = fontname;
            if (fontsize != null) this.text.fontsize = parseInt(fontsize);
        };

        this.setTitleColor = function(color, bgcolor) {
            if (color != null) this.title.color = color;
            if (bgcolor != null) this.title.bgcolor = bgcolor;
        };

        this.setTitleFont = function(fontname, fontsize) {
            if (fontname != null) this.title.fontname = fontname;
            if (fontsize != null) this.title.fontsize = parseInt(fontsize);
        };

        this.setLayout = function(layout) {
            switch (layout) {
                case 'list':
                case 'icons':
                case 'numbered':
                case 'screens':
                case 'descriptions':
                case 'columns':
                    this.layout = layout;
                break;
            };
        };

        this.addProduct = function(product) {
            this.products.push(parseInt(product));
        };

        this.delProduct = function(product) {
            var index = this.products.indexOf(product);
            if (index >= 0) {
                this.products.splice(index, 1);
            };
        };

        this.clearProducts = function() {
            this.products = [];
        };

        this.setSelection = function(selection) {
            switch (selection) {
                case 'top':
                case 'new':
                case 'own':
                    this.selection = selection;
                    this.setMaxProducts(0);
                break;
            };
        };

        this.setAutoAdd = function(autoAdd) {
            this.autoAdd = Boolean(autoAdd);
        };

        this.setMaxProducts = function(maxProducts) {
            var num = parseInt(maxProducts);
            if (num < 0 || num > 100) num = 0;
            this.maxProducts = num;
        };

        this.setColumns = function(columns) {
            var num = parseInt(columns);
            if (num < 0 || num > 10) num = 1;
            this.columns = num;
        };

        this.dumpCode = function() {
            var str = '';
            str += '<script language="javascript" type="text/javascript"' + "\n";
            str += ' src="http://static.zigiz.com/js/api.js"></script>' + "\n";
            str += '<script language="javascript" type="text/javascript">' + "\n";
            str += "    var listing = new zigiz.promotion.listing(";
            if (this.affiliateId) {
                str += "'" + this.affiliateId + "'";
            }
            str += ");\n";
            str += "    listing.setHost('" + this.host + "');\n";
            if (this.channel) {
                str += "    listing.setChannel('" + this.channel + "');\n";
            }
            if (this.info) {
                str += "    listing.setInfo('" + this.info + "');\n";
            }
            str += "    listing.setLanguage('" + this.language + "');\n";
            str += "    listing.setLayout('" + this.layout + "');\n";
            str += "    listing.setTitleColor('" + this.title.color + "', '" + this.title.bgcolor + "');\n";
            str += "    listing.setTitleFont('" + this.title.fontname + "', '" + this.title.fontsize + "');\n";
            str += "    listing.setTextColor('" + this.text.color + "', '" + this.text.bgcolor + "');\n";
            str += "    listing.setTextFont('" + this.text.fontname + "', '" + this.text.fontsize + "');\n";
            str += "    listing.setMaxProducts(" + this.maxProducts + ");\n";
            if (this.layout == "columns") {
                str += "    listing.setColumns(" + this.columns + ");\n";
            }
            str += "    listing.setSelection('" + this.selection + "');\n";
            str += "    listing.render();\n";
            str += '</script>' + "\n";
            return str;
        };

        this.render = function() {

            // create empty div which will be used to append actual content later
            if (!this.elementInserted) {
                this.elementId = 'listing_' + zigiz.framework.randomstring();
                document.write('<div id="' + this.elementId + '" ></div>');
                this.elementInserted = true;
            }

            // retrieve products from zigiz using JSON-P; actual rendering is done by the renderData and renderError callback functions
            var parms = {};
            switch (this.selection) {
                case 'top': parms.sort = 'popularity'; break;
                case 'new': parms.sort = 'date'; break;
            }
            if (this.products.length <= 0 && this.maxProducts > 0) parms.max = this.maxProducts;
            if (this.affiliateId) parms.a_aid = this.affiliateId;
            if (this.channel) parms.chan = this.channel;
            if (this.info) parms.data1 = this.info;
            zigiz.framework.jsonp('http://' + this.host + '/' + this.language + '/json/all_games', parms, this, this.renderData, this.renderError);

        };

        this.renderData = function(me, data) {

            // initialize
            me.renderedHTML = '';
            me.renderedJSCR = '';
            var element = document.getElementById(me.elementId);
            if (!element) return false;

            // get all product ids if not own selection
            var products = data.result.games;
            if (products.length > 0 && me.selection != 'own') {
                me.clearProducts();
                for (var i = 0; i < products.length; i++) {
                    me.addProduct(products[i].id);
                };
            };

            // prepare styles
            me.titStyle = 'font-family:' + me.title.fontname.escapeHTML() + ';font-size:' + parseInt(me.title.fontsize) + 'px;color:' + me.title.color.escapeHTML() + ';background-color:' + me.title.bgcolor.escapeHTML() + ';';
            me.texStyle = 'font-family:' +  me.text.fontname.escapeHTML() + ';font-size:' +  parseInt(me.text.fontsize) + 'px;color:' +  me.text.color.escapeHTML() + ';background-color:' +  me.text.bgcolor.escapeHTML() + ';';
            me.imgStyle = 'border-style: solid; border-width: 1px; border-color: #000000;';
            me.linStyle = 'margin:0px 0px 0px 0px;width:100%;height:8px;border-top:1px dashed;font-size: 0;';

            // render selected layout
            switch (me.layout) {
                case 'list':            _renderList(me, products); break;
                case 'numbered':        _renderNumbered(me, products); break;
                case 'columns':         _renderColumns(me, products); break;
                case 'icons':
                case 'screens':
                case 'descriptions':    _renderImages(me, products); break;
                default:
                    return false;
                break;
            };

            // insert html into element
            if (me.renderedHTML.length > 0) {
                element.innerHTML = me.renderedHTML;
            };

            // insert javascript into element
            if (me.renderedJSCR.length > 0) {
                var jstag = document.createElement('script');
                element.appendChild(jstag);
                jstag.type = 'text/javascript';
                jstag.text = me.renderedJSCR;
            };

            // success
            return true;

        };

        this.renderError = function(me, data) {
            if (console.error) console.error('Error ' + data.error + ': ' + data.errormsg);
        };

        function _renderList(me, products) {

            // render header
            me.renderedHTML += '<table align="center" border="0" cellpadding="0" cellspacing="5" style="' + me.texStyle + '">';

            me.renderedHTML += '<tr><td>';
            me.renderedHTML += '<table align="center" border="0" cellpadding="0" cellspacing="3" width="100%" style="' + me.titStyle + '"><tr><td style="' + me.titStyle + '">Zigiz</td></tr></table>';
            me.renderedHTML += '</td></tr>';

            me.renderedHTML += '<tr><td>';
            me.renderedHTML += '<table align="center" border="0" cellpadding="0" cellspacing="3" width="100%" style="' + me.texStyle + '">';

            // setup rollover images
            var rollover = zigiz.framework.randomstring();
            me.renderedJSCR += 'var rollover_' + rollover + ' = new Array();function rollover_change_' + rollover + '(num){var image=document.getElementById(\'rollover_image_' + rollover + '\');image.src=rollover_' + rollover + '[num].src;};';

            // render products
            var max = me.maxProducts; if (max <= 0) max = me.products.length;
            for (var i = 0; i < max; i++) {
                var name = null; var img = null; var window = null;

                // find matching product
                if (i < me.products.length) for (var j = 0; j < products.length; j++) {
                    if (products[j].id == me.products[i]) {
                        if (products[j].name) {
                            name = products[j].name;
                            if (products[j].playmode == 'MP') name+= ' Multiplayer';
                        };
                        if (products[j].images.screenshot) img = products[j].images.screenshot;
                        if (products[j].url) window = new zigiz.game.window(products[j].playmode, products[j].url);

                        // name
                        me.renderedHTML += '<tr><td align="left">';
                        if (name) {
                            if (window) {
                                me.renderedHTML += '<a href="' + window.getLink().escapeHTML() + '" style="' + me.texStyle + '"';
                                if (img) me.renderedHTML += ' onMouseOver="rollover_change_' + rollover + '(' + i +');return true;"';
                                me.renderedHTML += '>' + name.escapeHTML() + '</a>';
                            } else {
                                me.renderedHTML += '<span style="' + me.texStyle + '">' + name.escapeHTML() + '</span>';
                            };
                        } else {
                            me.renderedHTML += '&nbsp;';
                        };
                        me.renderedHTML += '</td>';

                        // image
                        if (i == 0) {
                            me.renderedHTML += '<td rowspan="5" style="vertical-align: top;">';
                            me.renderedHTML += '<img id="rollover_image_' + rollover + '" width="80" height="53" border="0"';
                            if (img) me.renderedHTML += ' src="' + img.escapeHTML() + '"';
                            if (name) me.renderedHTML += ' alt="' + name.escapeHTML() + '"';
                            me.renderedHTML += ' />';
                            me.renderedHTML += '</td>';
                        };
                        me.renderedHTML += '<td width="5" /></tr>';
                        if (img) me.renderedJSCR += 'rollover_' + rollover + '[' + i + ']=new Image(80,53);rollover_' + rollover + '[' + i + '].src="' + img.escapeHTML() + '";';

                    };
                };

            };

            // render footer
            me.renderedHTML += '</table></td></tr></table>';

        };

        function _renderImages(me, products) {

            // render header
            me.renderedHTML += '<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%" style="' + me.texStyle + '">';

            me.renderedHTML += '<tr><td>';
            me.renderedHTML += '<table align="center" border="0" cellpadding="0" cellspacing="3" width="100%" style="' + me.titStyle + '"><tr><td style="' + me.titStyle + '">Zigiz</td></tr></table>';
            me.renderedHTML += '</td></tr>';

            me.renderedHTML += '<tr><td>';
            me.renderedHTML += '<div style="' + me.linStyle + '"></div>';
            me.renderedHTML += '</td></tr>';

            me.renderedHTML += '<tr><td>';
            me.renderedHTML += '<table align="center" border="0" cellpadding="0" cellspacing="3" width="100%" style="' + me.texStyle + '">';

            // render products
            var max = me.maxProducts; if (max <= 0) max = me.products.length;
            for (var i = 0; i < max; i++) {
                var name = null; var description = null; var img = null; var window = null;

                // find matching product
                if (i < me.products.length) for (var j = 0; j < products.length; j++) {
                    if (products[j].id == me.products[i]) {
                        if (products[j].name) {
                            name = products[j].name;
                            if (products[j].playmode == 'MP') name+= ' Multiplayer';
                        };
                        if (me.layout == 'icons') {
                            if (products[j].images.icon) img = products[j].images.icon;
                        } else {
                            if (products[j].images.screenshot) img = products[j].images.screenshot;
                        };
                        if (products[j].url) window = new zigiz.game.window(products[j].playmode, products[j].url);
                        if (me.layout == 'descriptions' && products[j].description) description = products[j].description;

                        // image
                        var w = 100; var h = 67; if (me.layout == 'icons') { w = 37; h = 30; };
                        me.renderedHTML += '<tr><td width="' + w + '" height="' + h + '">';
                        if (window) me.renderedHTML += '<a href="' + window.getLink().escapeHTML() + '" style="' + me.texStyle + '">';
                        me.renderedHTML += '<img width="' + w + '" height="' + h + '" border="1" style="' + me.imgStyle + '"';
                        if (img) me.renderedHTML += ' src="' + img + '"';
                        if (name) me.renderedHTML += ' alt="' + name + '"';
                        me.renderedHTML += ' />';
                        if (window) me.renderedHTML += '</a>';
                        me.renderedHTML += '</td>';

                        // spacer
                        me.renderedHTML += '<td width="5" height="' + h + '">&nbsp;</td>';

                        // name and description
                        me.renderedHTML += '<td align="left" valign="top">';
                        if (name) {
                            if (window) {
                                me.renderedHTML += '<a href="' + window.getLink().escapeHTML() + '" style="' + me.texStyle + '">' + name.escapeHTML() + '</a>';
                            } else {
                                me.renderedHTML += '<span style="' + me.texStyle + '">' + name.escapeHTML() + '</span>';
                            };
                        } else {
                            me.renderedHTML += '&nbsp;';
                        };
                        if (description) {
                            me.renderedHTML += '<br><br>';
                            if (window) {
                                me.renderedHTML += '<a href="' + window.getLink().escapeHTML() + '" style="' + me.texStyle + '">' + description.escapeHTML() + '</a>';
                            } else {
                                me.renderedHTML += '<span style="' + me.texStyle + '">' + description.escapeHTML() + '</span>';
                            };
                        };
                        me.renderedHTML += '</td>';

                        // spacer
                        me.renderedHTML += '</tr><tr><td colspan="3"></td></tr>';

                    };
                };

            };

            // render footer
            me.renderedHTML += '</table></td></tr></table>';

        };

        function _renderNumbered(me, products) {

            // render header
            me.renderedHTML += '<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%" style="' + me.texStyle + '">';

            me.renderedHTML += '<tr><td>';
            me.renderedHTML += '<table align="center" border="0" cellpadding="0" cellspacing="3" width="100%" style="' + me.titStyle + '"><tr><td style="' + me.titStyle + '">Zigiz</td></tr></table>';
            me.renderedHTML += '</td></tr>';

            me.renderedHTML += '<tr><td>';
            me.renderedHTML += '<div style="' + me.linStyle + '"></div>';
            me.renderedHTML += '</td></tr>';

            me.renderedHTML += '<tr><td>';
            me.renderedHTML += '<table align="center" border="0" cellpadding="0" cellspacing="3" width="100%">';

            // render products
            var max = me.maxProducts; if (max <= 0) max = me.products.length;
            for (var i = 0; i < max; i++) {
                var name = null; var img = null; var window = null;

                // find matching product
                if (i < me.products.length) for (var j = 0; j < products.length; j++) {
                    if (products[j].id == me.products[i]) {
                        if (products[j].name) {
                            name = products[j].name;
                            if (products[j].playmode == 'MP') name+= ' Multiplayer';
                        };
                        if (products[j].images.icon) img = products[j].images.icon;
                        if (products[j].url) window = new zigiz.game.window(products[j].playmode, products[j].url);

                        // number
                        me.renderedHTML += '<tr><td>';
                        if (window) me.renderedHTML += '<a href="' + window.getLink().escapeHTML() + '" style="' + me.texStyle + '">';
                        me.renderedHTML += zigiz.framework.zeropad(i+1, 2);
                        if (window) me.renderedHTML += '</a>';
                        me.renderedHTML += '&nbsp;';

                        // name
                        if (name) {
                            if (window) {
                                me.renderedHTML += '<a href="' + window.getLink().escapeHTML() + '" style="' + me.texStyle + '">' + name.escapeHTML() + '</a>';
                            } else {
                                me.renderedHTML += '<span style="' + me.texStyle + '">' + name.escapeHTML() + '</span>';
                            };
                        } else {
                            me.renderedHTML += '&nbsp;';
                        };
                        me.renderedHTML += '</td></tr>';

                    };
                };

            };

            // render footer
            me.renderedHTML += '</table></td></tr></table>';

        };

        function _renderColumns(me, products) {

            // determine number of columns
            cols = me.columns; if (cols < 1) cols = 1; if (me.maxProducts > 0 && cols > me.maxProducts) cols = me.maxProducts;

            // render header
            me.renderedHTML += '<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%" style="' + me.texStyle + '">';

            me.renderedHTML += '<tr><td>';
            me.renderedHTML += '<table align="center" border="0" cellpadding="0" cellspacing="3" width="100%" style="' + me.texStyle + '">';

            // render products
            var max = me.maxProducts; if (max <= 0) max = me.products.length;
            for (var i = 0; i < max; i++) {
                var name = null; var img = null; var window = null;

                // find matching product
                if (i < me.products.length) for (var j = 0; j < products.length; j++) {
                    if (products[j].id == me.products[i]) {
                        if (products[j].name) {
                            name = products[j].name;
                            if (products[j].playmode == 'MP') name+= ' Multiplayer';
                        };
                        if (products[j].images.screenshot) img = products[j].images.screenshot;
                        if (products[j].url) window = new zigiz.game.window(products[j].playmode, products[j].url);

                        // handle columns
                        if (i % cols == 0) me.renderedHTML += '<tr>';

                        // name
                        var w = 150; var h = 100;
                        me.renderedHTML += '<td width="' + w + '" height="' + h + '">';
                        if (name) {
                            if (window) {
                                me.renderedHTML += '<a href="' + window.getLink().escapeHTML() + '" style="' + me.texStyle + '">' + name.escapeHTML() + '</a>';
                            } else {
                                me.renderedHTML += '<span style="' + me.texStyle + '">' + name.escapeHTML() + '</span>';
                            };
                        } else {
                            me.renderedHTML += '&nbsp;';
                        };
                        me.renderedHTML += '<div style="height:4;width:1;"></div>';

                        // image
                        if (window) me.renderedHTML += '<a href="' + window.getLink().escapeHTML() + '" style="' + me.texStyle + '">';
                        me.renderedHTML += '<img width="' + w + '" height="' + h + '" border="1" style="' + me.imgStyle + '"';
                        if (img) me.renderedHTML += ' src="' + img + '"';
                        if (name) me.renderedHTML += ' alt="' + name + '"';
                        me.renderedHTML += ' />';
                        if (window) me.renderedHTML += '</a>';
                        me.renderedHTML += '</td>';

                        // spacer
                        me.renderedHTML += '<td width="5" height="' + h + '">&nbsp;</td>';

                        // handle columns
                        if ((i % cols) == (cols - 1)) me.renderedHTML += '</tr><tr><td colspan="' + (cols*2) + '"></td></tr>';
                    };
                };

            };

            // handle columns
            if (((i - 1) % cols) != (cols -1)) {
                var last = i + cols - 1 - (i % cols);
                for (i = i; i <= last; i++) {
                    if (i % cols == 0) me.renderedHTML += '<tr>';
                    me.renderedHTML += '<td width="' + w + '" height="' + h + '">&nbsp;</td>';
                    me.renderedHTML += '<td width="5" height="' + h + '">&nbsp;</td>';
                    if ((i % cols) == (cols - 1)) me.renderedHTML += '</tr><tr><td colspan="' + (cols*2) + '"></td></tr>';
                };
            };

            // render footer
            me.renderedHTML += '</table></td></tr></table>';

        };

    };
};
listing = new zigiz.promotion.listing('gr2676');
listing.setHost('www.zigiz.com');
listing.setLanguage('nl-NL');
listing.setLayout('columns');
listing.setTitleColor('#000000', '#FFFFFF');
listing.setTitleFont('Arial', 14);
listing.setTextColor('#000000', '#FFFFFF');
listing.setTextFont('Arial', 12);
listing.setSelection('top');
listing.setMaxProducts(999);
listing.setColumns(3);
listing.setChannel('ws91');
listing.setInfo('gr4');
listing.render();

