﻿// JavaScript Document RSS Feed

//--- Settings ---
var msgreadyload = 'RSS wordt verwerkt...';
var msgonload = 'RSS wordt geladen...';
var errRetrieveXML = 'Probleem met het laden van de xml...';


var ddd;
var dd;
var DD;
var MM;
var YYYY;

//--- Functions ---
function RSSFeed(fUrlXML, fWDivId, fCharset, fDateFormat, fBullet, fEnclosure, fCntItems, fMoreInfo, fMoreInfoImg, fAlternating, fTargetURL, fTarget){
  var xmlhttp = null;
  if(fCharset == null || fCharset == ""){
    fCharset = "utf-8";
  }

  //create xmlhttp object.
  if(window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
    }
  else if (window.ActiveXObject) {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
  try {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
  } catch (e) {}

  //check state
  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
      //alert('XMLHttpRequest.responseXML.xmlEncoding: '+xmlhttp.responseXML.xmlEncoding);
      writeRSS(xmlhttp.responseXML, fUrlXML, fWDivId, fCharset, fDateFormat, fBullet, fEnclosure, fCntItems, fMoreInfo, fMoreInfoImg, fAlternating, fTargetURL, fTarget);
    }
  }
  xmlhttp.open("GET", fUrlXML, true);
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset:" + fCharset);
    xmlhttp.send(null);

    return true;
  }

function writeRSS(items,fUrlXML, fWDivId, fCharset, fDateFormat, fBullet, fEnclosure, fCntItems, fMoreInfo, fMoreInfoImg, fAlternating, fTargetURL, fTarget) {
  var output = "";
  var items_count = items.getElementsByTagName('item').length;
  if(items_count > fCntItems){
    if(fCntItems != 0){
      items_count = fCntItems;
    }
  }

  var rssitem = null;
  var rsstitle = null;
  var rsslink = null;
  var rssdescription = null;
  var rsspubdate = null;
  var rssenclosure = null;
  
  var nedStatTitle = null;
  var nedStatLink = null;

  for(var i=0; i<items_count; i++) {
    rssitem = items.getElementsByTagName('item')[i];

    rsstitle = getnodeValue(rssitem, 'title');
    rsslink = getnodeValue(rssitem, 'link');
    if (fTargetURL.length > 0) {
        rsslink = fTargetURL;
    }
    rssdescription = getnodeValue(rssitem, 'description');
    rsspubdate = getnodeValue(rssitem, 'pubDate');
    rsspubdate = formatDate(rsspubdate);
    rssenclosure = getAttribute(rssitem.getElementsByTagName('enclosure')[0], "url");

    if(fAlternating == true && (i % 2) == 1){
      output+='<div class="rss_item_II">';
    }else{
      output+='<div class="rss_item">';
    }

    output+='   <div class="rss_top">';
    output+='     <div class="rss_top_left"></div>';
    output+='     <div class="rss_top_middle"></div>';
    output+='     <div class="rss_top_right"></div>';
    output+='   </div>';
    output+='   <div class="rss_middle">';
    output+='     <div class="rss_middle_left"></div>';
    output+='     <div class="rss_info">';

    //Include Enclosure ?
    if(fEnclosure){
      output+='       <div class="rss_enclosure">'
      if(rssenclosure != ""){
          output+='         <img src="' + rssenclosure + '" class="enclosure_image" alt="' + rsstitle + '" />';
        }
        output+='       </div>';
      }
	
	try {
		nedStatTitle = rsstitle;
		nedStatTitle = nedStatTitle.replace(/ /g, '-').replace(/[^a-zA-Z 0-9]+/g,'-').replace(/-*$/g,'');
		nedStatTitle = nedStatTitle.toLowerCase();
	}
	catch(e) {
		nedStatTitle = rsstitle;
	}
	nedStatLink = 'http://be.sitestat.com/vrt/radio2-be/s?clickout.VAN.radio2.sportoverzicht.NAAR.sporza.' + nedStatTitle + '&amp;ns_type=clickout&amp;ns_url=' + rsslink;

    //Bullet or No Bullet ?
    if(fBullet){
      output+='       <div class="rss_title"><ul><li class="rss_li"><a href="' + nedStatLink + '" target="'+fTarget+'" class="link_title"><span class="rss_title">' + rsstitle + '</span></a></li></ul></div>';
    }else{
      output+='       <div class="rss_title"><a href="' + nedStatLink + '" target="'+fTarget+'" class="link_title"><span class="rss_date">' + rsspubdate + '</span><span class="rss_title">' + rsstitle + '</span></a></div>';
    }

    output+='        <div class="rss_description"><span class="rss_date">' + rsspubdate + ' - </span><span class="rss_description_text">' + rssdescription + '</span></div>';

    //More Info or not ?
    if(fMoreInfo){
      if(fMoreInfoImg != null && fMoreInfoImg != ""){
        output+='     <div class="rss_moreinfo_main"><a href="' + nedStatLink + '" target="'+fTarget+'"><img src="' + fMoreInfoImg + '" class="rss_moreinfo" alt="' + rsstitle + '" /></a></div>';
      }else{
        output+='     <div class="rss_moreinfo_main"><a href="' + nedStatLink + '" target="'+fTarget+'">meer info...</a></div>';
      }
    }

    output+="      </div>";
    output+='      <div class="rss_middle_right"></div>';
    output+='    </div>';
    output+='    <div class="rss_bottom">';
    output+='      <div class="rss_bottom_left"></div>';
    output+='      <div class="rss_bottom_middle"></div>';
    output+='      <div class="rss_bottom_right"></div>';
    output+='    </div>';
    output+='</div>';
  }
  document.getElementById(fWDivId).innerHTML = output;
}



function getnodeValue(rssItem, tagName){
  try{
    //return rssItem.getElementsByTagName(tagName)[0].firstChild.nodeValue;
    return getText(rssItem.getElementsByTagName(tagName)[0].firstChild);
  }catch(e){
    return "";
  }
}

function getAttribute(nodeElement, attr){
  try{
    return nodeElement.attributes.getNamedItem(attr).value;
  }catch(e){
    return "";
  }
}

function formatDate(rssDate){
  try{
    //Mon, 18 Dec 2006 10:58:30 +0100
    //strip last 4 char.
    rssDate = rssDate.substr(0,rssDate.length - 6)
    splitdate = rssDate.split(" ");
    ddd = splitdate[0].substr(0,splitdate[0].length - 1);
    DD = splitdate[1];
    MM = splitdate[2];
    YYYY = splitdate[3];
    hhhh = splitdate[4];

    return DD + ' ' + MM + ' ' + YYYY;
  }catch(e){
  }
}

function getText(node) {
  var text="";
  try {
    //serialization to string DOM Browser
    var serializer = new XMLSerializer("UTF-8");
    text = serializer.serializeToString(node);
  }catch(e) {
    // serialization of an XML to String (IE only)
    text = node.xml;
  }
  return text;
}

var Utf8 = {
  encode : function (string) {
    string = string.replace(/\r\n/g,"\n");
    var utftext = "";

    for (var n = 0; n < string.length; n++) {
      var c = string.charCodeAt(n);
      if(c < 128) {
        utftext += String.fromCharCode(c);
      }else if((c > 127) && (c < 2048)) {
        utftext += String.fromCharCode((c >> 6) | 192);
        utftext += String.fromCharCode((c & 63) | 128);
      }else{
        utftext += String.fromCharCode((c >> 12) | 224);
        utftext += String.fromCharCode(((c >> 6) & 63) | 128);
        utftext += String.fromCharCode((c & 63) | 128);
      }
    }
    return utftext;
  },
  decode : function (utftext) {
    var string = "";
    var i = 0;
    var c = c1 = c2 = 0;

    while ( i < utftext.length ) {
      c = utftext.charCodeAt(i);
      if(c < 128) {
        string += String.fromCharCode(c);
        i++;
      }else if((c > 191) && (c < 224)) {
        c2 = utftext.charCodeAt(i+1);
        string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
        i += 2;
      }else{
        c2 = utftext.charCodeAt(i+1);
        c3 = utftext.charCodeAt(i+2);
        string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
        i += 3;
      }
    }
    return string;
  }
}