/*
AmsterdamFM and Double7FM presents: "saltoOnDemand" 
this script is:
- free to use
- free to modify

Disclaimer: No hamsters were hurt or abused for research and development of this script.
*/

var arrWeekdays = new Array("zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag");
var arrMonths = new Array("januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december");


// add match fucntion to array object
Array.prototype.match = function(strValue) {
	for (var i in this) {
		if (this[i]==strValue) return i;
	}
	return -1
}
// object to store data of a show with scheduled day and time in a week
function show(strDay, iHour, sName)
{
	this.dayName = strDay;
	this.day = arrWeekdays.match(strDay);
	this.hour = iHour;
	this.name = sName;
}
// object that contains data for a link
function ShowLink(sDate, sTime, sShowName, sLink) {
	this.date = sDate;
	this.time = sTime;
	this.showName = sShowName;
	this.link = sLink;
}
 
// The script
function saltoOnDemand(kanaal) {
	this.arrShows = new Array();
	
	this.addShow = function(sDayName, iHour, sName) {
		if (sDayName.toLowerCase() == 'werkdag') {
			for (var i=1;i<6;i++) {
				this.arrShows[this.arrShows.length] = new show(arrWeekdays[i], iHour, sName); 
			}
		}
		else if (sDayName.toLowerCase() == 'weekend') {
			this.arrShows[this.arrShows.length] = new show(arrWeekdays[6], iHour, sName); 
			this.arrShows[this.arrShows.length] = new show(arrWeekdays[0], iHour, sName); 
		}
		else if (arrWeekdays.match(sDayName) != -1) {
			this.arrShows[this.arrShows.length] = new show(sDayName, iHour, sName); 
		}
		else if (sDayName == '') {
			for (var i=0;i<7;i++) {
				this.arrShows[this.arrShows.length] = new show(arrWeekdays[i], iHour, sName); 
			}
		}
	}
	
	this.showLinks = function(){
		var arrShowLinks = new Array();
		var strOutput='';
		var hrs = 24*56;
		
		for (var i=1; i<hrs; i++){
			var now = new Date();
			var testDate = new Date(now.setHours(now.getHours() - i));
			var Show = this.showTime(testDate);
			if (Show) {	arrShowLinks[arrShowLinks.length] = this.addShowLink(testDate, Show.name);	}
		}
		
		var lastShowdate ='';
		for (var i=0; i<arrShowLinks.length; i++) {
			if (arrShowLinks[i].date != lastShowdate) {
				if (lastShowdate != '') {
					strOutput += '</ul></fieldset>';
				}
				strOutput += '<fieldset><legend>' +  arrShowLinks[i].date + '</legend><ul>'
			}
			strOutput += '<li>' + this.showLink(arrShowLinks[i]) + '</li>';
			lastShowdate = arrShowLinks[i].date;
			
		}
		strOutput += '</ul></fieldset>';
		return strOutput;
	}
	
	this.showTime = function(datTest) {
		for (var i=0;i<this.arrShows.length; i++) {
			if ( (datTest.getDay() == this.arrShows[i].day) && (datTest.getHours() == this.arrShows[i].hour)) {
				return this.arrShows[i];
			}
		}
		return 
	}
	
	this.addShowLink = function(date, name) {
		var strlink = "http://www.salto.nl/streamplayer/ondemand_" + kanaal + ".asp";
		
		strlink += "?d=" + this.digit2( date.getDate() );
		strlink += "&amp;m=" + this.digit2(date.getMonth()+1);
		strlink += "&amp;y=" + this.digit2(date.getFullYear());
		strlink += "&amp;t=" + this.digit2(date.getHours()) +'00';
		var sDate = arrWeekdays[date.getDay()] + ' ' + date.getDate() + ' ' + arrMonths[date.getMonth()] + ' ' + date.getFullYear();
		var sTime = date.getHours() + ':00 ';
		return new ShowLink(sDate, sTime, name, strlink);
	}
	
	this.showLink = function(objShowDetails) {
		var strOutput = '';
		strOutput += '<a href="javascript:void(0);" onclick="window.open(\'' + objShowDetails.link + '\', \'streamplayer\', \'height=590, width=680, menubar=0, location=0, toolbar=0, scrollbars=1, status=1, resizable=1\'); return false;" Window target="_blank">';
		strOutput += '<span class="time">'+ objShowDetails.time + '</span> ' + objShowDetails.showName;
		strOutput += '</a>'
		return strOutput;
	}
	this.digit2 = function(inPut) {
		var tmp = '00' + inPut.toString();
		return tmp.substr(tmp.length-2, tmp.length);
	}
	
}