Premiere = {

	loadXML: function(xmlFile){
			
		this.CJL_loadXmlDocument(xmlFile);
	
	},
	parseXML: function(xmlFile){

		var xdoc;
		if(window.ActiveXObject){
			xdoc=new ActiveXObject("Microsoft.XMLDOM");
			xdoc.async="false";
			xdoc.loadXML(xmlFile);
			var doc = xdoc.documentElement;
			Premiere.traverse(doc);
			return true;

		}
		else{
			parser=new DOMParser();
			xdoc=parser.parseFromString(xmlFile,"text/xml");
			var doc = xdoc.documentElement;
			Premiere.traverse(doc);
			return true;
			
		}

	}
	,
	CJL_loadXmlDocument: function (xmlFile, cbFun){

		new Request({
			url: xmlFile,
			async: false,
			method: 'get',
			onSuccess: function(){
				
				Premiere.parseXML(this.response.text);
			}
			
		}).send();	

	}
	,
	traverse: function(tree) {
		
		if(tree.hasChildNodes()){
			var folders = tree.getElementsByTagName("folder");
			for(var i=0; i< folders.length; i++){
				var folderName = folders[i].getElementsByTagName("name");
				var name = folderName[0].firstChild.nodeValue;
				Premiere.addFolderElement(name, i);

								
				var files = folders[i].getElementsByTagName("file");
				var fileContainer = $('fileContainer');
				var ul = new Element('ul', {id: 'fileList-'+ i, 'class':'fileList'});
				
				
				for(var j=0; j< files.length; j++){
					var filename = files[j].getElementsByTagName("filename");
					var fname = filename[0].firstChild.nodeValue;
					var filepath = files[j].getElementsByTagName("filepath");
					var path = filepath[0].firstChild.nodeValue;
				
					
					Premiere.addFileElement(fname, path, j, ul);
				}
				fileContainer.adopt(ul);
				
			}
			
			
		}
	},
	
	addFileElement: function( name, path,  i, element){
		var li = new Element('li', {id: 'file-'+ i});
		var icon = new Element('div',{'class':'acrobat'});
		var label = new Element('a', {'href': path, id:'label', 'target':'new', 'class':'file-'+i, html: name});
		icon.injectInside(li);
		label.injectAfter(icon);
		li.injectInside(element);
	},
	
	addFolderElement: function(name, i){
		var fileContainer = $('folderList');
		var li = new Element('li', {id: 'dir-'+ i});
		var folderIcon = new Element('div',{ id:'icon-'+i, 'class':'closed'});
		
		var folderLabel = new Element('a', {'href':'#', id:'folder-'+i, 'class':'folderLabelClosed', html: name});

		folderLabel.addEvent('click', function(e) {
			e = new Event(e).stop();	
			var prop  = this.getProperty('class');
			if(prop == 'folderLabelClosed'){
				this.setProperty('class', '');
				this.setProperty('class', 'folderLabelOpen');
				var id = this.getProperty("id");
				var index = id.split('-')[1];
				
				var icon = document.getElementById('icon-' + index);
				icon.setProperty('class', '');
				icon.setProperty('class', 'open');
				
				var fileList =document.getElementById("fileList-" + index);
				fileList.setStyle('display', 'block');
				
				
				pieces = $('folderList').getElements('li');	
			
				i=0
				pieces.each(function(li){
					var id = li.getProperty("id");
					var ind = id.split('-')[1];
					var label = document.getElementById('folder-' + ind);
					var icon = document.getElementById('icon-' + ind);
					if(index != ind){
						icon.setProperty('class', '');
						icon.setProperty('class', 'closed');
						
						label.setProperty('class', '');
						label.setProperty('class', 'folderLabelClosed');

						var fileList =document.getElementById("fileList-" + ind);
						fileList.setStyle('display', '');
					}
					i++;
				});
			}
			else if(prop == 'folderLabelOpen'){
			
				this.setProperty('class', '');
				this.setProperty('class', 'folderLabelClosed');
				var id = this.getProperty("id");
				var index = id.split('-')[1];
				var icon = document.getElementById('icon-' + index);
				icon.setProperty('class', '');
				icon.setProperty('class', 'closed');
				
				var fileList =document.getElementById("fileList-" + index);
				fileList.setStyle('display', '');
			}
		});
		
		var table = new Element('table');
		var tbody = new Element('tbody');
		var row = new Element('tr');
		var data = new Element('td');
		table.injectInside(li);
		tbody.injectInside(table);
		row.injectInside(tbody);
		data.injectInside(row);
		folderIcon.injectInside(data);
		var data2 = new Element('td');
		folderLabel.injectInside(data2);
		data2.injectAfter(data);
		fileContainer.adopt(li);
	
	}
	,
	toggleFilePanel: function(){
	
		var rootlink = $('rootLink');
		
	
		var k = rootlink.getProperty('class');
		if(k.contains("isopen")){
			
			rootlink.setProperty('class', '');
			rootlink.setProperty('class', 'titleLink');
			
			var filepanel = $('filePanel');
			filepanel.setStyle('display', 'none');
		}
		else{
			rootlink.setProperty('class', '');
			rootlink.setProperty('class', 'titleLink isopen');
			
			var filepanel = $('filePanel');
			filepanel.setStyle('display', 'block');
		}
		
	}
	
	
}
