/* DOM helper functions 
----------------------------------------------------------------------------*/

/*function $(id){
	return document.getElementById(id);	
}*/

function getChildElem(elem, tagName){
	var children=elem.childNodes;
	for (var i=0;i<children.length;i++){
		var node=children[i];
		if (node.nodeType==1 && node.nodeName.toLowerCase() == tagName.toLowerCase())
			return node;
	}
	return null;
}

function getChildElems(elem, tagName){
	var childElems=new Array();
	var children=elem.childNodes;
	for (var i=0;i<children.length;i++){
		var node=children[i];
		if (node.nodeType==1 && node.nodeName.toLowerCase() == tagName.toLowerCase())
			childElems.push(node);
	}
	return childElems;
}

/* general helper functions
----------------------------------------------------------------------------*/

/* swap image to frame 2 - rollover state */
function getF2Image(imageSrc){
	if (imageSrc.indexOf("_f2")!=-1)
		return imageSrc;
	else {
		var index=imageSrc.lastIndexOf(".");
		if (index==-1)
			return imageSrc;
		return imageSrc.substring(0,index)+"_f2"+imageSrc.substring(index);
	}
}

/* swap image to frame 1 - normal state */
function getF1Image(imageSrc){
	if (imageSrc.indexOf("_f2")==-1){
		return imageSrc;
	} else {
		return imageSrc.replace("_f2","");	
	}
}

function getExtension(str){
	var index=str.lastIndexOf(".");
	if (index==-1)
		return null;
	else
		return str.substring(index+1);
}

function getEventTarget(event){
	if (!event)
		//IE
		event=window.event;	
	if (event.srcElement)
		//IE
		return event.srcElement
	else if (event.target)
		//FF
		return event.target;
	else
		return null;
}

function getCurrentStyle(elem){	
	if (elem.currentStyle)
		//IE
		return elem.currentStyle;
	else if (document.defaultView){
		//safari
		return document.defaultView.getComputedStyle(elem,null);
	} else
		//FF
		return window.getComputedStyle(elem,null);
}

function loadStylesheet(stylesheet){
	document.write("<link href=\"styles/"+stylesheet+"\" rel=\"stylesheet\" type=\"text/css\"/>");
}

function removeClass(currentClassesStr, classToRemove){
	var classes=currentClassesStr.split(" ");
	var outputClassesStr="";
	for(var i=0;i<classes.length;i++){
		if (classes[i] != classToRemove){
			if (i>0)
				outputClassesStr+=" ";
			outputClassesStr+=classes[i];
		}
	}
	return outputClassesStr;
}

function getBodyElem(){
	return document.getElementsByTagName("body")[0];
}

/* preload images
----------------------------------------------------------------------------*/

function PreloadedImages(){
	this.images=[];	
}
PreloadedImages.prototype.add=function(imageSrc){
	this.images.push(imageSrc);	
}
PreloadedImages.prototype.preload=function(){
	tImages=new Array();
	for(var i=0;i<this.images.length;i++){
		tImages[i]=new Image;
		tImages[i].src=this.images[i];
	}	
}
preloadedImages=new PreloadedImages();

function preloadImages(){
		for(var i=0;i<arguments.length;i++){
			preloadedImages.add(arguments[i]);		
		}
		preloadedImages.preload();
}

/* run on load 
----------------------------------------------------------------------------*/

function runOnLoad(func) {
    if (runOnLoad.loaded) 
			func( );    
    else 
			runOnLoad.funcs.push(func); 
}

runOnLoad.funcs = []; 
runOnLoad.loaded = false; 

runOnLoad.run = function( ) {
    if (runOnLoad.loaded) return;  

    for(var i = 0; i < runOnLoad.funcs.length; i++) {
      try { 
				runOnLoad.funcs[i]( ); 
			} catch(ignored) { }
    }

    runOnLoad.loaded = true; 
    delete runOnLoad.funcs;  
    delete runOnLoad.run;    
};

if (window.addEventListener)
	window.addEventListener("load", runOnLoad.run, false);
else if (window.attachEvent)
	window.attachEvent("onload", runOnLoad.run);
else 
	window.onload = runOnLoad.run;	
