//on load iframe
function onloadIframe(frameid, contentlength) {
    if (document.getElementById(frameid)) {
        //set design mode on
        document.getElementById(frameid).contentWindow.document.designMode = 'on';

        //attach key event handler and set content length
        if (contentlength > 0) {
            //attach key events
            attachKeyEventHandler(frameid, contentlength);

            //when content window document available
            if (document.getElementById(frameid).contentWindow.document.body != null) contentSize(frameid, contentlength);
        }
    }
}

//execute command on frame
function executeCommand(command, frameid) {
    if (document.getElementById(frameid))
        document.getElementById(frameid).contentWindow.document.execCommand(command, false, null);
}

//clear frame
function clearIframe(frameid, contentlength) {
    if (document.getElementById(frameid)) {
        //clear content
        document.getElementById(frameid).contentWindow.document.body.innerHTML = "";

        //refresh: content size
        if (contentlength > 0) contentSize(frameid, contentlength);
    }
}

//attach key event handler
function attachKeyEventHandler(frameid, contentlength) {
    if (document.getElementById(frameid)) {
        //get element by frameid
        var element = document.getElementById(frameid).contentWindow.document;

        //attach key event handler
        if (element.addEventListener) {
            element.addEventListener("keyup", function() { contentSize(frameid, contentlength) }, false);
            element.addEventListener("keydown", function() { contentSize(frameid, contentlength) }, false);
        } else if (element.attachEvent) {
            element.attachEvent("onkeyup", function() { contentSize(frameid, contentlength); });
            element.attachEvent("onkeydown", function() { contentSize(frameid, contentlength); });
        } else {
            element.onkeyup = function() { contentSize(frameid, allowedsize) };
            element.onkeydown = function() { contentSize(frameid, allowedsize) };
        }
    }
}

//content size
function contentSize(frameid, contentlength) {
    if (document.getElementById(frameid)) {
        //calculate current size
        var currentSize = contentlength
        if (document.getElementById(frameid).contentWindow.document.body.innerText != null) currentSize -= document.getElementById(frameid).contentWindow.document.body.innerText.length;
        if (document.getElementById(frameid).contentWindow.document.body.textContent != null) currentSize -= document.getElementById(frameid).contentWindow.document.body.textContent.length;
        if (currentSize < 0) {
            //set calculated current size + over chars
            document.getElementById(frameid + 'csover').style.display = 'none';
            document.getElementById(frameid + 'csunder').style.display = 'block';
            document.getElementById(frameid + 'csalert').innerHTML = currentSize * -1;

            //return false
            return false;
        }
        else {
            //set calculated current size
            document.getElementById(frameid + 'csover').style.display = 'block';
            document.getElementById(frameid + 'csunder').style.display = 'none';
            document.getElementById(frameid + 'cs').innerHTML = currentSize;

            //return
            return true;
        }
    }
}


		

