/**************************************************************
* datei: documentTree.js
* datum: 18.10.2007
* autor: david jufer
* beschreibung:
* JavaScript Objekt vom dokumentbaum um das ein und ausklappen 
* der ordner zu erreichen
**************************************************************/


// global var
var objDocumentTree;
var treeUlCounter = 0;
var nodeId = 1;


// constructor
function DocumentTree(id){
	// declaration
	var documentTreeId;
	var pathImages;
	var imagePlus;
	var imageMinus;
	var imageFolder;
	// initialize
	this.pathImages = '/_kirchenweb/images/'; 
	this.imageFolder = 'folder.gif';
	this.imagePlus = 'plus.gif';
	this.imageMinus = 'minus.gif';
	// set documentTreeId
	if(id!='') this.documentTreeId = id;
}
	
	
// dcumentTree class
DocumentTree.prototype = {
	// function initTree
	initTree : function(){
		objDocumentTree = this;
		var objTree = document.getElementById(this.documentTreeId);
		var treeItems = objTree.getElementsByTagName('LI');	// Get an array of all items
		for(var no=0;no<treeItems.length;no++){
			// get attribute noChildren
			var noChildren = false;
			var tmpVar = treeItems[no].getAttribute('noChildren');
			if(!tmpVar)tmpVar = treeItems[no].noChildren;
			if(tmpVar=='true')noChildren=true;
			// get attribut fileType
			var fileType = '';
			var tmpVar = treeItems[no].getAttribute('fileType');
			if(!tmpVar)tmpVar = treeItems[no].fileType;
			if(tmpVar!='')fileType=tmpVar;
			fileType = String(fileType).toLowerCase();
					 
			nodeId++;
			var subItems = treeItems[no].getElementsByTagName('UL');
			var img = document.createElement('IMG');
			img.src = this.pathImages + this.imagePlus;
			img.onclick = objDocumentTree.showHideNode;
			
			if(subItems.length==0){
				img.style.visibility='hidden';
			}else{
				subItems[0].id = 'tree_ul_' + treeUlCounter;
				treeUlCounter++;
			}
			var aTag = treeItems[no].getElementsByTagName('A')[0];
			aTag.id = 'nodeATag' + treeItems[no].id.replace(/[^0-9]/gi,'');
			if(!noChildren)aTag.onclick = objDocumentTree.showHideNode;
			treeItems[no].insertBefore(img,aTag);
			var folderImg = document.createElement('IMG');
			folderImg.onclick = objDocumentTree.showHideNode;
			if(treeItems[no].className){
				folderImg.src = this.pathImages + treeItems[no].className;
			}else{
				if(noChildren){
					switch(fileType) {
						case "pdf":
							folderImg.src = this.pathImages + 'file_pdf.gif';
							break;
						case "doc":
							folderImg.src = this.pathImages + 'file_doc.gif';
							break;
						case "docx":
							folderImg.src = this.pathImages + 'file_doc.gif';
							break;
						case "xls":
							folderImg.src = this.pathImages + 'file_xls.gif';
							break;
						case "xlsx":
							folderImg.src = this.pathImages + 'file_xls.gif';
							break;
						case "ppt":
							folderImg.src = this.pathImages + 'file_ppt.gif';
							break;
						case "pptx":
							folderImg.src = this.pathImages + 'file_ppt.gif';
							break;
						case "pps":
							folderImg.src = this.pathImages + 'file_ppt.gif';
							break;
						case "ppsx":
							folderImg.src = this.pathImages + 'file_ppt.gif';
							break;
						case "ppl":
							folderImg.src = this.pathImages + 'file_ppl.gif';
							break;
						case "zip":
							folderImg.src = this.pathImages + 'file_zip.gif';
							break;
						case "rar":
							folderImg.src = this.pathImages + 'file_rar.gif';
							break;
						case "htm":
							folderImg.src = this.pathImages + 'file_htm.gif';
							break;
						case "html":
							folderImg.src = this.pathImages + 'file_htm.gif';
							break;
						case "bmp":
							folderImg.src = this.pathImages + 'file_bmp.gif';
							break;
						case "jpg":
							folderImg.src = this.pathImages + 'file_jpg.gif';
							break;
						case "jpeg":
							folderImg.src = this.pathImages + 'file_jpg.gif';
							break;
						case "gif":
							folderImg.src = this.pathImages + 'file_gif.gif';
							break;
						case "png":
							folderImg.src = this.pathImages + 'file_png.gif';
							break;
						case "swf":
							folderImg.src = this.pathImages + 'file_swf.gif';
							break;
						case "mp3":
							folderImg.src = this.pathImages + 'file_mp3.gif';
							break;
						case "wav":
							folderImg.src = this.pathImages + 'file_wav.gif';
							break;
						case "mp4":
							folderImg.src = this.pathImages + 'file_mpg.gif';
							break;
						case "mpg":
							folderImg.src = this.pathImages + 'file_mpg.gif';
							break;
						case "mpeg":
							folderImg.src = this.pathImages + 'file_mpg.gif';
							break;
						case "avi":
							folderImg.src = this.pathImages + 'file_mpg.gif';
							break;
						case "wmv":
							folderImg.src = this.pathImages + 'file_wmv.gif';
							break;
						case "mov":
							folderImg.src = this.pathImages + 'file_mov.gif';
							break;
						case "rm":
							folderImg.src = this.pathImages + 'file_rm.gif';
							break;
						case "exe":
							folderImg.src = this.pathImages + 'file_exe.gif';
							break;
						default:
							folderImg.src = this.pathImages + 'file.gif';
							break;
					}
				}else{
					folderImg.src = this.pathImages + this.imageFolder;
				}
			}
			treeItems[no].insertBefore(folderImg,aTag);
		}
	}
	,
	// function showHideNode
	showHideNode : function(e,inputId)
	{
		if(inputId){
			if(!document.getElementById(inputId))return;
			thisNode = document.getElementById(inputId).getElementsByTagName('IMG')[0]; 
		}else{
			thisNode = this;
			if(this.tagName=='A') thisNode = this.parentNode.getElementsByTagName('IMG')[0];	
			if(this.tagName=='IMG') thisNode = this.parentNode.getElementsByTagName('IMG')[0]; // dj kw
		}
		if(thisNode.style.visibility=='hidden')return;		
		var parentNode = thisNode.parentNode;
		inputId = parentNode.id.replace(/[^0-9]/g,'');
		if(thisNode.src.indexOf(objDocumentTree.imagePlus)>=0){
			thisNode.src = thisNode.src.replace(objDocumentTree.imagePlus,objDocumentTree.imageMinus);
			var ul = parentNode.getElementsByTagName('UL')[0];
			ul.style.display='block';
		}else{
			thisNode.src = thisNode.src.replace(objDocumentTree.imageMinus,objDocumentTree.imagePlus);
			parentNode.getElementsByTagName('UL')[0].style.display='none';
		}	
		return false;						
	}
	,
	// function expandAll
	expandAll : function()
	{
		var treeItems = document.getElementById(this.documentTreeId).getElementsByTagName('LI');
		for(var no=0;no<treeItems.length;no++){
			var subItems = treeItems[no].getElementsByTagName('UL');
			if(subItems.length>0 && subItems[0].style.display!='block'){
				objDocumentTree.showHideNode(false,treeItems[no].id);
			}			
		}
	}	
	,
	// function collapseAll
	collapseAll : function()
	{
		var treeItems = document.getElementById(this.documentTreeId).getElementsByTagName('LI');
		for(var no=0;no<treeItems.length;no++){
			var subItems = treeItems[no].getElementsByTagName('UL');
			if(subItems.length>0 && subItems[0].style.display=='block'){
				objDocumentTree.showHideNode(false,treeItems[no].id);
			}			
		}		
	}
	
} // class end
