// Insert myValue into myField at cursor position
function insertAtCursor(myField, myValue) {
    //IE support
    if (document.selection) {
	myField.focus();
	sel = document.selection.createRange();
	sel.text = myValue;
    }
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
	var startPos = myField.selectionStart;
	var endPos = myField.selectionEnd;
	myField.value = myField.value.substring(0, startPos)
	    + myValue
	    + myField.value.substring(endPos, myField.value.length);
    } else {
	myField.value += myValue;
    }
}


// Insert smiley into insertObject and focus again on text field
function insertSmiley(smiley){
    var currentText = document.getElementById("insertObject");
    var smileyWithPadding = " " + smiley + " ";
    insertAtCursor(currentText,smileyWithPadding);
    currentText.focus();
}

// Voeg text markup thingies toe
// Nieuwere versie
var caretInfo = {start:0, end:0, caret:0}; // default caret position at 0
// --------- Trims all newlines on the back of the string (not real friendly code, though)
function StripLastNewLines(s){
    //while ((s.substring(s.length - 1, s.length) == "\n") || (s.substring(s.length - 1, s.length) == "\r"))
    while (s.substring(s.length - 1, s.length) == "\r")
	s = s.substring(0, s.length - 1);
    return s;
}
// --------- Returns the 'start', 'end' and 'caret' position of the current caret position and selection 
// --------- Based on the getCaretInfo function @ http://blogs.nitobi.com/alexei/?p=173
function GetCaretInfo(textarea){
    var result = {start: 0, end: 0, caret: 0};
    if (navigator.appVersion.indexOf("MSIE")!=-1){
	if (textarea.tagName.toLowerCase() == "textarea"){
	    var range1 = document.selection.createRange();
	    var range2 = range1.duplicate();
	    var offset = textarea.value.length - (StripLastNewLines(textarea.value)).length;
	    
	    range2.moveToElementText(textarea);
	    range2.setEndPoint('StartToEnd', range1);
	    result.end = textarea.value.length - range2.text.length - offset;
	    
	    range2.setEndPoint('StartToStart', range1);
	    result.start = textarea.value.length - range2.text.length - offset; 
	    result.caret = result.end;
	}else{
	    var range1 = document.selection.createRange();
	    var range2 = range1.duplicate();
	    result.start = 0 - range2.moveStart('character', -100000);
	    result.end = result.start + range1.text.length;
	    result.caret = result.end;
	}
    }else{
	result.start = textarea.selectionStart;
	result.end = textarea.selectionEnd;
	result.caret = result.end;
    }
    if (result.start < 0)
	result = {start: 0, end: 0, caret: 0};
    return result;
}
// --------- Sets the caret on the correct place and makes the selection if needed
function SetCaretInfo(textarea, caretInfo){
    if (textarea.setSelectionRange){
	textarea.focus();
	textarea.setSelectionRange(caretInfo.start, caretInfo.end);
    }
    if (textarea.createTextRange){
	var range = textarea.createTextRange();
	range.collapse(true);
	range.moveEnd('character', caretInfo.end);
	range.moveStart('character', caretInfo.start);
	range.select();
    }
}
// --------- Stores the current selection in a variable
function SaveSelectionInfo(textarea){
    caretInfo = GetCaretInfo(textarea);
}
// --------- Restores the saved selection
function LoadSelectionInfo(textarea){
    SetCaretInfo(textarea, caretInfo);
}
// --------- Adds code on the carets position using or overwriting the current selection
function setText(textareaId, text){
    var textarea = document.getElementById(textareaId);
    if(caretInfo.end == 0) // caret is at the beginning
	alert("Je moet eerst tekst selecteren!");
    else if (caretInfo.start == textarea.value.length) // caret is at the end
	alert("Je moet eerst tekst selecteren!");
    else{// caret is somewhere in the text
	leftText = textarea.value.substring(0, caretInfo.start);
	rightText = textarea.value.substring(caretInfo.end, textarea.value.length);
	var selection = textarea.value.substring(caretInfo.start, caretInfo.end);
	switch(text){
	case 'cursief': 
	    var leftCode = "[i]"; 
	    var rightCode = "[/i]"; 
	    break; 
	case "vet": 
	    var leftCode = "[b]"; 
	    var rightCode = "[/b]"; 
	    break; 
	case "lijst":
	    var leftCode = "[ul]\n";
	    var rightCode = "[/ul]";
	    var selectionSplit = selection.split("\n");
	    var selectionNew = "";
	    for(var i in selectionSplit){
		selectionNew += " [li]" + selectionSplit[i] + "[/li]\n";
	    }
	    selection = selectionNew;
	    break;
	case "link": 
	    var link = prompt("Welke link wil je gebruiken?", "http://");
	    var leftCode = "[url=" + link + "]"; 
	    var rightCode = "[/url]"; 
	    break; 
	}
	var newText = leftCode + selection + rightCode;
	textarea.value = leftText + newText + rightText;
	caretInfo.end = (caretInfo.start + newText.length);
	textarea.focus();
	SetCaretInfo(textarea, caretInfo);
    }
}




// Dynamisch elementen toevoegen
var Dom = {
    get: function(el) {
	if (typeof el === 'string') {
            return document.getElementById(el);
	} else {
            return el;
	}
    },
    add: function(el, dest) {
	var el = this.get(el);
	var dest = this.get(dest);
	dest.appendChild(el);
    },
    remove: function(el) {
	var el = this.get(el);
	el.parentNode.removeChild(el);
    }
};
var Event = {
    add: function() {
	if (window.addEventListener) {
            return function(el, type, fn) {
		Dom.get(el).addEventListener(type, fn, false);
            };
	} else if (window.attachEvent) {
            return function(el, type, fn) {
		var f = function() {
		    fn.call(Dom.get(el), window.event);
		};
		Dom.get(el).attachEvent('on' + type, f);
            };
	}
    }()
};
// Nieuw fotoblok toevoegen
Event.add(window, 'load', function() {
	      var i = 1;
	      Event.add('add-element', 'click', function() {
			    ++i;
			    if(i<10){
				var j = "00"+i;
			    }else{
				if(i<100){
				    var j = "0"+i;
				}else{
				    var j = i;
				}
			    }
			    var tr1 = document.createElement('tr');
			    tr1.setAttribute("style","border-top:dashed 1px #555;");
			    var el1 = document.createElement('td');
			    el1.innerHTML = "Fotograaf<br/><input type=text size=\"20\" name=\"fotograaf"+ j +"\" value=\"\"/>";
			    el1.setAttribute("width","125px");
			    el1.setAttribute("valign","top");
			    tr1.appendChild(el1);
			    var el2 = document.createElement('td');
			    el2.setAttribute("valign","top");
			    el2.setAttribute("width","225px");
			    el2.innerHTML = "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"2000000\">Fotoupload<br/><input name=\"userfile"+ j +"\" type=\"file\" id=\"userfile"+ j +"\">";
			    tr1.appendChild(el2);
			    var el3 = document.createElement('td');
			    el3.setAttribute("valign","top");
			    el3.innerHTML = "Public<br/><input type=checkbox name=\"public"+ j +"\" value=\"1\" checked/>";
			    tr1.appendChild(el3);
			    var el4 = document.createElement('td');
			    el4.setAttribute("valign","top");
			    el4.setAttribute("style","text-align:right; cursor:pointer;");
			    el4.innerHTML = "<strong>Remove #"+ i +"</strong>";
			    tr1.appendChild(el4);
			    var tr2 = document.createElement('tr');
			    var el5 = document.createElement('td');
			    el5.setAttribute("style","padding-top:0px;");
			    el5.setAttribute("colspan","4");
			    el5.innerHTML = "<ul class=\"textarea_control\"><li>Foto commentaar&nbsp;&nbsp;</li><li><a href=\"#\" onClick=\"setText('comment"+ j +"','vet');return false;\"><strong>vet</strong></a></li><li><a href=\"#\" onClick=\"setText('comment"+ j +"','cursief');return false;\"><em>cursief</em></a></li><li><a href=\"#\" onClick=\"setText('comment"+ j +"','lijst');return false;\">lijst</a></li><li><a href=\"#\" onClick=\"setText('comment"+ j +"','link');return false;\">link</a></li><li><a href=\"#\" onClick=\"alert('Voor alle functies links van help moet je eerst een tekstfragment selecteren in het berichtvenster. Kies daarna een van de functies voor de desgewenste bewerking.')\">help!</a></li></ul><br/><textarea wrap=\"soft\" name=\"content\" id=\"comment"+ j +"\" cols=\"69\" rows=\"2\" onmouseup='SaveSelectionInfo(this)' onkeyup='SaveSelectionInfo(this)' onfocus='LoadSelectionInfo(this)'></textarea>";
			    tr2.appendChild(el5);
			    Dom.add(tr1, 'addition');
			    Dom.add(tr2, 'addition');
			    Event.add(el4, 'click', function(e) {
					  Dom.remove(tr1);
					  Dom.remove(tr2);
					  //i = i - 1;
				      });
			});
	  });

