function addTag(tag, element, xtra)
{
	var cursorPosition = 0;
	var beforeCursor = '';
	var afterCursor = '';
	var textbox = document.getElementById(element);
	var text = textbox.value;
	var curPos = 0;
	
	cursorPosition = getCursorPosition(textbox);
	beforeCursor = text.substring(0, cursorPosition);
	afterCursor = text.substring(cursorPosition, text.length);
	
	textbox.value = beforeCursor + tag + afterCursor;
	
	curPos = cursorPosition + tag.length;
	
    if (xtra != '')
    {
    	document.getElementById(xtra).innerHTML += '<input type="hidden" name="cursorPos" value="'+curPos+'">';
    }
	
    setCursorPosition(element, curPos);
    return '';
}

function addTags(beginTag, endTag, element, xtra)
{
	var selectionStart = 0;
	var selectionEnd = 0;
	var textbox = document.getElementById(element);
	var text = textbox.value;
	var beforeSelection = '';
	var afterSelection = '';
	var selected = '';
	var curPos = 0;
		
	if (getSelectionStart(element) == getSelectionEnd(element))
	{
		setCursorPosition(element, getCursorPosition(textbox));
		return 'Er is geen tekst geselecteerd!';
	}

	selectionStart = getSelectionStart(element);
	selectionEnd = getSelectionEnd(element);
	
	beforeSelection = text.substring(0, selectionStart);
    selected = text.substring(selectionStart, selectionEnd);
    afterSelection = text.substring(selectionEnd, text.length);
    textbox.value = beforeSelection + beginTag + selected + endTag + afterSelection;
    
    curPos = selectionStart + beginTag.length + selected.length + endTag.length;
    
    if (xtra != '')
    {
    	document.getElementById(xtra).innerHTML += '<input type="hidden" name="cursorPos" value="'+curPos+'">';
    }
    
    setCursorPosition(element, curPos);
    return '';
}

function addLink(subFormName, links, element, xtra)
{
	if (document.getElementById('submitLink') != null)
	{
		enableButtonsCollapseSubForm(subFormName);
	}
	else
	{
		var selStart = getSelectionStart(element);
		var selEnd = getSelectionEnd(element);
		
		if ((selStart == selEnd) && (selStart == 0))
		{
			var el = document.getElementById(element);
			selStart = getCursorPosition(el);
			selEnd = selStart;
		}
		
		var nrLinks = links+1;
		var arg1 = "'addTagsLink'";
		var arg2 = "'[L" + nrLinks +"]'";
		var arg3 = "'[/L" + nrLinks + "]'";
		var arg4 = "'" + element + "'";
		var arg5 = "'" + xtra + "'";
		var addFileForm = '<br/>';
		
		addFileForm += '<CENTER><TABLE><TR><TD colspan="2">Voer link in:<br/><br/></TD></TR>';
		addFileForm += '<TR><TD align="right">Link:</TD><TD><input type="text" MAXLENGTH="255" name="linkName" id="linkName" value="http://"></TD></TR>';
		addFileForm += '<TR><TD align="right">Link openen in nieuw venster: </TD><TD><input type="checkbox" name="linkTarget" id="linkTarget" CHECKED></TD></TR>';
		addFileForm += '<TR><TD></TD><TD><input type="submit" name="submitLink" id="submitLink" value="Invoegen" onclick="return selectFunction('+arg1+','+arg2+','+arg3+','+arg4+','+arg5+');"><br/></TD></TR></TABLE></CENTER>';
		document.getElementById(subFormName).innerHTML = addFileForm;
	}
	document.getElementById(element).focus();
}

function addFile(subFormName, files, element, xtra)
{
	if (document.getElementById('submitFile') != null)
	{
		enableButtonsCollapseSubForm(subFormName);
	}
	else
	{
		var selStart = getSelectionStart(element);
		var selEnd = getSelectionEnd(element);
		
		if ((selStart == selEnd) && (selStart == 0))
		{
			var el = document.getElementById(element);
			selStart = getCursorPosition(el);
			selEnd = selStart;
		}
		
		var nrFiles = files+1;
		var arg1 = "'addTagsFile'";
		var arg2 = "'[F" + nrFiles +"]'";
		var arg3 = "'[/F" + nrFiles + "]'";
		var arg4 = "'" + element + "'";
		var arg5 = "'" + xtra + "'";
		var addFileForm = '<br/>';
		
		addFileForm += '<CENTER><TABLE><TR><TD colspan="2">Selecteer het bestand (maximale grootte 8MB):<br/><br/></TD></TR>';
		addFileForm += '<TR><TD>Bestand: </TD><TD><input type="file" OnChange="setSelection('+selStart+', '+selEnd+', '+arg4+');" OnClick="setSelection('+selStart+', '+selEnd+', '+arg4+');" MAXLENGTH="255" name="fileName" id="fileName"></TD></TR>';
		//addFileForm += '<TR><TD>Bestand: </TD><TD><input type="file" MAXLENGTH="255" name="fileName" id="fileName"></TD></TR>';
		addFileForm += '<TR><TD><input type="hidden" name="submitVal" id="submitVal" value="submitFile"></TD>';
		addFileForm += '<TD><input type="button" name="submitFile" id="submitFile" value="Uploaden" onclick="selectFunction('+arg1+','+arg2+','+arg3+','+arg4+','+arg5+');"><br/></TD></TR></TABLE></CENTER>';
		document.getElementById(subFormName).innerHTML = addFileForm;
	}
	document.getElementById(element).focus();
}

function addPic(subFormName, files, element, xtra)
{
	if (document.getElementById('submitPic') != null)
	{
		enableButtonsCollapseSubForm(subFormName);
	}
	else
	{
		var el = document.getElementById(element);
		var cursorPosition = getCursorPosition(el);
		var nrPics = files+1;
		var arg1 = "'addTagPic'";
		var arg2 = "'[I" + nrPics +"]'";
		var arg3 = "'" + element + "'";
		var arg4 = "'" + xtra + "'";
		var arg5 = "''";
		var addFileForm = '<br/>';
		
		addFileForm += '<CENTER><TABLE><TR><TD colspan="2">Selecteer de afbeelding (maximale grootte 8MB):<br/><br/></TD></TR>';
		addFileForm += '<TR><TD align="right">Afbeelding:</TD><TD><input type="file" MAXLENGTH="255" name="picName" id="picName" OnChange="setCursorPosition('+arg3+', '+cursorPosition+');" OnClick="setCursorPosition('+arg3+', '+cursorPosition+');"></TD></TR>';
		//addFileForm += '<TR><TD align="right">Afbeelding:</TD><TD><input type="file" MAXLENGTH="255" name="picName" id="picName"></TD></TR>';
		addFileForm += '<TR><TD align="right"><input type="hidden" name="submitVal" id="submitVal" value="submitPic">';
		addFileForm += 'Tekst bij afbeelding: </TD><TD><input type="text" name="picTekst" id="picTekst" value="" maxlength="200"></TD></TR>';
		addFileForm += '<TR><TD align="right">Hoogte in pixels: </TD><TD><input type="text" name="picHoogte" id="picHoogte" value="" maxlength="4"></TD></TR>';
		addFileForm += '<TR><TD align="right">Breedte in pixels: </TD><TD><input type="text" name="picBreedte" id="picBreedte" value="" maxlength="3"></TD></TR>';
		addFileForm += '<TR><TD align="right">Uitlijnen: </TD><TD>';		
		addFileForm += '<SELECT NAME="picAlign"><Option value="L" SELECTED>Links</option>';
		addFileForm += '<Option value="M">Midden</option>';
		addFileForm += '<Option value="R">Rechts</option>';
		addFileForm += '<Option value="G">Geen</option></SELECT></TD></TR>';		
		addFileForm += '<TR><TD align="right">Link naar afbeelding: </TD><TD><input type="checkbox" name="picLink" id="picLink" CHECKED></TD></TR>';
		addFileForm += '<TR><TD colspan="2">Let op! Laat hoogte of breedte tekstvak leeg om de aspect ratio te behouden!<br/><br/></TD></TR>';
		addFileForm += '<TR><TD></TD><TD><input type="button" name="submitPic" id="submitPic" value="Uploaden" onclick="selectFunction('+arg1+','+arg2+','+arg3+','+arg4+','+arg5+');"><br/></TD></TR></TABLE></CENTER>';
		document.getElementById(subFormName).innerHTML = addFileForm;
	}
	document.getElementById(element).focus();
}

function checkLink()
{
	if(document.getElementById('linkName').value == "http://")
	{
		return 'U heeft geen link ingevoerd!';
	}else if(document.getElementById('linkName').value == "")
	{
		return 'U heeft geen link ingevoerd!';
	}
	return '';
}

function checkFile()
{
	if(document.getElementById('fileName').value == "")
	{
		return 'U heeft geen bestand geselecteerd!';
	}
	return '';
}

function checkPic()
{
	var onlyNumeric = /^[0-9]{1,}$/;
	if(document.getElementById('picName') != undefined)
	{
		if(document.getElementById('picName').value == "")
		{
			return 'U heeft geen afbeelding geselecteerd!';
		}
	}
	
	if(document.getElementById('picHoogte').value.length > 0)
	{
		if(!onlyNumeric.test(document.getElementById('picHoogte').value))
		{
			return 'Hoogte moet gedefinieerd worden met cijfers!';
		}
	}
	else if(document.getElementById('picBreedte').value.length > 0)
	{
		if(!onlyNumeric.test(document.getElementById('picBreedte').value))
		{
			return 'Breedte moet gedefinieerd worden met cijfers!';
		}
		var tempBreedte = document.getElementById('picBreedte').value;
		if (tempBreedte >470)
		{
			return 'De maximale breedte is 470 pixels!';
		}
	}
	return '';
}

function disableUploadFileButton()
{
	document.getElementById('submitFile').disabled = true;
}

function disableUploadPicButton()
{
	document.getElementById('submitPic').disabled = true;
}

function editLink(linkNumber, linkName, linkTarget, subFormName)
{
	var addFileForm = '<br/>';
	var arg1 = "'checkLink'";
	var arg2 = "''";
	var arg3 = "''";
	var arg4 = "''";
	var arg5 = "''";
	var arg6 = "'" +subFormName+ "'";
	
	addFileForm += '<CENTER><TABLE><TR><TD colspan="2">Breng uw wijzigingen aan voor <A HREF="'+linkName+'" TARGET="BLANK">[LINK'+linkNumber+']</A>:<br/><br/></TD></TR>';
	addFileForm += '<TR><TD align="right">Link:</TD><TD>';
	addFileForm += '<input type="hidden" name="linkNumber" id="linkNumber" value='+linkNumber+'>';
	addFileForm += '<input type="text" MAXLENGTH="255" name="linkName" id="linkName" value="'+linkName+'"></TD></TR>';
	addFileForm += '<TR><TD align="right">Link openen in nieuw venster: </TD><TD><input type="checkbox" name="linkTarget" id="linkTarget" ';
	if(linkTarget == 'on')
	{
		addFileForm += 'CHECKED';
	}
	addFileForm += '></TD></TR>';
	addFileForm += '<TR><TD><input type="button" name="cancelEditLink" id="cancelEditLink" value="Annuleren" onclick="enableButtonsCollapseSubForm('+arg6+');"><br/></TD>';
	addFileForm += '<TD><input type="submit" name="submitEditLink" id="submitEditLink" value="Wijzigen" onclick="return selectFunction('+arg1+','+arg2+','+arg3+','+arg4+','+arg5+');"><br/></TD></TR></TABLE></CENTER>';
	document.getElementById(subFormName).innerHTML = addFileForm;
}

function editFile(fileNumber, fileName, fileLocation, subFormName)
{
	var addFileForm = '<br/>';
	var arg1 = "'checkEditFile'";
	var arg2 = "''";
	var arg3 = "''";
	var arg4 = "''";
	var arg5 = "''";
	var arg6 = "'" +subFormName+ "'";
	
	addFileForm += '<CENTER><TABLE><TR><TD colspan="2">Breng uw wijzigingen aan voor <A HREF="'+fileLocation+'" TARGET="BLANK">[FILE'+fileNumber+']</A>:<br/><br/></TD></TR>';
	addFileForm += '<TR><TD>Bestand: </TD><TD><input type="file" MAXLENGTH="255" name="fileNameEdit" id="fileNameEdit"></TD></TR>';
	addFileForm += '<TR><TD colspan = "2">Laat bovenstaande vak leeg om het huidige bestand te behouden!</TD></TR>'
	addFileForm += '<TR><TD><input type="hidden" name="submitVal" id="submitVal" value="editFile">';
	addFileForm += '<input type="hidden" name="fileName" id="fileName" value='+fileName+'>';
	addFileForm += '<input type="hidden" name="fileNumber" id="fileNumber" value='+fileNumber+'>';
	addFileForm += '<input type="button" name="cancelEditFile" id="cancelEditFile" value="Annuleren" onclick="enableButtonsCollapseSubForm('+arg6+');"><br/></TD>';
	addFileForm += '<TD><input type="button" name="editFile" id="editFile" value="Wijzigen" onclick="selectFunction('+arg1+','+arg2+','+arg3+','+arg4+','+arg5+');"><br/></TD></TR></TABLE></CENTER>';
	document.getElementById(subFormName).innerHTML = addFileForm;
}

function editPic(picNumber, picArray, subFormName, picName, picLocation)
{
	var addFileForm = '<br/>';
	var arg1 = "'checkEditPic'";
	var arg2 = "''";
	var arg3 = "''";
	var arg4 = "''";
	var arg5 = "''";
	var arg6 = "'" +subFormName+ "'";
	
	addFileForm += '<CENTER><TABLE><TR><TD colspan="2">Breng uw wijzigingen aan voor <A HREF="'+picLocation+'" TARGET="BLANK">[IMG'+picNumber+']</A>:<br/><br/></TD></TR>';
	addFileForm += '<TR><TD align="right">Afbeelding:</TD><TD><input type="file" MAXLENGTH="255" name="picNameEdit" id="picNameEdit"></TD></TR>';
	addFileForm += '<TR><TD colspan = "2">Laat bovenstaande vak leeg om de huidige afbeelding te behouden!</TD></TR>'
	addFileForm += '<TR><TD align="right">';
	addFileForm += '<input type="hidden" name="submitVal" id="submitVal" value="editPic">';
	addFileForm += '<input type="hidden" name="picName" id="picName" value='+picName+'>';
	addFileForm += '<input type="hidden" name="picNumber" id="picNumber" value='+picNumber+'>';
	addFileForm += 'Tekst bij afbeelding: </TD><TD><input type="text" name="picTekst" id="picTekst" value="'+picArray[0]+'" maxlength="200"></TD></TR>';
	addFileForm += '<TR><TD align="right">Hoogte: </TD><TD><input type="text" name="picHoogte" id="picHoogte" value="'+picArray[1]+'" maxlength="4"></TD></TR>';
	addFileForm += '<TR><TD align="right">Breedte: </TD><TD><input type="text" name="picBreedte" id="picBreedte" value="'+picArray[2]+'" maxlength="3"></TD></TR>';
	
	if(picArray[4] == 'L')
	{
		addFileForm += '<TR><TD align="right">Uitlijnen: </TD><TD>';		
		addFileForm += '<SELECT NAME="picAlign"><Option value="L" SELECTED>Links</option>';
		addFileForm += '<Option value="M">Midden</option>';
		addFileForm += '<Option value="R">Rechts</option>';
		addFileForm += '<Option value="G">Geen</option></SELECT></TD></TR>';
	}else if(picArray[4] == 'M')
	{
		addFileForm += '<TR><TD align="right">Uitlijnen: </TD><TD>';		
		addFileForm += '<SELECT NAME="picAlign"><Option value="L">Links</option>';
		addFileForm += '<Option value="M" SELECTED>Midden</option>';
		addFileForm += '<Option value="R">Rechts</option>';
		addFileForm += '<Option value="G">Geen</option></SELECT></TD></TR>';
	}else if(picArray[4] == 'R')
	{
		addFileForm += '<TR><TD align="right">Uitlijnen: </TD><TD>';		
		addFileForm += '<SELECT NAME="picAlign"><Option value="L">Links</option>';
		addFileForm += '<Option value="M">Midden</option>';
		addFileForm += '<Option value="R" SELECTED>Rechts</option>';
		addFileForm += '<Option value="G">Geen</option></SELECT></TD></TR>';
	}else if(picArray[4] == 'G')
	{
		addFileForm += '<TR><TD align="right">Uitlijnen: </TD><TD>';		
		addFileForm += '<SELECT NAME="picAlign"><Option value="L">Links</option>';
		addFileForm += '<Option value="M">Midden</option>';
		addFileForm += '<Option value="R">Rechts</option>';
		addFileForm += '<Option value="G" SELECTED>Geen</option></SELECT></TD></TR>';
	}
	
	addFileForm += '<TR><TD align="right">Link naar afbeelding afbeelding: </TD><TD><input type="checkbox" name="picLink" id="picLink" ';
	if(picArray[3] == 'on')
	{
		addFileForm += 'CHECKED';
	}
	addFileForm += '></TD></TR>';
	addFileForm += '<TR><TD colspan="2">Let op! Laat hoogte of breedte tekstvak leeg om de aspect ratio te behouden!<br/><br/></TD></TR>';
	addFileForm += '<TR><TD><input type="button" name="cancelEditLink" id="cancelEditLink" value="Annuleren" onclick="enableButtonsCollapseSubForm('+arg6+');"><br/></TD>';
	addFileForm += '<TD><input type="button" name="editPic" id="editPic" value="Wijzigen" onclick="selectFunction('+arg1+','+arg2+','+arg3+','+arg4+','+arg5+');"><br/></TD></TR></TABLE></CENTER>';
	document.getElementById(subFormName).innerHTML = addFileForm;
}

function editLinkCancel(subFormName)
{
	document.getElementById(subFormName).innerHTML = '';
}

function checkEditFile()
{
	return '';
}

function checkEditPic()
{
	var onlyNumeric = /^[0-9]{1,}$/;
	
	if(document.getElementById('picHoogte').value.length > 0)
	{
		if(!onlyNumeric.test(document.getElementById('picHoogte').value))
		{
			return 'Hoogte moet gedefinieerd worden met cijfers!';
		}
	}
	else if(document.getElementById('picBreedte').value.length > 0)
	{
		if(!onlyNumeric.test(document.getElementById('picBreedte').value))
		{
			return 'Breedte moet gedefinieerd worden met cijfers!';
		}
		var tempBreedte = document.getElementById('picBreedte').value;
		if (tempBreedte >470)
		{
			return 'De maximale breedte is 470 pixels!';
		}
	}
	return '';
}

function disableEditPicButton()
{
	document.getElementById('editPic').disabled = true;
}

function disableEditFileButton()
{
	document.getElementById('editFile').disabled = true;
}

function deleteLink(link, xtra, element, onerror)
{
	var textbox = document.getElementById(element);
	var temp = textbox.value;
	
	temp = replaceAll(temp, '[L'+link+']','');
	temp = replaceAll(temp, '[/L'+link+']','');
	textbox.value = temp;
	
	document.getElementById(xtra).innerHTML += '<input type="hidden" name="deleteLink" value="'+link+'">';
	
	return '';
}

function deleteFile(file, xtra, element, onerror)
{
	var textbox = document.getElementById(element);
	var temp = textbox.value;
	
	temp = replaceAll(temp, '[F'+file+']','');
	temp = replaceAll(temp, '[/F'+file+']','');
	textbox.value = temp;
	
	if(onerror != 'true'){
		document.getElementById(xtra).innerHTML += '<input type="hidden" name="deleteFile" value="'+file+'">';
	}
	
	return '';
}

function deletePic(pic, xtra, element, onerror)
{
	var textbox = document.getElementById(element);
	var temp = textbox.value;
	
	temp = replaceAll(temp, '[I'+pic+']','');
	textbox.value = temp;
	
	if(onerror != 'true'){
		document.getElementById(xtra).innerHTML += '<input type="hidden" name="deletePic" value="'+pic+'">';
	}
	return '';
}

function openFile(url)
{
	myRef = window.open(url,'');
}

function enableButtonsCollapseSubForm(subFormName)
{
	for(i=0; i<document.forms[0].elements.length; i++)
	{
		if (document.forms[0].elements[i].disabled == true)
		{
			document.forms[0].elements[i].disabled = false;
		}
	}
	document.getElementById(subFormName).innerHTML = '';
}

function replaceAll(text, strA, strB) 
{
    while ( text.indexOf(strA) != -1)
    {
        text = text.replace(strA,strB);
    }
    return text;
}

function setSelection(iStart, iEnd, element)
{
	var textbox = document.getElementById(element);
	var nrEnters = getNumberOfEnters(textbox.value.substring(0,iStart));
	var field = textbox;
	var start = iStart - nrEnters;
	var end = iEnd - nrEnters;
	
	if (iStart != iEnd)
	{
		if (document.selection)
		{
	        if (field.createTextRange) { 
	        	
	            var selRange = field.createTextRange(); 
	            selRange.collapse(true); 
	            selRange.moveStart('character', start); 
	            selRange.moveEnd('character', end - start); 
	            selRange.select(); 
	        } else if (field.setSelectionRange) { 
	            field.setSelectionRange(start, end); 
	        } else if (field.selectionStart) { 
	            field.selectionStart = start; 
	            field.selectionEnd = end; 
	        } 
	        field.focus(); 

		} 
		else 
		{
			textbox.setSelectionRange(iStart, iEnd);
		}
	}
	else
	{
		setCursorPosition(element, iStart);
	}
	document.getElementById(element).focus();
}

function setCursorPosition(element, pos)
{
	var textbox = document.getElementById(element);
	
	if (document.selection)
    {	//FOR IE
    	var nrEnters = getNumberOfEnters(textbox.value.substring(0,pos));
    	var range = textbox.createTextRange();
    	range.collapse(true);
    	range.moveEnd('character', pos - nrEnters);
    	range.moveStart('character', pos - nrEnters);
    	range.select();
    } 
    else
    {	//FOR FF
    	textbox.setSelectionRange(pos, pos);
        // Trigger a "space" keypress. 
        var evt = document.createEvent("KeyboardEvent"); 
        evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 0, 32); 
        textbox.dispatchEvent(evt); 
     
        // Trigger a "backspace" keypress. 
        evt = document.createEvent("KeyboardEvent"); 
        evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 8, 0); 
        textbox.dispatchEvent(evt);
    }
    textbox.focus();
}

function getCursorPosition(el) 
{
	if (el.selectionStart) 
	{
		return el.selectionStart;
	} 
	else if (document.selection) 
	{
	    el.focus();
	    var r = document.selection.createRange();
	    if (r == null) 
	    {
	    	return 0;
	    }
	    var re = el.createTextRange(), rc = re.duplicate();
	    re.moveToBookmark(r.getBookmark());
	    rc.setEndPoint('EndToStart', re);

	    return rc.text.length;
	} 
	return 0;
}

function getSelectionStart(element)
{
	var textbox = document.getElementById(element);
	var sel = getSelection(textbox);
	return sel.start;
}

function getSelectionEnd(element)
{
	var textbox = document.getElementById(element);
	var sel = getSelection(textbox);
	return sel.end;
}

function getSelection(el) { 
    var start = 0, end = 0, normalizedValue, range, 
        textInputRange, len, endRange; 
 
    if (typeof el.selectionStart == "number" && typeof el.selectionEnd == "number") { 
        start = el.selectionStart; 
        end = el.selectionEnd; 
    } else { 
        range = document.selection.createRange(); 
        //document.write('f');
 
        if (range && range.parentElement() == el) { 
            len = el.value.length; 
            normalizedValue = el.value.replace(/\r\n/g, "\n"); 
 
            // Create a working TextRange that lives only in the input 
            textInputRange = el.createTextRange(); 
            textInputRange.moveToBookmark(range.getBookmark()); 
 
            // Check if the start and end of the selection are at the very end 
            // of the input, since moveStart/moveEnd doesn't return what we want 
            // in those cases 
            endRange = el.createTextRange(); 
            endRange.collapse(false); 
 
            if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) { 
                start = end = len; 
            } else { 
                start = -textInputRange.moveStart("character", -len); 
                start += normalizedValue.slice(0, start).split("\n").length - 1; 
 
                if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) { 
                    end = len; 
                } else { 
                    end = -textInputRange.moveEnd("character", -len); 
                    end += normalizedValue.slice(0, end).split("\n").length - 1; 
                } 
            } 
        } 
    } 
    
    return { 
        start: start, 
        end: end 
    }; 
} 

function getNumberOfEnters(string)
{
	if (string.match(/[\n\r]/g) == null)
	{
		return 0;
	}
	return (string.match(/[\n\r]/g).length)/2;
}

function checkTab(el,e) 
{
	if (9 == e.keyCode) 
  	{
		if(document.selection)
		{ //if ie	
			el.selection=document.selection.createRange();
			setTimeout("processTabIE('" + el.id + "')",0);
		}else{
		  //If ff
			tabHandleKeyDown(e);
		}		
  	}
}

function processTabIE(id) 
{
	document.all[id].selection.text=String.fromCharCode(9);
	document.all[id].focus();
}

function tabHandleKeyDown(evt) { 
    var tab = String.fromCharCode(9); 
    var e = window.event || evt; 
    var t = e.target ? e.target : e.srcElement ? e.srcElement : e.which; 
    var scrollTop = t.scrollTop; 
    var k = e.keyCode ? e.keyCode : e.charCode ? e.charCode : e.which; 
    if (k == 9 && !e.ctrlKey && !e.altKey) { 
        if(t.setSelectionRange){ 
            e.preventDefault(); 
            var ss = t.selectionStart; 
            var se = t.selectionEnd; 
            // Multi line selection 
            if (ss != se && t.value.slice(ss,se).indexOf("\n") != -1) { 
                if(ss>0){ 
                    ss = t.value.slice(0,ss).lastIndexOf("\n")+1; 
                } 
                var pre = t.value.slice(0,ss); 
                var sel = t.value.slice(ss,se); 
                var post = t.value.slice(se,t.value.length); 
                if(e.shiftKey){ 
                    var a = sel.split("\n") 
                    for (i=0;i<a.length;i++){ 
                        if(a[i].slice(0,1)==tab||a[i].slice(0,1)==' ' ){ 
                            a[i]=a[i].slice(1,a[i].length) 
                        } 
                    } 
                    sel = a.join("\n"); 
                    t.value = pre.concat(sel,post); 
                    t.selectionStart = ss; 
                    t.selectionEnd = pre.length + sel.length; 
                } 
                else{ 
                    sel = sel.replace(/\n/g,"\n"+tab); 
                    pre = pre.concat(tab); 
                    t.value = pre.concat(sel,post); 
                    t.selectionStart = ss; 
                    t.selectionEnd = se + (tab.length * sel.split("\n").length); 
                } 
            } 
            // Single line selection 
            else { 
                if(e.shiftKey){  
                    var brt = t.value.slice(0,ss); 
                    var ch = brt.slice(brt.length-1,brt.length); 
                    if(ch == tab||ch== ' '){ 
                        t.value = brt.slice(0,brt.length-1).concat(t.value.slice(ss,t.value.length)); 
                        t.selectionStart = ss-1; 
                        t.selectionEnd = se-1; 
                    } 
                } 
                else{ 
                    t.value = t.value.slice(0,ss).concat(tab).concat(t.value.slice(ss,t.value.length)); 
                    if (ss == se) { 
                        t.selectionStart = t.selectionEnd = ss + tab.length; 
                    } 
                    else { 
                        t.selectionStart = ss + tab.length; 
                        t.selectionEnd = se + tab.length; 
                    } 
                } 
            } 
        } 
        else{ 
            e.returnValue=false; 
            var r = document.selection.createRange(); 
            var br = document.body.createTextRange(); 
            br.moveToElementText(t); 
            br.setEndPoint("EndToStart", r); 
            //Single line selection 
            if (r.text.length==0||r.text.indexOf("\n") == -1) { 
                if(e.shiftKey){      
	                    var ch = br.text.slice(br.text.length-1,br.text.length); 
                    if(ch==tab||ch==' '){ 
                        br.text = br.text.slice(0,br.text.length-1) 
                        r.setEndPoint("StartToEnd", br); 
                    } 
                } 
                else{ 
                    var rtn = t.value.slice(br.text.length,br.text.length+1); 
                    if(rtn!=r.text.slice(0,1)){ 
                        br.text = br.text.concat(rtn);  
                    } 
                    br.text = br.text.concat(tab);  
                } 
                var nr = document.body.createTextRange(); 
                nr.setEndPoint("StartToEnd", br); 
                nr.setEndPoint("EndToEnd", r); 
                nr.select(); 
            } 
            //Multi line selection 
            else{ 
                if(e.shiftKey){      
                    var a = r.text.split("\r\n") 
                    var rt = t.value.slice(br.text.length,br.text.length+2); 
                    if(rt==r.text.slice(0,2)){ 
                        var p = br.text.lastIndexOf("\r\n".concat(tab)); 
                        if(p!=-1){ 
                            br.text = br.text.slice(0,p+2).concat(br.text.slice(p+3,br.text.length)); 
                        } 
                    } 
                    for (i=0;i<a.length;i++){ 
                        var ch = a[i].length>0&&a[i].slice(0,1); 
                        if(ch==tab||ch==' '){ 
                            a[i]=a[i].slice(1,a[i].length) 
                        } 
                    } 
                    r.text = a.join("\r\n"); 
                } 
                else{ 
                    if(br.text.length>0){ 
                        var rt = t.value.slice(br.text.length,br.text.length+2); 
                        if(rt!=r.text.slice(0,2)){ 
                            r.text = tab.concat(r.text.split("\r\n").join("\r\n".concat(tab))); 
                        } 
                        else{ 
                            var p = br.text.slice(0,ss).lastIndexOf("\r\n")+2;   
                            br.text = br.text.slice(0,p).concat(tab,br.text.slice(p,br.text.length)); 
                            r.text = r.text.split("\r\n").join("\r\n".concat(tab)); 
                        } 
                    } 
                    else{ 
                        r.text = tab.concat(r.text).split("\r\n").join("\r\n".concat(tab)); 
                    } 
                }  
                var nr = document.body.createTextRange(); 
                nr.setEndPoint("StartToEnd", br); 
                nr.setEndPoint("EndToEnd", r); 
                nr.select(); 
            } 
        } 
    } 
    t.scrollTop = scrollTop; 
} 
