// Javascript function library

// Attach events
//addEvent(window, 'load', setFocus);
addEvent(window, 'load', linkPreview);


// Reusable event attacher - see http://www.onlinetools.org/articles/unobtrusivejavascript/chapter4.html
function addEvent(obj, evType, fn){ 
	if (obj.addEventListener){ 
		obj.addEventListener(evType, fn, false); 
		return true;
	} else if (obj.attachEvent){ 
		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
	} else { 
		return false; 
	} 
}

// Set the cursor focus to the first form item
// From: http://javascript.internet.com/forms/form-focus.html
// With modifications in response to newsgroup posting
function setFocus() {
	if (document.forms.length > 0) {
		// choose the first form on the page
		x=0;
		//if the name is minisearch then try the next one
		for (x=0; (document.forms[x] && (document.forms[x].name == "minisearch" || document.forms[x].name == "jumplist" || document.forms[x].name == "nofocus" || document.forms[x].name == "formnofocus" || document.forms[x].name == "f")) ; x++) {
			// if there isnt another one rechoose the first form
//			if (document.forms.length < 2) {
//				x=0;
//			}
			//x++;
		}
		if (document.forms[x]) {
			var field = document.forms[x];
			for (i = 0; i < field.length; i++) {
				if ((field.elements[i].type == "text") || (field.elements[i].type == "email") || (field.elements[i].type == "textarea") || (field.elements[i].type.toString().charAt(0) == "s")) {
					document.forms[x].elements[i].focus();
					break;
				}
			}
		}
	}
}

// Original version
function setFocusOriginal() {
	if (document.forms.length > 0) {
		var field = document.forms[0];
		for (i = 0; i < field.length; i++) {
			if ((field.elements[i].type == "text") || (field.elements[i].type == "textarea") || (field.elements[i].type.toString().charAt(0) == "s")) {
				document.forms[0].elements[i].focus();
				break;
			}
		}
	}
}

/*
// Function to add a highlight effect for the field focus of form elements
function highlightCurrentField (field, active) {
	if (!document.layers && field){
		field.style.border  = active ? "1px solid #4A536A" : "1px solid #CCCCCC";
		field.style.color   = active ? "#000000" : "#999999";
	}
}
*/




/* http://particletree.com/features/preview-your-links-with-unobtrusive-javascript/ */
function addEvent(obj, evType, fn){ 
	if (obj.addEventListener){ 
		obj.addEventListener(evType, fn, false); 
		return true; 
	} 
	else if (obj.attachEvent){ 
		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
	}
	else { 
		return false; 
	} 
}
function linkPreview(){
	var links = document.getElementsByTagName("a");

	for (i=0; i<links.length; i++){
		var currentLink = links[i];
		var	images = currentLink.getElementsByTagName("img");
		
	 	// Check if the link is an image. We don't want icons next to images.
		if (images.length == 0){
			var linkHref = currentLink.href;
			checkLinks(linkHref, currentLink)
		}
	}
}
function checkLinks(linkHref, currentLink){
	var linkHrefParts = linkHref.split(".");
	
	// extension is the last element in the LinkSplit array
	var extension = linkHrefParts[linkHrefParts.length - 1];
	
	// In some browsers there is a "/" placed after the link. removes the "/"
	extension = extension.replace("/","");
	
	if( extension in { doc:1, docx:1, odt:1, pdf:1, ppt:1, pptx:1, pps:1, txt:1, xls:1, csv:1, xlsx:1, zip:1 } ){
		append(currentLink, extension );
	}
}
function append(currentLink, extension){
	var span = document.createElement('span');
	span.innerHTML = "<img src=\"/images/fileicons/" + extension + ".gif\"" +
			     " alt=\"[" + extension + "]\"" + 
			     " title=\"[" + extension + "]\"" + 
			     " class=\"extension file-" + extension + "\"" +
			     " width=\"16\" height=\"16\" /> ";
	currentLink.parentNode.insertBefore(span,currentLink);

//	span.className = "file-" + extension;
}

