var studienList;
var mainContentArea;
var docs = new Array();
var docTable;

window.onload= initApplication;

function initApplication(){
	
	// Event-Handler an Menüeinträge koppeln
	if (document.getElementById("menus") != null)
		document.getElementById("menus").onclick = manageMenus;
		
	if (document.getElementById("inhalte") != null)	
		document.getElementById("inhalte").onclick = manageInhalte;
	
	if (document.getElementById("panel") != null)
		document.getElementById("panel").onclick = managePanel;
		
	if (document.getElementById("studies") != null)	
		document.getElementById("studies").onclick = manageStudies;
		
	if (document.getElementById("press") != null)
		document.getElementById("press").onclick = managePress;
		
	if (document.getElementById("folder") != null)	
		document.getElementById("folder").onclick = manageFolders;
	
	// Referenzen auf HTML Elemente
	mainContentArea = document.getElementById("mainContent");

}

function manageMenus() {
	
	
	
}


function clearMainContentArea() {
	
	while (mainContentArea.hasChildNodes())
	mainContentArea.removeChild(mainContentArea.lastChild);
	
	
}

function makeEditable(id){
     Event.observe(id, 'click', function(){edit($(id))}, false);
     Event.observe(id, 'mouseover', function(){showAsEditable($(id))}, false);
     Event.observe(id, 'mouseout', function(){showAsEditable($(id), true)}, false);
 }

 function showAsEditable(obj, clear){
 	
 		
     if (!clear){
          Element.addClassName(obj, 'editable');
     }else{
          Element.removeClassName(obj, 'editable');
     }
}



function manageStudies(){

	//baueDocumentManagementButtons(1);
	aktualisiereDocTable(1);
}


function baueDocumentManagementButtons(doctype){
	
	// Baue ein div fuer den Button, der den Dialog zum Fileupload öffnet 
	// Zuerst ueberpruefen, ob das Element schon existiert 
	if (document.getElementById("newDocButtonDiv") != null){
		var newDocButton = document.getElementById("newDocButtonDiv");
			mainContentArea.removeChild(newDocButton);
		
	}	
		
	var newDocButtonDiv = document.createElement("div"); 
	newDocButtonDiv.setAttribute("id", "newDocButtonDiv"); 
	newDocButtonDiv.innerHTML="<a href=\"javascript:oeffneDocUploadFenster(\'phpfuncs\/uploadDoc.php?doctype=" + doctype + "\');\">Neues Dokument uploaden</a>"; 
	mainContentArea.appendChild(newDocButtonDiv); 
	
	// Baue einen "Aktualisieren" Button
	// Zuerst prüfen, ob das Element schon existiert
	if (document.getElementById("divAktualisierenButton") != null){
		var divAktualisieren = document.getElementById("divAktualisierenButton");
			mainContentArea.removeChild(divAktualisieren);
		
			
	}
		var divAktualisierenButton = document.createElement("div");
		divAktualisierenButton.setAttribute("id","divAktualisierenButton");
		divAktualisierenButton.innerHTML="<a href=\"javascript:aktualisiereDocTable(" + doctype+ ");\">Aktualisieren</a>";
		mainContentArea.appendChild(divAktualisierenButton);
	
	
	//aktualisiereDocTable(doctype);
	
}

function clearNode(knoten){
	
	var i=0;
	   
	if (knoten.hasChildNodes()) {
      
        for (i; i < knoten.childNodes.length; i++) {
            knotenneu = knoten.childNodes[i]; 
            knoten.removeChild(knotenneu);
            //knoten.removeChild(knoten.childNodes[2]);
            //ausgabe += liste_unterknoten(knotenneu); // Rekursion
        }
        
    }
    
}

function edit(obj){
	
		Element.hide(obj);
	
		var textarea=	'<div class="inplaceEdit" id="' + obj.id + '_editor">';
		textarea = textarea + '<textarea id="' + obj.id + '_edit" name="' + obj.id + '" rows="1" cols="5">';
		textarea = textarea + obj.innerHTML + '</textarea><br>';
		var button = '<input id="' + obj.id + '_save" type="button" value="Speichern" /> <input id="' + obj.id + '_cancel" type="button" value="Abbruch" /></div>';
	
		new Insertion.After(obj, textarea+button);

   	Event.observe(obj.id+'_save', 'click', function(){saveChanges(obj)}, false);
	  Event.observe(obj.id+'_cancel', 'click', function(){cleanUp(obj)}, false);

}

function saveChanges(obj){
    var new_content = escape($F(obj.id+'_edit'));

    obj.innerHTML = "Saving…";
    Element.addClassName(obj, 'saving');
    
    
    cleanUp(obj, true);
     
    // Baue XmlHTTPRequest Objekt zur Kommunikation mit dem Server
		var myAjax = new Ajax();
		myAjax.method ="POST";
		myAjax.url="phpfuncs/saveDocChanges.php";
		myAjax.params="content=" + new_content + "&id=" + obj.id; 
		myAjax.onSuccess = function(txt, xml){editComplete(txt, xml, obj);}
    myAjax.doRequest();

 }

 function editComplete(txt, xml, obj){
 		 Element.removeClassName(obj, 'saving');
     obj.innerHTML = txt;
     showAsEditable(obj, true);
 }
 
 function editOfStatusComplete(txt, xml, obj){
 	
 		var selectedValue = txt;
 		
     //obj.innerHTML = htmlText;
     
     obj = getComboBoxForDocStatuses(obj.id, selectedValue);
     
     showAsEditable(obj, true);
 }


 function editFailed(t, obj){
     obj.innerHTML = 'Sorry, the update failed.';
     cleanUp(obj);
 }

function cleanUp(obj, keepEditable){
     Element.remove(obj.id+'_editor');
     Element.show(obj);
     if (!keepEditable) showAsEditable(obj, true);
 }

function aktualisiereDocTable(doctype){
	
			clearMainContentArea();
			baueDocumentManagementButtons(doctype);
			
	  	docTable = createDocTable();
	  
	  	// Baue ein div für die Tabelle, um die Position leichter ändern zu können
			var docTableDiv = document.createElement("div");
			docTableDiv.setAttribute("id", "docTableDiv");
			docTableDiv.appendChild(docTable);
			
			mainContentArea.appendChild(docTableDiv);
	
	
		  // Baue XmlHTTPRequest Objekt zur Kommunikation mit dem Server
			var myAjax = new Ajax();
			myAjax.method ="POST";
			myAjax.url="phpfuncs/getDocs.php";
			var time = new Date();
			myAjax.params="doctype=" + doctype + "&time=" + time.getTime();
			myAjax.onSuccess = function(txt,xml){
		
	
		if (txt){
					docs = txt.split("|");
		}
			
		docs.sort();
	
				for (i=1;i<docs.length;i++){
				
				var file_name = docs[i].split("-")[0];	
				var file_title = docs[i].split("-")[1];
				var file_db_id = docs[i].split("-")[2];
				var file_status = docs[i].split("-")[3];
				
				var row = document.createElement("tr");
				var colDocName = document.createElement("td");
				var colBezeichnung = document.createElement("td");
				colBezeichnung.setAttribute("id",file_db_id);
				
				
				var colStatusCombo = document.createElement("td");
				
				docTable.appendChild(row);
				row.appendChild(colDocName);
				row.appendChild(colBezeichnung);
				row.appendChild(colStatusCombo);
				
				var file_name_node = document.createTextNode(file_name);
				colDocName.appendChild(file_name_node);
				
				var file_title_node = document.createTextNode(file_title);
				
				colBezeichnung.appendChild(file_title_node);
				
				var comboBox = getComboBoxForDocStatuses(file_db_id, file_status);
				colStatusCombo.appendChild(comboBox);
				
				// Mache die Spalte für den Namen des Links editierbar
				makeEditable(file_db_id);	
				
			}
			
		
		}		
			
			
		myAjax.doRequest();
}

function oeffneDocUploadFenster (docurl) {
 fenster = window.open(docurl, "Dokumentenupload", "width=450,height=200,status=yes,scrollbars=yes,resizable=no");
 fenster.focus();
}

// Baut eine Tabelle zur Darstellung der Menüpunkte
function createMenuEditTable() {
	
			var table = document.createElement("table");
			table.setAttribute("border","0");
			table.setAttribute("class","table");
		
			var header = document.createElement("tr");
			var col1 = document.createElement("td");
			var col2 = document.createElement("td");
			var col3 = document.createElement("td");
			var col4 = document.createElement("td");
			
			
			col1.innerHTML="Name";
			col2.innerHTML="Inhalt";
			col3.innerHTML="Obermen&uuml;";
			col4.innerHTML="Teil";
	
		  col1.setAttribute("class","tableHeader");
		  col2.setAttribute("class", "tableHeader");
		  col2.setAttribute("class","tableHeader");
		  col3.setAttribute("class","tableHeader");
		  
		  header.appendChild(col1);
		  header.appendChild(col2);
		  header.appendChild(col3);
		  header.appendChild(col4);
		  
		  table.appendChild(header);
		  
		  return table;
	
}


// Baut eine Tabelle mit Header für die Verwaltung der Dokumente
function createDocTable() {
	
			var table = document.createElement("table");
			table.setAttribute("border","0");
			table.setAttribute("class","table");
		
			var header = document.createElement("tr");
			var col1 = document.createElement("td");
			var col1_1 = document.createElement("td");
			var col2 = document.createElement("td");
			
			
			col1.innerHTML="Dokument";
			col1_1.innerHTML="Bezeichnung";
			col2.innerHTML="Status";
	
		  col1.setAttribute("class","tableHeader");
		  col1_1.setAttribute("class", "tableHeader");
		  col2.setAttribute("class","tableHeader");
		  
		  header.appendChild(col1);
		  header.appendChild(col1_1);
		  header.appendChild(col2);
		  
		  table.appendChild(header);
		  
		  return table;
	
}

function getComboBoxForDocStatuses(doc_id, pre_selection_value){
	
	var combo = document.createElement("select");
	var opt1 = document.createElement("option");
	var opt2 = document.createElement("option");
	
	opt1.setAttribute("value","1");
	opt1.innerHTML="Aktiv";
	
	if (pre_selection_value == 1)
		opt1.selected=true;
	
	
	opt2.setAttribute("value","2");
	opt2.innerHTML="Inaktiv";
	
	if (pre_selection_value == 2)
		opt2.selected=true;
	
	combo.appendChild(opt1);
	combo.appendChild(opt2);
	
	combo.setAttribute("id", "doc_combo_" + doc_id);
	combo.setAttribute("onchange", "changeDocStatusHandler(value, this.id)");
	
	return combo;
}


// Diese Funktion liest die aktuellen Werte aller
// Dokument-Status-Komboboxen aus und speichert diese in die Datenbank
// mittels eines Ajax Aufrufes
function changeDocStatusHandler(value, id){
	
		var doc_id = id.split("_")[2];
		
		// Baue XmlHTTPRequest Objekt zur Kommunikation mit dem Server
		var myAjax = new Ajax();
		myAjax.method ="POST";
		myAjax.url="phpfuncs/saveDocStatusChange.php";
		myAjax.params="active_flag=" + value + "&id=" + doc_id; 
		myAjax.onSuccess = function(txt, xml){editOfStatusComplete(txt, xml, $(id));}
    myAjax.doRequest();
	
	
}




function manageInhalte(){
	
			
}


function managePanel(){
	
			
}


function manageFolders() {
	
	aktualisiereDocTable(3);
	
}

function managePress() {
	
	aktualisiereDocTable(2);
	
}


function oeffnefenster (url) {
 fenster = window.open(url, "Dokument", "width=600,height=400,status=no,scrollbars=yes,resizable=yes");
 fenster.focus();
}


