// This script is distributed without warranties of any kind whatsoever,
// to the extend allowed by applicable law. The
// author is not responsible for damages resulting from its use.

// ==UserScript==
// @name               	CTV Employee Directory MicroFormats Extension
// @author				Andy Pemberton - CapTech Ventures
// @namespace		
// @date				2007-9-25
// @description         Wrap CapTech Portal employee directory in MicroFormats to export them to AddressBook, Outlook, etc.
// @include             https://portal.captechventures.com/Employee%20Directory/*
// ==/UserScript==

var MicroFormatWrapCTVPortal = new Object();

MicroFormatWrapCTVPortal.init = function(){
	var employeeDirContainer = document.getElementById('WebPartWPQ4');

	if(employeeDirContainer){
		
		if(employeeDirContainer.childNodes && employeeDirContainer.childNodes[1]){
	
			var employeeTables = employeeDirContainer.childNodes[1].getElementsByTagName('TABLE');
			
			for(var i=0;i<employeeTables.length;i++){
				employeeTables[i].className+=' vcard';
			
				var employeeCols = employeeTables[i].getElementsByTagName('TD');
			
				var img = employeeCols[0].getElementsByTagName('IMG')[0];
				var anch = employeeCols[0].getElementsByTagName('A')[0];
					anch.href = img.src;
					anch.className+=' photo';	
			
				var email = employeeCols[1].getElementsByTagName('IMG')[0].alt;
			
				employeeCols[1].innerHTML += '<span style="position:absolute;left:-9999px" class="email">'+email+'</span>';
				employeeCols[1].getElementsByTagName('A')[1].className+=' fn n';
				var fname = employeeCols[1].getElementsByTagName('A')[1].innerHTML.split(" ")[0];
				var lname = employeeCols[1].getElementsByTagName('A')[1].innerHTML.split(" ")[1];
				var fname = '<span class="given-name">'+fname+'</span> ';
				var lname = '<span class="family-name">'+lname+'</span> ';
				employeeCols[1].getElementsByTagName('A')[1].innerHTML = fname + lname;
			
			
				employeeCols[4].innerHTML = '<span class="tel"><span class="type">cell</span>: <span class="value">'+employeeCols[4].innerHTML.replace(/[a-z\(\)]/g,'')+'</span></span>';
				employeeCols[5].innerHTML = '<span class="tel"><span class="type">work</span>: <span class="value">'+employeeCols[5].innerHTML.replace(/[a-z\(\)]/g,'')+'</span></span>';
			
			}
		}
	}
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

MicroFormatWrapCTVPortal.init();

