// ==UserScript==
// @name           Ticketmaster2hCalendar
// @namespace      http://naarvoren.nl/artikel/monkeyformats/
// @description    Changes concert listings into hCalendar.
// @include        http://www.ticketmaster.nl/html/*
// ==/UserScript==

function replaceClass(thepath, theclass) {
	var allDivs, thisDiv;
	allDivs = document.evaluate(thepath,document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
	for (var i = 0; i < allDivs.snapshotLength; i++) {
    	thisDiv = allDivs.snapshotItem(i);
    	thisDiv.className += theclass;
	}
}

function replaceText(thepath, searchText, replaceText) {
	var allDivs, thisDiv;
	re = new RegExp(searchText,'g');
	allDivs = document.evaluate(thepath,document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
	for (var i = 0; i < allDivs.snapshotLength; i++) {
    	thisDiv = allDivs.snapshotItem(i);
		thisDiv.innerHTML = thisDiv.innerHTML.replace(re, replaceText);
	}
}	
		
replaceClass("//table[contains(@class,'tableListing')]/tbody/tr"," vevent");
replaceClass("//span[contains(@class,'tableListing-act')]"," summary");
replaceText("//span[contains(@class,'tableListing-date')]", "(([0-9][0-9])/([0-9][0-9])/([0-9][0-9]).*?([0-9][0-9])\.([0-9][0-9]) uur)", "<abbr class=\"dtstart\" title=\"20$4-$3-$2T$5:$6\">$1</abbr>");
replaceClass("//span[contains(@class,'tableListing-venue')]/a"," location");

replaceClass("//div[@class='artistContent']"," vevent");
replaceClass("//div[contains(@class,'vevent')]/h3"," summary");
replaceClass("//div[contains(@class,'vevent')]/a"," location");

replaceText("//div[contains(@class,'vevent')]", "(([0-9][0-9])/([0-9][0-9])/([0-9][0-9]).*?([0-9][0-9])\.([0-9][0-9]) uur)", "<abbr class=\"dtstart\" title=\"20$4-$3-$2T$5:$6\">$1</abbr>");

