/** * Futureweb Javascript include File (c)2007 futureweb.at **/ /** * Function to open window correct and still be xhtml strict conform. area doesn't allow rel, so used class. * Also added Google Analytics to track external links. **/ $(document).ready(function(){ initListeners(); openHighslide(); }); /** * Function that helps you opening highlside images from tinymce link functionality */ function openHighslide() { $('.openHighslide, .openhighslide').each(function() { if($(this).is('a')) { $(this).addClass('highslide'); $(this).attr('onclick', 'return hs.expand(this);'); } else { if($(this).is('img')) { imagesrc = $(this).attr('src').split("?")[0]; if(imagesrc.length > 0) { $(this).attr('onclick', 'return hs.expand(null, {src: "'+imagesrc+'"});'); } } } }); } function initListeners(){ $('a[rel$="top"]').attr("target","_top"); $('a[rel$="external"]').attr("rel", function() { return "noopener " + $(this).attr("rel") }); $('a[target$="_blank"]').attr("rel", function() { if(typeof $(this).attr("rel")!=='undefined') { return "noopener " + $(this).attr("rel"); } else { return "noopener"; } }); $('a[rel$="external"]').attr("target","_blank"); $('form[rel$="external"]').attr("target","_blank"); //$('a[rel$="external nofollow"]').attr("target","_blank"); //tracking now done by function ... and only if GA is active ... //if(typeof ga !== "undefined" && typeof ga.l !== "undefined"){ if(typeof ga !== "undefined"){ trackIt(); } } //config for link tracking ... var track_external = '/extern/link/'; var track_mailto = '/extern/mail/'; var track_download = '/extern/download/'; var track_tel = '/extern/tel/'; var track_extensions = [ 'pdf','doc','xls','csv','jpg','gif', 'mp3', 'swf','txt','ppt','zip','gz','dmg','xml' ]; function trackIt() { $('a').each(function(){ var u = $(this).attr('href'); if(typeof(u) != 'undefined'){ var newLink = decorateLink(u); if(newLink.length){ $(this).click(function(){ ga('send', 'pageview', {'page': newLink}); }); } } }); } function decorateLink(u){ var trackingURL = ''; if(u.indexOf('://') == -1 && u.indexOf('mailto:') != 0 && u.indexOf('tel:') != 0){ // no protocol or mailto - internal link - check extension var ext = u.split('.')[u.split('.').length - 1]; var exts = track_extensions; for(i = 0; i < exts.length; i++){ if(ext == exts[i]){ trackingURL = track_download + u; break; } } } else { if(u.indexOf('mailto:') == 0){ // mailto link - decorate trackingURL = track_mailto + u.substring(7); } else if(u.indexOf('tel:') == 0) { trackingURL = track_tel + u.substring(4); } else { // complete URL - check domain var regex = /([^:\/]+)*(?::\/\/)*([^:\/]+)(:[0-9]+)*\/?/i; var linkparts = regex.exec(u); var urlparts = regex.exec(location.href); if(linkparts[2] != urlparts[2]) trackingURL = track_external + u; } } return trackingURL; } /** function to control menu. if href has #: only open up child menu if href is a page: page loads, and current li has an id current added. (according to up['pid']. if up['pid'] is not set, first menuentry will have the current value. according to this id the parent and child menues are opened. this way we catch pageloads aswell as menues without link. unlimited recursive. todo: external links if they have submenues - not opened at the moment, necessary? **/ function templateMenu(){ $("#templatemenu li ul").not($(".current").children()).not($(".current").parents()).hide(); $("#templatemenu li a").click(function(){ if ($(this).parent().children("ul").is(":hidden") && $(this).attr("href") == "#") { $("#menu li ul:visible").not($(this).parent().parents()).slideUp("slow"); $(this).parent().children("ul").slideDown("slow"); return false; } if ($(this).parent().children("ul").is(":visible") && $(this).attr("href") == "#") { $("#menu li ul:visible").not($(this).parent().parents()).slideDown("slow"); $(this).parent().children("ul").slideUp("slow"); return false; } }); } /* German initialisation for the jQuery UI date picker plugin. */ /* Written by Milian Wolff (mail@milianw.de). */ jQuery(function($){ if ($.datepicker) { if(typeof(js_up_lang) != "undefined" && js_up_lang !== null) { if(js_up_lang == "en") { $.datepicker.setDefaults($.datepicker.regional['en']); } else if(js_up_lang == "it") { $.datepicker.regional['it'] = { clearText: 'cancellare', clearStatus: 'Eliminare data corrente', closeText: 'fermare', closeStatus: 'chiudere senza modifiche', prevText: '<indietro', prevStatus: 'mostrano il mese scorso', nextText: 'prima>', nextStatus: 'Mostra il mese prossimo', currentText: 'oggi', currentStatus: '', monthNames: ['gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre'], monthNamesShort: ['gen','feb','mar','apr','mag','giu','lug','ago','set','ott','nov','dic'], monthStatus: 'Mostra altro mese', yearStatus: 'Vedere altro anno', weekHeader: 'set', weekStatus: 'Settimana del mese', dayNames: ['domenica','lunedi','martedì','mercoledì','giovedi','venerdì','sabato'], dayNamesShort: ['do','lu','ma','me','gi','ve','sa'], dayNamesMin: ['do','lu','ma','me','gi','ve','sa'], dayStatus: 'Imposta DD come primo giorno della settimana', dateStatus: 'scegliere D, M d', dateFormat: 'dd.mm.yy', firstDay: 1, initStatus: 'Scegliere una data', isRTL: false }; $.datepicker.setDefaults($.datepicker.regional['it']); } else if(js_up_lang == "nl") { $.datepicker.regional['nl'] = { clearText: 'verwijderen', clearStatus: 'Verwijder de huidige datum', closeText: 'afsluiten', closeStatus: 'sluiten zonder wijzigingen', prevText: '<terug', prevStatus: 'tonen vorige maand', nextText: 'alvorens>', nextStatus: 'Toon volgende maand', currentText: 'vandaag', currentStatus: '', monthNames: ['januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december'], monthNamesShort: ['jan','feb','maa','apr','mei','juni','jul','aug','sep','okt','nov','dec'], monthStatus: 'Toon andere maand', yearStatus: 'Bekijk nog een jaar', weekHeader: 'we', weekStatus: 'Week van de maand', dayNames: ['zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag'], dayNamesShort: ['zo','ma','di','wo','do','vr','za'], dayNamesMin: ['zo','ma','di','wo','do','vr','za'], dayStatus: 'Stel DD als de eerste dag van de week', dateStatus: 'kiezen D, M d', dateFormat: 'dd.mm.yy', firstDay: 1, initStatus: 'Kies een datum', isRTL: false }; $.datepicker.setDefaults($.datepicker.regional['nl']); } else { $.datepicker.regional['de'] = { clearText: 'löschen', clearStatus: 'aktuelles Datum löschen', closeText: 'schließen', closeStatus: 'ohne Änderungen schließen', prevText: '<zurück', prevStatus: 'letzten Monat zeigen', nextText: 'Vor>', nextStatus: 'nächsten Monat zeigen', currentText: 'heute', currentStatus: '', monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'], monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'], monthStatus: 'anderen Monat anzeigen', yearStatus: 'anderes Jahr anzeigen', weekHeader: 'Wo', weekStatus: 'Woche des Monats', dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], dayStatus: 'Setze DD als ersten Wochentag', dateStatus: 'Wähle D, M d', dateFormat: 'dd.mm.yy', firstDay: 1, initStatus: 'Wähle ein Datum', isRTL: false }; $.datepicker.setDefaults($.datepicker.regional['de']); } } else { $.datepicker.regional['de'] = { clearText: 'löschen', clearStatus: 'aktuelles Datum löschen', closeText: 'schließen', closeStatus: 'ohne Änderungen schließen', prevText: '<zurück', prevStatus: 'letzten Monat zeigen', nextText: 'Vor>', nextStatus: 'nächsten Monat zeigen', currentText: 'heute', currentStatus: '', monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'], monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'], monthStatus: 'anderen Monat anzeigen', yearStatus: 'anderes Jahr anzeigen', weekHeader: 'Wo', weekStatus: 'Woche des Monats', dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], dayStatus: 'Setze DD als ersten Wochentag', dateStatus: 'Wähle D, M d', dateFormat: 'dd.mm.yy', firstDay: 1, initStatus: 'Wähle ein Datum', isRTL: false }; $.datepicker.setDefaults($.datepicker.regional['de']); } } }); /* Highslide Pagination */ var GalPagActive = false; function galPagination(highslidePagination){ if(GalPagActive==false) { $("#highslideGal li").quickpaginate({ perpage: highslidePagination, showcounter: true, pager : $(".pagination_gallery") }); GalPagActive = true; } } function newsShowDetails(id, analyticsURL) { if($('#dummyDetails_'+id).html()==" ") { //hide all others ... $('.dummyDetail').html(" "); $('.dummyDetail_right').html(" "); $('#dummyDetails_'+id).css({'height' : 'auto'}); $('#dummyDetails_'+id).html($('#details_'+id).html()); //analytics if(analyticsURL!=""){ ga('send', 'pageview', {'page': analyticsURL}); } } else { $('.dummyDetail').height(0); $('.dummyDetail_right').height(0); $('#dummyDetails_'+id).html(" "); } scrollTopVar = $('#newsNugDiv_'+id).position().top; //$(this).scrollTop($('#newsNugDiv_'+id).position().top - 8); $("html").animate({scrollTop:scrollTopVar - 8}, 'slow'); return false; } function newslistShowDetails(id, analyticsURL) { if($('#dummyDetails_'+id).html()==" ") { if (typeof newslistShowDetailsMultiple === "undefined") { //hide all others ... //$('.dummyDetail').html(" "); //$('.dummyDetail_right').html(" "); //$('.dummyDetail').css({'height' : '0'}); //$('.dummyDetail').css({'margin-top' : '0'}); $('.news_list_item').removeClass('newslist_active'); $('.dummyDetail').removeClass('newslist_dt_active'); } $('#dummyDetails_'+id).css({'height' : 'auto'}); $('#dummyDetails_'+id).css({'margin-top' : '10px'}); $('#dummyDetails_'+id).html($('#details_'+id).html()); $('#newslist_'+id).addClass('newslist_active'); $('#dummyDetails_'+id).addClass('newslist_dt_active'); //analytics if(analyticsURL!=""){ ga('send', 'pageview', {'page': analyticsURL}); } } else { /*if (typeof newslistShowDetailsMultiple === "undefined") { $('.dummyDetail').height(0); $('.dummyDetail_right').height(0); }*/ $('#dummyDetails_'+id).html(" "); $('#dummyDetails_'+id).css({'height' : '0'}); $('#dummyDetails_'+id).css({'margin-top' : '0'}); $('#newslist_'+id).removeClass('newslist_active'); $('#dummyDetails_'+id).removeClass('newslist_dt_active'); } //scrollTopVar = $('#newslist_'+id).position().top; //$(this).scrollTop($('#newsNugDiv_'+id).position().top - 8); //$("html").animate({scrollTop:scrollTopVar - 8}, 'slow'); return false; } function placesShowDetails(id, analyticsURL) { if($('#places_details_'+id).html() != " ") { if($('#places_details_'+id).is(':visible')) { $('#places_details_'+id).slideUp('slow'); scrollBackTop = $('#places_content_'+id).position().top; $("html").animate({scrollTop:scrollBackTop - 20}, 'slow'); } else { //close existing news details ... $('.places_details').slideUp('fast'); $('#places_details_'+id).slideDown('slow', function() { scrollTopVar = $('#places_details_'+id).position().top; $("html").animate({scrollTop:scrollTopVar - 20}, 'slow'); }) if(analyticsURL!=""){ ga('send', 'pageview', {'page': analyticsURL}); } } } return false; } function strpos (haystack, needle, offset) { var i = (haystack+'').indexOf(needle, (offset ? offset : 0)); return i === -1 ? false : i; } function str_replace(search, replace, subject, count) { // http://kevin.vanzonneveld.net // % note 1: The count parameter must be passed as a string in order // % note 1: to find a global variable in which the result will be given // * example 1: str_replace(' ', '.', 'Kevin van Zonneveld'); // * returns 1: 'Kevin.van.Zonneveld' // * example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars'); // * returns 2: 'hemmo, mars' var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0, f = [].concat(search), r = [].concat(replace), s = subject, ra = r instanceof Array, sa = s instanceof Array; s = [].concat(s); if (count) { this.window[count] = 0; } for (i=0, sl=s.length; i < sl; i++) { if (s[i] === '') { continue; } for (j=0, fl=f.length; j < fl; j++) { temp = s[i]+''; repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0]; s[i] = (temp).split(f[j]).join(repl); if (count && s[i] !== temp) { this.window[count] += (temp.length-s[i].length)/f[j].length;} } } return sa ? s : s[0]; } function strip_tags(str, allowed_tags) { // http://kevin.vanzonneveld.net // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // * example 1: strip_tags('
Kevin
Kevin van Zonneveld
', ''); // * returns 2: '
Kevin van Zonneveld
' // * example 3: strip_tags("Kevin van Zonneveld", ""); // * returns 3: 'Kevin van Zonneveld' // * example 4: strip_tags('1 < 5 5 > 1'); // * returns 4: '1 < 5 5 > 1' var key = '', allowed = false; var matches = []; var allowed_array = []; var allowed_tag = ''; var i = 0; var k = ''; var html = ''; var replacer = function (search, replace, str) { return str.split(search).join(replace); }; // Build allowes tags associative array if (allowed_tags) { allowed_array = allowed_tags.match(/([a-zA-Z0-9]+)/gi); } str += ''; // Match tags matches = str.match(/(<\/?[\S][^>]*>)/gi); // Go through all HTML tags for (key in matches) { if (isNaN(key)) { // IE7 Hack continue; } // Save HTML tag html = matches[key].toString(); // Is tag not in allowed list? Remove from str! allowed = false; // Go through all allowed tags for (k in allowed_array) { // Init allowed_tag = allowed_array[k]; i = -1; if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');} if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');} if (i != 0) { i = html.toLowerCase().indexOf(''+allowed_tag) ;} // Determine if (i == 0) { allowed = true; break; } } if (!allowed) { str = replacer(html, "", str); // Custom replace. No regexing } } return str; } function html_entity_decode (string, quote_style) { // http://kevin.vanzonneveld.net // + original by: john (http://www.jd-tech.net) // * example 1: html_entity_decode('Kevin & van Zonneveld'); // * returns 1: 'Kevin & van Zonneveld' // * example 2: html_entity_decode('<'); // * returns 2: '<' var hash_map = {}, symbol = '', tmp_str = '', entity = ''; tmp_str = string.toString(); if (false === (hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style))) { return false; } // fix & problem // http://phpjs.org/functions/get_html_translation_table:416#comment_97660 delete(hash_map['&']); hash_map['&'] = '&'; for (symbol in hash_map) { entity = hash_map[symbol]; tmp_str = tmp_str.split(entity).join(symbol); } tmp_str = tmp_str.split(''').join("'"); return tmp_str; } function get_html_translation_table (table, quote_style) { // http://kevin.vanzonneveld.net // + original by: Philip Peterson // % note: It has been decided that we're not going to add global // % note: dependencies to php.js, meaning the constants are not // % note: real constants, but strings instead. Integers are also supported if someone // % note: chooses to create the constants themselves. // * example 1: get_html_translation_table('HTML_SPECIALCHARS'); // * returns 1: {'"': '"', '&': '&', '<': '<', '>': '>'} var entities = {}, hash_map = {}, decimal = 0, symbol = ''; var constMappingTable = {}, constMappingQuoteStyle = {}; var useTable = {}, useQuoteStyle = {}; // Translate arguments constMappingTable[0] = 'HTML_SPECIALCHARS'; constMappingTable[1] = 'HTML_ENTITIES'; constMappingQuoteStyle[0] = 'ENT_NOQUOTES'; constMappingQuoteStyle[2] = 'ENT_COMPAT'; constMappingQuoteStyle[3] = 'ENT_QUOTES'; useTable = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS'; useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT'; if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') { throw new Error("Table: "+useTable+' not supported'); // return false; } entities['38'] = '&'; if (useTable === 'HTML_ENTITIES') { entities['160'] = ' '; entities['161'] = '¡'; entities['162'] = '¢'; entities['163'] = '£'; entities['164'] = '¤'; entities['165'] = '¥'; entities['166'] = '¦'; entities['167'] = '§'; entities['168'] = '¨'; entities['169'] = '©'; entities['170'] = 'ª'; entities['171'] = '«'; entities['172'] = '¬'; entities['173'] = ''; entities['174'] = '®'; entities['175'] = '¯'; entities['176'] = '°'; entities['177'] = '±'; entities['178'] = '²'; entities['179'] = '³'; entities['180'] = '´'; entities['181'] = 'µ'; entities['182'] = '¶'; entities['183'] = '·'; entities['184'] = '¸'; entities['185'] = '¹'; entities['186'] = 'º'; entities['187'] = '»'; entities['188'] = '¼'; entities['189'] = '½'; entities['190'] = '¾'; entities['191'] = '¿'; entities['192'] = 'À'; entities['193'] = 'Á'; entities['194'] = 'Â'; entities['195'] = 'Ã'; entities['196'] = 'Ä'; entities['197'] = 'Å'; entities['198'] = 'Æ'; entities['199'] = 'Ç'; entities['200'] = 'È'; entities['201'] = 'É'; entities['202'] = 'Ê'; entities['203'] = 'Ë'; entities['204'] = 'Ì'; entities['205'] = 'Í'; entities['206'] = 'Î'; entities['207'] = 'Ï'; entities['208'] = 'Ð'; entities['209'] = 'Ñ'; entities['210'] = 'Ò'; entities['211'] = 'Ó'; entities['212'] = 'Ô'; entities['213'] = 'Õ'; entities['214'] = 'Ö'; entities['215'] = '×'; entities['216'] = 'Ø'; entities['217'] = 'Ù'; entities['218'] = 'Ú'; entities['219'] = 'Û'; entities['220'] = 'Ü'; entities['221'] = 'Ý'; entities['222'] = 'Þ'; entities['223'] = 'ß'; entities['224'] = 'à'; entities['225'] = 'á'; entities['226'] = 'â'; entities['227'] = 'ã'; entities['228'] = 'ä'; entities['229'] = 'å'; entities['230'] = 'æ'; entities['231'] = 'ç'; entities['232'] = 'è'; entities['233'] = 'é'; entities['234'] = 'ê'; entities['235'] = 'ë'; entities['236'] = 'ì'; entities['237'] = 'í'; entities['238'] = 'î'; entities['239'] = 'ï'; entities['240'] = 'ð'; entities['241'] = 'ñ'; entities['242'] = 'ò'; entities['243'] = 'ó'; entities['244'] = 'ô'; entities['245'] = 'õ'; entities['246'] = 'ö'; entities['247'] = '÷'; entities['248'] = 'ø'; entities['249'] = 'ù'; entities['250'] = 'ú'; entities['251'] = 'û'; entities['252'] = 'ü'; entities['253'] = 'ý'; entities['254'] = 'þ'; entities['255'] = 'ÿ'; } if (useQuoteStyle !== 'ENT_NOQUOTES') { entities['34'] = '"'; } if (useQuoteStyle === 'ENT_QUOTES') { entities['39'] = '''; } entities['60'] = '<'; entities['62'] = '>'; // ascii decimals to real symbols for (decimal in entities) { symbol = String.fromCharCode(decimal); hash_map[symbol] = entities[decimal]; } return hash_map; } function isset () { // http://kevin.vanzonneveld.net // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: FremyCompany // + improved by: Onno Marsman // + improved by: Rafał Kukawski // * example 1: isset( undefined, true); // * returns 1: false // * example 2: isset( 'Kevin van Zonneveld' ); // * returns 2: true var a = arguments, l = a.length, i = 0, undef; if (l === 0) { throw new Error('Empty isset'); } while (i !== l) { if (a[i] === undef || a[i] === null) { return false; } i++; } return true; } function strstr (haystack, needle, bool) { // http://kevin.vanzonneveld.net // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: Onno Marsman // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // * example 1: strstr('Kevin van Zonneveld', 'van'); // * returns 1: 'van Zonneveld' // * example 2: strstr('Kevin van Zonneveld', 'van', true); // * returns 2: 'Kevin ' // * example 3: strstr('name@example.com', '@'); // * returns 3: '@example.com' // * example 4: strstr('name@example.com', '@', true); // * returns 4: 'name' var pos = 0; haystack += ''; pos = haystack.indexOf( needle ); if (pos == -1) { return false; } else{ if (bool){ return haystack.substr( 0, pos ); } else{ return haystack.slice( pos ); } } } function is_numeric (mixed_var) { // http://kevin.vanzonneveld.net // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: David // + improved by: taith // + bugfixed by: Tim de Koning // + bugfixed by: WebDevHobo (http://webdevhobo.blogspot.com/) // + bugfixed by: Brett Zamir (http://brett-zamir.me) // * example 1: is_numeric(186.31); // * returns 1: true // * example 2: is_numeric('Kevin van Zonneveld'); // * returns 2: false // * example 3: is_numeric('+186.31e2'); // * returns 3: true // * example 4: is_numeric(''); // * returns 4: false // * example 4: is_numeric([]); // * returns 4: false return (typeof(mixed_var) === 'number' || typeof(mixed_var) === 'string') && mixed_var !== '' && !isNaN(mixed_var); } function queryToLookup(query) { var lookup= {}; var params= query.slice(1).split(/[&;]/); for (var i= 0; i