// JavaScript Document
var TITLE 		= 1;
var DESC 		= 2;
var PAGENR		= 3;
var	SUBPAGENR 	= 4;
var RTYPE 		= 5;
var PUBDATE		= 6;
var DATE 		= 7;
var TIME 		= 8;
var SHORTTIME 		= 9;

var UITSMIJTER_TITLE 	= 1;
var UITSMIJTER_FLV		= 2;
var UITSMIJTER_BODY 	= 3;
var UITSMIJTER_LINKS	= 4;
var UITSMIJTER_ANKEILER	= 5;

var req;	// our AJAX request
var isreq;	// is there a request`

var rpos;   // position in que
var requesttype;
var alldone;

var urls 		= Array(); // que with requests
var urltypes 	= Array(); // que with requests types

var rcnt = 0;
var newsItems		= new Array();
var completeItems 	= new Array();
var uitsmijtersItems 	= new Array();
var webDirName = "";

isreq 			= false;
rpos 			= 0;
alldone 		= false;

/*
Standaard functie voor aanmaken van een XML Http Request
*/
function createXMLHttpRequest() 
{
	var ua;
	if(window.XMLHttpRequest) {
		browser = 1;
		try {
      	ua = new XMLHttpRequest();
    	} catch(e) {
	      ua = false;
    }	
  	} else if(window.ActiveXObject) {
		browser = 2;
	    try {
      	ua = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch(e) {
      ua	 = false;
    	}
  	}
  	return ua;
}

function doRequest(url,rtype) {
	if (isreq == false) // check if there is no other request
	{
		req = createXMLHttpRequest();
		isreq = true;
		req.onreadystatechange = handleXML;
		requesttype = rtype;
		req.open('GET',url);
		req.send(null);
	} else {
		urltypes[urltypes.length] = rtype;
		urls[urls.length] = url;
		rcnt = rcnt + 1;
	};
}

function handleXML() {
	if (req.readyState == 4) {
		if (req.status == 200) { // check if the XML is loaded
			// read teletekst headlines..
			var nl = req.responseXML.getElementsByTagName('item');
			var nlItems,nlPageNo;
			var nli,i;
			var temp;
			for( i=0; i < nl.length; i++ )
		    {
				nli = nl.item(i);
				newsItem = new Array();
				newsItem[RTYPE] = requesttype;
				temp = nli.getElementsByTagName("title")[0];
				if ( temp.childNodes.length>0 ) newsItem[TITLE] = nli.getElementsByTagName("title")[0].firstChild.nodeValue;
				newsItem[PUBDATE] = nli.getElementsByTagName("pubDate")[0].firstChild.nodeValue;
				
				try {
					newsItem[PAGENR] = nli.getAttribute('page').toString();
					newsItem[SUBPAGENR] = nli.getAttribute('sub').toString();					
				} catch(e) {
					// error
				}
				nlPageNo = nli.getElementsByTagName("nos:ttpage");
				if ( nlPageNo.length > 0 ) newsItem[PAGENR] = nlPageNo[0].firstChild.nodeValue;
				nlPageNo = nli.getElementsByTagName("ttpage");
				if ( nlPageNo.length > 0 ) newsItem[PAGENR] = nlPageNo[0].firstChild.nodeValue;
				
				nlPageNo = nli.getElementsByTagName("nos:ttsub");
				if ( nlPageNo.length > 0 ) newsItem[SUBPAGENR] = nlPageNo[0].firstChild.nodeValue;
				nlPageNo = nli.getElementsByTagName("ttsub");
				if ( nlPageNo.length > 0 ) newsItem[SUBPAGENR] = nlPageNo[0].firstChild.nodeValue;
				
				var datetime_array	= newsItem[PUBDATE].split(" ");
//				var timestamp =  Date.parse(newsItem[PUBDATE]);
				var timestamp =  Date.parse(datetime_array[3] + ' ' + datetime_array[2] + ' ' + datetime_array[1]);
				
				var datum = new Date();
				datum.setTime(timestamp);
				
				// fix the date
				newsItem[DATE] = datum.getFullYear();
				newsItem[DATE] = newsItem[DATE] + '-';
				if ( (datum.getMonth()+1) < 10) newsItem[DATE] = newsItem[DATE] + '0';
				newsItem[DATE] = newsItem[DATE] + (datum.getMonth()+1);
				newsItem[DATE] = newsItem[DATE] + '-';
				if (datum.getDate() < 10)  newsItem[DATE] = newsItem[DATE] + '0';
				newsItem[DATE] = newsItem[DATE] + datum.getDate();

				// fix the time
				newsItem[TIME] = datetime_array[4];
				var timearr = datetime_array[4].split(":");
				newsItem[SHORTTIME] = timearr[0] + ':' + timearr[1];
			

				if (datetime_array.length > 6 ) {
					var gtmarr = datetime_array[6].split("+");
					if (gtmarr.length>1) {
						try { 
							var myInt = parseFloat( gtmarr[1].substring(0,3) );
							var extraUren = (myInt / 10);
							var uren = parseFloat(timearr[0]) + parseFloat(extraUren);
							if (uren < 10) uren = '0' + uren;
							newsItem[SHORTTIME] = uren+ ':' + timearr[1];
						} catch (e) { 
							alert(e);
							// error 
						} 
					}
				}
				newsItems[newsItems.length] = newsItem;
			};


			if (requesttype=='readitem') {
				try{				
					// is the page an XML page from teletekst output
					var nlAr = req.responseXML.getElementsByTagName('tt_pag');
					var nlContent = req.responseXML.getElementsByTagName('content');
					var k,elNode,tempNode,prevNode,a;
					var htmlStr, hasBR;;
					var ttNr = "index";
					htmlStr = "";
					
					// get the pagenumber for sitestat
					if (nlAr.length > 0 ) {
						elNode = nlAr.item(0);
						ttNr = elNode.getAttribute('nr').toString();
					}					
					if (nlContent.length > 0 ) {
						for (k=0;k<nlContent.length;k++) {
							elNode = nlContent.item(k);
							if (elNode.childNodes.length > 0) {
								htmlStr = htmlStr + '<p>';
								for (a=0; a<elNode.childNodes.length; a++) {
									if (a==0) {
										hasBR = 0;
									};
									if ( (a==0) && (elNode.getAttribute('sub').toString()=='1') ) {
										//htmlStr = htmlStr + '&#9632';
									};
									tempNode = elNode.childNodes.item(a);
									if (tempNode.nodeName == '#text') {
										htmlStr = htmlStr + tempNode.nodeValue;
									}
									if (tempNode.nodeName == 'bullet') {
										htmlStr = htmlStr + '&#9632';
									}
									if (tempNode.nodeName == 'strong') {
										if (tempNode.childNodes.length > 0) {
											if (hasBR>0) htmlStr = htmlStr + '<br /><br />'; 
											if ((tempNode.firstChild.nodeValue!=' ') &&  (tempNode.firstChild.nodeValue!=null) &&  (tempNode.firstChild.nodeValue!='null') &&  (tempNode.firstChild.nodeValue!='')) {
												htmlStr = htmlStr + '<strong>' + tempNode.firstChild.nodeValue + '</strong><br />';
												hasBR++;
											}
										}
									}
									if (tempNode.nodeName == 'br') {
										if (a>0) {
											prevNode = elNode.childNodes.item(a-1)
											if (prevNode.nodeName == 'br') htmlStr = htmlStr + '</p><p>';
										}
									}
								}
								htmlStr = htmlStr + '</p>';
								htmlStr = htmlStr + '<div class="sitestat"><img src="http://nl.sitestat.com/klo/nosrtv/s?' + webDirName + '.ttplayer.' + ttNr + '&amp;category=' + webDirName + '&amp;ns_webdir=' + webDirName + '&amp;ns_channel=nieuws_informatie&amp;ns_auto=yes" width="1" height="1" alt="sitestat tracker icon" /></div>';
							}
						}
						newsItems[iNo][DESC] = htmlStr;
						WriteNewsItem();
					} else {
						newsNotCorrect();						
					}
				} catch (err) {
					newsNotCorrect();
				}					
			}

			var nlUit	 = req.responseXML.getElementsByTagName('media');
			if (nlUit.length > 0 ) {
				for (k=0;k<nlUit.length;k++) {
					elNode = nlUit.item(k);
					if (elNode.childNodes.length > 0) {
						uitSmijter = new Array();
						for (a=0; a<elNode.childNodes.length; a++) {
							tempNode = elNode.childNodes.item(a);
							if (tempNode.nodeName=='flv') 	uitSmijter[UITSMIJTER_FLV] = tempNode.firstChild.nodeValue;
							if (tempNode.nodeName=='title') uitSmijter[UITSMIJTER_TITLE] = tempNode.firstChild.nodeValue;
							if (tempNode.nodeName=='body') 	uitSmijter[UITSMIJTER_BODY] = tempNode.firstChild.nodeValue;
							if (tempNode.nodeName=='links') 	uitSmijter[UITSMIJTER_LINKS] = tempNode.firstChild.nodeValue;
							if (tempNode.nodeName=='ankeiler') 	uitSmijter[UITSMIJTER_ANKEILER] = tempNode.firstChild.nodeValue;
						}
						uitsmijtersItems[uitsmijtersItems.length] = uitSmijter;						
					}
				}
			}

		}  else {
			// ok the request did not result in a 404 code
			// is the request type a 'readitem' then delete the subitem
			if (requesttype=='readitem') {
				newsNotFound();
			}
		}
		
		
		isreq = false;
		// if there are request 	
		if (urls.length > rpos) {
			rpos++;
			requesttype = urltypes[(rpos-1)];
			doRequest(urls[(rpos-1)],urltypes[(rpos-1)]);
		} else {
			alldone = true;
		}
	}
}

