function jsnAddEvent(target, event, func){ 
	if (target.addEventListener){ 
		target.addEventListener(event, func, false); 
		return true; 
	} else if (target.attachEvent){ 
		var result = target.attachEvent("on"+event, func); 
		return result; 
	} else { 
		return false; 
	}
}

function jsnCheckSubstring(targetString, targetSubstring, delimeter)
{
	var parts = targetString.split(delimeter);
	for (var i = 0; i < parts.length; i++){
		if (parts[i] == targetSubstring) return true;
	}
	return false;
}

function jsnGetElementsByClass(targetParent, targetTag, targetClass)
{
	if(!targetParent.getElementsByTagName) return;
	
	var elements, tags;
	
	tags = targetParent.getElementsByTagName(targetTag);
	elements = [];
	
	for(var i=0;i<tags.length;i++){
		if(jsnCheckSubstring(tags[i].className, targetClass, " ")){
			elements[elements.length] = tags[i];
		}
	}
	
	return elements;
}

function jsnTagDig(targetTag, targetName, digLevel){
	if(digLevel) {
		var n, d;
		n = targetTag.childNodes;
		for(var i=0;i<n.length;i++){
			d = n[i];
			if(d.tagName == targetName)
				return jsnTagDig(d, targetName, --digLevel);
		}
	}
	return targetTag;
}

function makeImageMenu(menuId, imageFolder, imagePrefix, imageType, items)
{
	if (!document.getElementById) return;
	
	var list = document.getElementById(menuId);
	var listItems;
	
	if(list != undefined) {
		listItems = list.getElementsByTagName("LI");
		for(i=0;i<listItems.length;i++){
			listItems[i].style.backgroundImage = "url(" + imageFolder + imagePrefix + items[i] + imageType + ")";
		}
	}
}

function makeDivMenu(menuId, color)
{
	if (!document.getElementById) return;
	
	var list = document.getElementById(menuId);
	var listItems;
	
	if(list != undefined) {
		listItems = list.getElementsByTagName("LI");
		for(i=0;i<listItems.length;i++){
			if(i==0) listItems[i].style.border = "none";
			listItems[i].style.borderLeftColor = color;
		}
	}
}

function makeImageList(listClass, imageFolder, imagePrefix, imageType)
{
	if (!document.getElementById) return;
	
	var lists = jsnGetElementsByClass(document, "UL", listClass);
	var list;
	var listItems;
	
	if(lists != undefined) {
		for(j=0;j<lists.length;j++){
			list = lists[j];
			listItems = list.getElementsByTagName("LI");
			for(i=0,k=0;i<listItems.length;i++){
				if(listItems[i].parentNode.className == listClass) {
					listItems[i].style.backgroundImage = "url(" + imageFolder + imagePrefix + (k+1) + imageType + ")";
					k++;
				}
			}
		}
	}
}

function jsnMatchHeights(parent, containerTag, containerClass, itemTag, itemClass, itemLevel, heightOffset)
{
	var parents;
	parents = jsnGetElementsByClass(parent, containerTag, containerClass);
	
	for(var i=0;i<parents.length;i++){
		var targetParent, targetDivs, maxHeight, divHeight, d, offset;
		
		targetParent = parents[i];
		divs = jsnGetElementsByClass(targetParent, itemTag, itemClass);
		targetDivs = [];
		maxHeight = 0;
		
		for(var i=0; i<divs.length; i++){
			d = jsnTagDig(divs[i], itemTag, itemLevel);
			targetDivs[targetDivs.length] = d;

			if(d.offsetHeight){
				 divHeight = d.offsetHeight; 					
			} else if(d.style.pixelHeight){
				 divHeight = d.style.pixelHeight;					
			}
			
			maxHeight = Math.max(maxHeight, divHeight);
	    }
		
		for(var i=0;i<targetDivs.length;i++){
			d = targetDivs[i];
			d.style.height = (maxHeight - heightOffset) + "px";
		}
	}
}