/*jslint browser: true */
// define correct path for files inclusion
var scripts = document.getElementsByTagName('script'),
    path = scripts[scripts.length - 1].src.split('?')[0],
    cdn = path.split('/').slice(0, -1).join('/') + '/',
    alreadyLaunch = (alreadyLaunch === undefined) ? 0 : alreadyLaunch;
var tarteaucitron = {
    "cdn": cdn,
    "user": {},
    "lang": {},
    "services": {},
    "state": [],
    "launch": [],
    "init": function (params) {
        "use strict";
        if (alreadyLaunch === 0) {
            alreadyLaunch = 1;
            if (window.addEventListener) {
                window.addEventListener("load", tarteaucitron.load(params), false);
            } else {
                window.attachEvent('onload', tarteaucitron.load(params));
            }
        }
    },
    "load": function (params) {
        "use strict";
        var cdn = tarteaucitron.cdn,
            language = tarteaucitron.getLanguage(),
            pathToLang = cdn + 'lang/tarteaucitron.' + language + '.js',
            pathToServices = cdn + 'tarteaucitron.services.js',
            linkElement = document.createElement('link'),
            defaults = {
                "hashtag": '#tarteaucitron',
                "highPrivacy": false,
                "orientation": "top",
                "removeCredit": false,
                "showAlertSmall": true
            };
        
        // Step 0: get params
        if (params !== undefined) {
            tarteaucitron.extend(defaults, params);
        }
        
        // the hashtag need to be global
        tarteaucitron.hashtag = defaults.hashtag;
                
        // Step 1: load css
        linkElement.rel = 'stylesheet';
        linkElement.type = 'text/css';
        linkElement.href = cdn + 'css/tarteaucitron.css';
        document.getElementsByTagName('head')[0].appendChild(linkElement);
        // Step 2: load language and services
        tarteaucitron.addScript(pathToLang, '', function () {
            tarteaucitron.addScript(pathToServices, '', function () {
                var body = document.body,
                    div = document.createElement('div'),
                    hostname = document.location.hostname,
                    hostRef = document.referrer.split('/')[2],
                    isNavigating = (hostRef === hostname) ? true : false,
                    isAutostart,
                    isDenied,
                    isAllowed,
                    isResponded,
                    cookie = tarteaucitron.cookie.read(),
                    s = tarteaucitron.services,
                    service,
                    html = '',
                    lastTitle,
                    alert = false,
                    index,
                    orientation = 'Top';
                // dedup, clean and sort job[]
                function cleanArray(arr) {
                    var i,
                        len = arr.length,
                        out = [],
                        obj = {};
 
                    for (i = 0; i < len; i += 1) {
                        if (!obj[arr[i]]) {
                            obj[arr[i]] = {};
                            if (tarteaucitron.services[arr[i]] !== undefined) {
                                out.push(arr[i]);
                            }
                        }
                    }
                    return out;
                }
                tarteaucitron.job = cleanArray(tarteaucitron.job);
                tarteaucitron.job = tarteaucitron.job.sort(function (a, b) {
                    if (s[a].type + s[a].key > s[b].type + s[b].key) { return 1; }
                    if (s[a].type + s[a].key < s[b].type + s[b].key) { return -1; }
                    return 0;
                });
                // Step 3: prepare the html
                html += '
';
                html += '';
                html += '';
                html += '   
';
                html += '       ' + tarteaucitron.lang.close;
                html += '   
';
                html += '   
';
                html += '       ' + tarteaucitron.lang.info;
                html += '       
';
                html += '           ' + tarteaucitron.lang.disclaimer;
                html += '      
';
                html += '   
';
                html += '   
';
                
                html += '
';
                html += '   
';
                html += '       ' + tarteaucitron.lang.all + '';
                html += '   
';
                html += '   
';
                html += '       
';
                html += '           ' + tarteaucitron.lang.allow;
                html += '       
 ';
                html += '       
';
                html += '           ' + tarteaucitron.lang.deny;
                html += '       
';
                html += '   
';
                html += '
';
                html += '
';
                for (index = 0; index < tarteaucitron.job.length; index += 1) {
                    service = s[tarteaucitron.job[index]];
                    if (lastTitle !== service.type) {
                        html += '
';
                        html += '   ' + tarteaucitron.lang[service.type].title;
                        html += '   
';
                        html += '       ' + tarteaucitron.lang[service.type].details;
                        html += '   
';
                        html += '
';
                        lastTitle = service.type;
                    }
                    html += '
';
                    html += '   
';
                    html += '   
';
                    html += '       
';
                    html += '           ' + tarteaucitron.lang.allow;
                    html += '       
 ';
                    html += '       
';
                    html += '           ' + tarteaucitron.lang.deny;
                    html += '       
';
                    html += '   
';
                    html += '
';
                    html += '
';
                }
                html += '   
';
                
                if (defaults.removeCredit === false) {
                    html += '   ';
                }
                
                html += '
';
                    html += '   ';
                    html += '       ' + tarteaucitron.lang.alertBigPrivacy;
                    html += '   ';
                    html += '   ';
                    html += '       ' + tarteaucitron.lang.personalize;
                    html += '   ';
                    html += '
';
                } else {
                    html += '';
                    html += '   ';
                    html += '       ' + tarteaucitron.lang.alertBig;
                    html += '   ';
                    html += '   ';
                    html += '       ' + tarteaucitron.lang.acceptAll;
                    html += '   ';
                    html += '   ';
                    html += '       ' + tarteaucitron.lang.personalize;
                    html += '   ';
                    html += '
';
                }
                
                if (defaults.showAlertSmall === true) {
                    html += '';
                    html += '   ' + tarteaucitron.lang.alertSmall;
                    html += '   
';
                    html += '       ';
                    html += '       ';
                    html += '       ';
                    html += '   
';
                    html += '
';
        html += '   
';
        html += '      
' + id + ' ' + tarteaucitron.lang.fallback + '
';
        html += '      
';
        html += '          ' + tarteaucitron.lang.allow;
        html += '       
';
        html += '   
';
        html += '
 ';
            
            tarteaucitron.proTemp = '';
        }
    }
};
';
            
            tarteaucitron.proTemp = '';
        }
    }
};