﻿Array.prototype.contains = function(needle) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == needle) {
            return true;
        }
    }
    return false;
}

/* --- Country selector --- */
jQuery.countrySelector = {
    _tpl: '<div class="countryselector-wrapper"><div class="countryselector-background"></div><div class="countryselector"><h3>[[title]]</h3><input type="button" onclick="jQuery.countrySelector.remove();" /><ul>[[items]]</ul></div></div>',
    _tpl_item: '<li><a style="background-image: url(http://static.packardbell.com/mkt/layout/2009/images/flags/[[id]].gif);" href="[[url]]">[[name]]</a></li>',

    remove: function(e) {
        jQuery('.countryselector-wrapper').remove();
    },
    show: function(params) {
        var output = this._tpl, items = '';

        for (var i in params.countries)
        {
            var c = params.countries[i];
            if (c.id) {
                items += this._tpl_item
                    .replace('[[id]]', c.id)
                    .replace('[[name]]', c.name)
                    .replace('[[url]]', c.url);
            }
        }
        output = output
            .replace('[[items]]', items)
            .replace('[[title]]', params.title);

        jQuery('body').append(output);

        jQuery('.countryselector-background').css('opacity', .7);
        jQuery('.countryselector')
            .css('border-width', '18px 6px 6px 6px')
            .borderImage('url("http://static.packardbell.com/mkt/layout/2009/images/frame-03.png") 18 6 6 6');
    }
};

/* --- Master --- */
jQuery.master = {
    eval: function(js) {
        if (window.execScript) {
            window.execScript(js, 'javascript');
        }
        else {
            window.eval(js);
        }
    },
    include: function() {
        if (this.included.length == 0) {
            var scripts = document.getElementsByTagName("script");
            for (var i = 0; i < scripts.length; i++) {
                this.included.push(scripts[i].src);
            }
        }

        var req;
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) {
            try {
                req = new ActiveXObject('MSXML2.XMLHTTP');
            }
            catch (e) {
                req = new ActiveXObject('Microsoft.XMLHTTP');
            }
        }

        if (req) {
            for (var i = 0; i < arguments.length; i++) {
                // Synchronous request which avoid calls to loading in-file elements 
                req.open('GET', arguments[i], false);
                req.send(null);

                if (req.status == 200) {
                    this.eval(req.responseText);
                    this.included.push(arguments[i]);
                }
            }
        }
    },
    included: new Array(),
    init: function() {
        jQuery(document).ready(function() {
            // CSS3 alternative
            if (jQuery('.frame-01').length > 0) {
                jQuery('.frame-01')
                    .css('border', 'solid 9px transparent')
                    .borderImage('url("http://static.packardbell.com/mkt/layout/2009/images/frame-01.gif") 9');
            }

            if (jQuery('.frame-02').length > 0) {
                jQuery('.frame-02')
                    .css('border', 'solid transparent')
                    .css('border-width', '34px 12px 12px 12px')
                    .borderImage('url("http://static.packardbell.com/mkt/layout/2009/images/frame-02.gif") 34 12 12 12');
            }

            if (jQuery('.button-red').length > 0) {
                jQuery('.button-red')
                    .css('border-width', '0 6px')
                    .borderImage('url("http://static.packardbell.com/mkt/layout/2009/images/button-red.png") 0 6');
            }

            if (jQuery('.button-grey').length > 0) {
                jQuery('.button-grey')
                    .css('border-width', '0 6px')
                    .borderImage('url("http://static.packardbell.com/mkt/layout/2009/images/button-grey.png") 0 6');
            }

            // PNG fix for IE6
            jQuery(document).pngFix();
        });
    },
    showCountrySelector: function() {
        jQuery.countrySelector.show({
            title: 'Select one of the Packard Bell local websites',
            countries: [
                {id: 'ar', url: 'http://www.packardbell.com.ar/', name: 'Argentina'},
                {id: 'asia', url: 'http://www.packardbell-asia.com/', name: 'Asia'},
                {id: 'be', url: 'http://fr.packardbell.be/', name: 'Belgium (FR)'},
                {id: 'be', url: 'http://nl.packardbell.be/', name: 'Belgium (NL)'},
                {id: 'cl', url: 'http://www.packardbell.cl/', name: 'Chile'},
                {id: 'co', url: 'http://www.packardbell.com.co/', name: 'Colombia'},
                {id: 'cz', url: 'http://cz.packardbell.com/', name: 'Czech Republic'},
                {id: 'dk', url: 'http://www.packardbell.dk/', name: 'Denmark'},
                {id: 'fi', url: 'http://www.packardbell.fi/', name: 'Finland'},
                {id: 'fr', url: 'http://www.packardbell.fr/', name: 'France'},
                {id: 'de', url: 'http://www.packardbell.de/', name: 'German/Austria'},
                {id: 'gr', url: 'http://www.packardbell.gr/', name: 'Greece'},
                {id: 'hu', url: 'http://www.packardbell.hu/', name: 'Hungary'},
                {id: 'it', url: 'http://www.packardbell.it/', name: 'Italy'},
                {id: 'nl', url: 'http://www.packardbell.nl/', name: 'Netherlands'},
                {id: 'no', url: 'http://www.packardbell.no/', name: 'Norway'},
                {id: 'pl', url: 'http://www.packardbell.pl/', name: 'Poland'},
                {id: 'pt', url: 'http://www.packardbell.pt/', name: 'Portugal'},
                {id: 'ru', url: 'http://www.packardbell.ru/', name: 'Russia'},
                {id: 'sp', url: 'http://www.packardbell.es/', name: 'Spain'},
                {id: 'se', url: 'http://www.packardbell.se/', name: 'Sweden'},
                {id: 'ch', url: 'http://fr.packardbell.ch/', name: 'Switzerland (FR)'},
                {id: 'ch', url: 'http://de.packardbell.ch/', name: 'Switzerland (DE)'},
                {id: 'gb', url: 'http://www.packardbell.co.uk/', name: 'UK and Ireland'}
            ]
        });

        void(0);
    }
};

jQuery.master.init();
