//variabelen initialiseren
var isCtrl = false;
var opEditDivVisible = false;
var opEditDivHTML = '<table id="opTable"><tr><td class="opLeeg">&nbsp;</td><td class="opTextarea"><textarea name="editor1" id="opEditTextarea"></textarea></td><td class="opRight"><input type="button" value="Opslaan" /><br /><input type="button" value="Sluiten" /></td></tr></table>';
var inst;
var opCurrentElement;
var opCurrentElementId;
var opDirty = false;

var opElement = new Array();
opElement[1] = document.getElementsByTagName("div");
opElement[2] = document.getElementsByTagName("h1");
opElement[3] = document.getElementsByTagName("h2");
opElement[4] = document.getElementsByTagName("h3");
opElement[5] = document.getElementsByTagName("h4");
opElement[6] = document.getElementsByTagName("h5");
opElement[7] = document.getElementsByTagName("h6");
opElement[8] = document.getElementsByTagName("p");
opElement[9] = document.getElementsByTagName("a");
opElement[10] = document.getElementsByTagName("td");
opElement[11] = document.getElementsByTagName("span");

//keypresses
document.onkeydown=function(e){
	
	//ctrl+e functie
	if (!e) var e = window.event;
	if(e.keyCode == 17) isCtrl=true;
	//bewerken bij ctrl+e
	if(e.keyCode == 69 && isCtrl == true) {
		//bij eerste keer overlay laden
		if(!opEditDivVisible){
			opCreateEditDiv();
		}
		isCtrl = false;
		return false;
	}
}

//top div maken
function opCreateEditDiv(){
	opCreateElement('div','opEditDiv','body');
	//document.getElementById('opEditDiv').innerHTML = opEditDivHTML;
	//opInitTinyMce();
	document.body.style.paddingTop = '180px';
	opEditDivVisible = true;
	
	var rand = Math.random();
	new Ajax.Request('onpagecms/opLogin.php?var'+rand,   
	{    
		method:'get', 
		onSuccess: function(transport){
			var response = transport.responseText || "no response text";
			//document.getElementById('opEditDiv').innerHTML = response;
			if(response == 'true'){
				opCheckPass(true);
			}else{
				document.getElementById('opEditDiv').innerHTML = response;
				document.getElementById('opPass').focus();	
			}		
	},
		onFailure: function(){ 
			alert('Er gaat wat mis met de ajax request') 
		}   
	}); 
}

function opReturn(){
	return false;	
}

//na verder klikken inlog checken
function opCheckPass(opLogedIn){
	if(opLogedIn){
		var opPassword = 'loggedin';
	}else{
		var opPassword = document.getElementById('opPass').value;
	}
	
	var rand = Math.random();	
	new Ajax.Request('onpagecms/opEdit.php?var'+rand,   
	{    
		method:'get',
		parameters: {pass: opPassword},
		onSuccess: function(transport){
			var response = transport.responseText || "no response text";
			if(response == 'false'){
				document.getElementById('opEditDiv').innerHTML = "Paswoord is fout!";
				setTimeout(opClose,1000);
			}else{
				document.getElementById('opEditDiv').innerHTML = response;
				opInitTinyMce();
				opAlterElements();
			}
	},
		onFailure: function(){ 
			alert('Er gaat wat mis met de ajax request') 
		}   
	}); 	
}

//elementen in document geschikt maken voor editten
function opAlterElements(){
	//verborgen velden aanmaken
	/*opCreateElement('input','opHiddenData','body','type','hidden');
	opCreateElement('input','opHiddenElementId','body','type','hidden');
	opCreateElement('input','opHiddenPassword','body','type','text');
	document.getElementById('opHiddenPassword').value  = opMd5Pass;*/
	
	//alle links uitzetten
	var waarde = "";
	for(var j = 1; j < 12; j++){
		for(var i = 0; i < opElement[j].length; i++){
			if(opElement[j][i].getAttribute("editId")){
				var opClass = opElement[j][i].className;
				opElement[j][i].className = opClass + " opEditStyle";
				if(opElement[j][i].href){
					opElement[j][i].href = "javascript:void(0)";
				}
				//trucje voor onclick
				var onclick_handler = function(e) { 
					var obj = e.srcElement; 
					opEditText(obj); 
				}
				
				var newAttr = document.createAttribute("onclick");    
				newAttr.nodeValue = "opEditText(this)";
				opElement[j][i].setAttributeNode(newAttr); 
				
				//opera dubbel uitsluiten
				if(navigator.appName == "Microsoft Internet Explorer"){
					opElement[j][i].attachEvent('onclick',onclick_handler);
				}
				//lege elementen weergeven
				if(opElement[j][i].innerHTML == ""){
					opElement[j][i].innerHTML = "[[leeg]]";
				}
			}else{
				if(j==9){
					opElement[j][i].href = "javascript:void(0)";
				}
			}
		}
	}
}

//bij klikken op een editveld
function opEditText(opTextField){
	var opOudeTekst = opTextField.innerHTML;
	//document.getElementById('opEditTextarea').innerHTML  = opOudeTekst;	
	inst.setContent(opOudeTekst); 
	opCurrentElement = opTextField;
	opCurrentElementId = opTextField.editId;
	return false;
}

//kijken of er wijzigingen zijn
function opCheckDirty(){
	if(opDirty){
		if(confirm("Uw heeft de huidige bewerking nog niet opgeslagen! Klik op OK om toch af te sluiten.")){
			opClose();
		}
	}else{
		opClose();
	}
}

//editor sluiten
function opClose(){
	window.location.reload();
}

function opInitTinyMce(){
	tinyMCE.init({
		mode : "textareas",
		language : "nl",
		theme : "advanced",
		save_callback: "opSendAjaxRequest",
		forced_root_block : false,
		force_br_newlines : true,
		skin : "o2k7",
		width : "100%",
		height : "155px",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_buttons1 : "undo,redo,|,link,unlink,|,bold,italic,underline,|,charmap,code",
		theme_advanced_buttons2 : "",
		theme_advanced_buttons3 : "",
		auto_focus : "opEditTextarea",
		setup : function(ed) {
			ed.onChange.add(function(ed, e){
				opMakeDirty();
			});
		}
	});	
	
	inst = tinyMCE.getInstanceById('opEditTextarea');
	
}

function opMakeDirty(){
	opDirty = true;
}
function opMakeNotDirty(){
	opDirty = false;
}

function opSendAjaxRequest(){
	var rand = Math.random();	
	var opInnerHTML = inst.getContent(); 
	new Ajax.Request('onpagecms/opSave.php?var'+rand,   
	{    
		method:'post',
		parameters: {tekst: opInnerHTML, id: opCurrentElementId},
		onSuccess: function(transport){
			var response = transport.responseText || "no response text";
			//document.getElementById('opEditDiv').innerHTML = response;
			if(response=='true'){
				opCurrentElement.innerHTML = opInnerHTML;
				opMakeNotDirty();
			}else{
				document.getElementById('opEditDiv').innerHTML = "U bent niet meer ingelogd";
				//document.getElementById('opEditDiv').innerHTML = response;
			}
	},
		onFailure: function(){ 
			alert('Er gaat wat mis met de ajax request') 
		}   
	}); 	
}
//*************************//
//extra functies
//************************//

//elementen maken
function opCreateElement(soort,id,onder,att2,value2){
	var newElement = document.createElement(soort);
	newElement.setAttribute('id', id);
	if(att2){
		newElement.setAttribute(att2, value2);
	}
	if(onder=="body"){
		document.body.appendChild(newElement);
	}else{	
		document.getElementById(onder).appendChild(newElement);
	}
}
