function byId(id){
	return document.getElementById(id);
}
var Freakcity = {
    'console': null,
    'writelog': function(type, log) {
        if (window.console) {
            eval('window.console.' + type + '(log)');
        } else if (typeof console !="undefined") {
            eval('console.' + type+'("'+log+'")');
        }
        else {
            Freakcity.Debugger.debugging = false;
        }
    },
    'Debugger': {
        'debugging': true,
        'Console': {
            'log': function(msg) {
                if (Freakcity.Debugger.debugging) {
                    Freakcity.writelog('log', msg);
                }
            },
            'warn': function() {
                if (Freakcity.Debugger.debugging) {
                    Freakcity.writelog('warn', msg);
                }
            },
            'error': function() {
                if (Freakcity.Debugger.debugging) {
                    Freakcity.writelog('error', msg);
                }
            }
        }
    }
} 

function setXMLHTTPGet(){
	var xmlObjCreator = false;
	if (window.XMLHttpRequest) {
	    xmlObjCreator = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
	xmlObjCreator = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xmlObjCreator;
}

function xmlHTTPPost(strURL, target, data, form, action) {
    var formObj = document.forms['form'];
    var subStr="";
    if (formObj && formObj.elements) {
        var formElements = formObj.elements;
        for (var x = 0; x < formElements.length; x++) {
            if(x!=0){
                subStr+="&";
            }
            subStr += formElements[x].name + "=" + formElements[x].value;
        }
    }
    var returnv=false;
    var xmlHTTPObj = setXMLHTTPGet();
    if (!xmlHTTPObj) {
		    return true;
	    }else{
		    document.body.style.cursor = "progress";
		    fade(target, 'out');
		    xmlHTTPObj.open('POST', strURL, true);
		    xmlHTTPObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		    xmlHTTPObj.send(data);
		    xmlHTTPObj.onreadystatechange = function() {
		        if (xmlHTTPObj.readyState == 4) {
		            document.body.style.cursor = "default";
		            if (action) {
		                eval(action)
		            } else {
		                fade(target, 'in');
		                replaceHTML(xmlHTTPObj.responseText, target);
		                xmlHTTPObj = null;
		            }
		        }
		    }
	}
    return returnv;
}
function xmlHTTPForumPost(strURL, target, form, action) {
    var formObj = document.forms[form];
    var subStr = "";
    if (formObj && formObj.elements) {
        var formElements = formObj.elements;
        for (var x = 0; x < formElements.length; x++) {
            if (formElements[x].name != "Submit") {
                if (x != 0) {
                    subStr += "&";
                }
                subStr += formElements[x].name + "=" + escape(formElements[x].value);
            }
        }
    }
    var returnv = false;
    var xmlHTTPObj = setXMLHTTPGet();
    if (!xmlHTTPObj) {
        return true;
    } else {
        document.body.style.cursor = "progress";
        fade(target, 'out');
        xmlHTTPObj.open('POST', strURL, true);
        xmlHTTPObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xmlHTTPObj.setRequestHeader('Content-length', subStr.length);
        xmlHTTPObj.setRequestHeader("Connection", "close");
        xmlHTTPObj.onreadystatechange = function() {
            if (xmlHTTPObj.readyState == 4) {
                document.body.style.cursor = "default";
                if (action) {
                    returnv = eval(action)
                } else {
                    fade(target, 'in');
                    appendHTML(xmlHTTPObj.responseText, target);
                    xmlHTTPObj = null;
                }
            }
        }
        subStr += "&Submit=Save";
        xmlHTTPObj.send(subStr);
    }
    return returnv;
}
function xmlHTTPGet(strURL,target,action) {
	var returnv = false
	var xmlHTTPObj = setXMLHTTPGet();
	if (!xmlHTTPObj) {
		return true;
	}else{
		document.body.style.cursor = "progress";
		fade(target, 'out');
		xmlHTTPObj.open('get', strURL, true);
		xmlHTTPObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xmlHTTPObj.send(null);
		xmlHTTPObj.onreadystatechange = function() {
		    if (xmlHTTPObj.readyState == 4) {
		        document.body.style.cursor = "default";
		        if (action) {
		            returnv = eval(action);
		        } else {
		            fade(target, 'in');
		            replaceHTML('' + xmlHTTPObj.responseText, target);
		            xmlHTTPObj = null;
		        }
		    }
		}
	}
return returnv;
}
function replaceHTML(fragment,target){
	var rtn = false;
	var evalJS = "";
	if(fragment.length && fragment.length >4){
		byId(target).innerHTML = fragment.split("|23|1|9")[0];
		evalJS = fragment.split("|23|1|9")[1];
		if(evalJS !="undefined"){
			eval(evalJS);
		}
		if(byId("b"+target)){
			byId("b"+target).innerHTML = fragment;
		}
		if(target.charAt(0)=='b' && byId(target.substring(1,target.length))){
			byId(target.substring(1,target.length)).innerHTML = fragment;
		}
	}
	toolTip();
}
	function tryCheck(){
		xmlHTTPGet("/mcheck.asp","msgInsert");
		setTimeout("tryCheck()",60000);
	}
	function playAlert() {
	    var ua = navigator.userAgent.toLowerCase();
	    if (ua.indexOf("mac") != -1) {
	        byId("dummySnd").innerHTML = '<embed type="audio/mpeg" src="/media/alert.mp3" hidden="true" autostart="true" />';
	    } else if (document.all) {
	        byId("dummySnd").innerHTML = '<embed type="x-audio/wav" src="/media/alert.wav" hidden="true" autostart="true" />';
	    } else {
	    byId("dummySnd").innerHTML = '<embed type="audio/mpeg" src="/media/alert.mp3" hidden="true" autostart="true" />';
	    }
	        
}
function fade(item, direction) {
	if(direction == 'in'){
	    for (x = 0; x <= 10; x++) {
			setTimeout("setOpacity('"+item+"',"+(x*10)+")",((x*10)*5));
		}
	}
	if(direction == 'out'){
		for( x=10;x>=0;x--){
			setTimeout("setOpacity('"+item+"',"+(x*10)+")",(((10-x)*10)*5));
		}
	}
}
function setOpacity(item, num) {
    if (byId(item)) {
        var chstyle = byId(item).style;
        chstyle.opacity = (num / 100);
        chstyle.MozOpacity = (num / 100);
        chstyle.KhtmlOpacity = (num / 100);
        chstyle.filter = 'alpha(opacity=' + num + ')';
    }
}
function insText(field, txt1,txt2,command) {
	if (document.selection) {
		field.focus();
		sel = document.selection.createRange();
		sel.text = txt1 + sel.text + txt2;
	}else if (field.selectionStart || field.selectionStart == 0) {
		var start = field.selectionStart;
		var end = field.selectionEnd;
		field.value = field.value.substring(0, start) + txt1 +field.value.substring(start,end)+txt2+ field.value.substring(end, field.value.length);
		field.selectionStart=start+txt1.length;
		field.selectionEnd=end+txt1.length;
	} else {
		field.value += txt1+txt2;
	}
	field.focus();
	hid();
	return doQP();
}
function doCmd(cmd, obj, val) {
    if (typeof val == "undefined") {
        val = null;
    }
    if (obj && obj.execCommand) {
        obj.execCommand(cmd, false, val);
    } else if (obj && obj.document && obj.document.execCommand) {
        obj.document.execCommand(cmd, 0, val);
    } else if (document.execCommand) {
        document.execCommand(cmd, false, val);
    }
}
function richInsText(field, command,url) {
        var myText;
        if (field.document && field.document.selection) {
            field.focus();
            sel = field.document.selection.createRange();
            myText = sel.text
        } else if (window.getSelection) {
            myText = window.getSelection();
            Freakcity.Debugger.Console.log('window.getSelection()')
        }
        var newnode;
        var doNodeStuff = false;
        switch (command) {
            case 'bold':
                Freakcity.Debugger.Console.log('bold called: ' + command);
                doCmd(command, field);
                break;
            case 'italic':
                Freakcity.Debugger.Console.log('italic called: ' + command);
                doCmd(command, field);
                break;
            case 'strikethrough':
                Freakcity.Debugger.Console.log('strikethrough called: ' + command);
                doCmd(command, field);
                break;
            case 'underline':
                Freakcity.Debugger.Console.log('underline called: ' + command);
                doCmd(command, field);
                break;
            case 'blocked':
                Freakcity.Debugger.Console.log('blocked called: ' + command);
                newnode = document.createElement('blockquote');
                newnode.className = 'blocked';
                doNodeStuff = true;
                break;
            case 'code':
                Freakcity.Debugger.Console.log('code called: ' + command);
                newnode = document.createElement('span');
                newnode.className = 'code';
                doNodeStuff = true;
                break;
            case 'centrejustify':
                Freakcity.Debugger.Console.log('center called: ' + command);
                newnode = document.createElement('span');
                newnode.className = 'txtcentre';
                doNodeStuff = true;
                break;
            case 'leftjustify':
                Freakcity.Debugger.Console.log('left called: ' + command);
                newnode = document.createElement('span');
                newnode.className = 'txtleft';
                doNodeStuff = true;
                break;
            case 'justify':
                Freakcity.Debugger.Console.log('justify called: ' + command);
                newnode = document.createElement('span');
                newnode.className = 'txtjustify';
                doNodeStuff = true;
                break;
            case 'rightjustify':
                Freakcity.Debugger.Console.log('right called: ' + command);
                newnode = document.createElement('span');
                newnode.className = 'txtright';
                doNodeStuff = true;
                break;
            case 'faint':
                Freakcity.Debugger.Console.log('faint called: ' + command);
                newnode = document.createElement('span');
                newnode.className = 'fainttext';
                doNodeStuff = true;
                break;
            case 'quote':
                Freakcity.Debugger.Console.log('quote called: ' + command);
                newnode = document.createElement('span');
                newnode.className = 'quote';
                doNodeStuff = true;
                break;
            case 'link':
                Freakcity.Debugger.Console.log('link called: ' + command);
                newnode = document.createElement('a');
                newnode.href = url;
                newnode.rel = "ext";
                doNodeStuff = true;
                break;
            }
            if (command.indexOf("colour") != -1) {
                Freakcity.Debugger.Console.log('colour called: ' + command);
                doCmd("ForeColor", field, command.split("colour")[1]);
            }
            if (command.indexOf("bclr") != -1) {
                Freakcity.Debugger.Console.log('bg colour called: ' + command);
                doCmd("BackColor", field, command.split("bclr")[1]);
            }
        if (doNodeStuff) {
            if (command == 'quote') {
                var newnode2 = document.createElement('blockquote');
                newnode.appendChild(newnode2);
                newnode2.innerHTML = myText;
            } else {
                newnode.innerHTML = (myText);
            }
            overwriteNode(field, newnode);
        }
        return false;
    }
    function overwriteNode(field, obj) {
        if (document.all) {
            var range = field.document.selection.createRange();
            var marker = addMarkerNode(field,range);
            marker.appendChild(obj);
            marker.removeNode();
        } else {
            var chrange = window.getSelection().getRangeAt(0);
            if ((chrange.startContainer.parentElement.id === field.id) || chrange.startContainer.parentNode.id === field.id || chrange.startContainer.id === field.id) {
                chrange.deleteContents();
                if (isTextNode(chrange.startContainer)) {
                    var startNode = rightBit(chrange.startContainer, chrange.startOffset)
                    startNode.parentNode.insertBefore(obj, startNode);
                } else {
                    var startNode = chrange.startContainer.childNodes[chrange.startOffset];
                    chrange.startContainer.insertBefore(obj, startNode);
                }
            }

        }
    }
    function rightBit(node, offset) {
        return node.splitText(offset);
    }
    function leftBit(node, offset) {
        node.splitText(offset);
        return node;
    }
    function addMarkerNode(obj,range) {
        var id = obj.document.uniqueID;
        var html = "<span id='" + id + "'></span>";
        range.pasteHTML(html);
        var node = obj.document.getElementById(id);
        return node;
    }
function isTextNode(node) { if (node.nodeType == 3) { return true; } return false; } 

function repText(field, txt1,txt2,command){
	if (document.selection) {
		field.focus();
		sel = document.selection.createRange();
		sel.text = txt1;
	}else if (field.selectionStart || field.selectionStart == 0) {
		var start = field.selectionStart;
		var end = field.selectionEnd;
		field.value = field.value.substring(0, start) + txt1 + field.value.substring(end, field.value.length);
		field.selectionStart=start+txt1.length;
		field.selectionEnd=end+txt1.length;
	} else {
		field.value += txt1;
	}
	field.focus();
	hid();
	return doQP();
}

function getSelected(field){
	var modText ="";
	byId("mesg").focus();
	if(byId("mesg").selectionEnd){
		modText = String(byId("mesg").value).substr(byId("mesg").selectionStart,(byId("mesg").selectionEnd - byId("mesg").selectionStart));
	}else if(document.getSelection){
		modText = document.getSelection();
	}else if (document.selection) {
		sel = document.selection.createRange();
		modText = sel.text;
	}
	return modText;
}

function urlshow(nam, frm, box) {
    if (byId(nam).style.display == '') {
        hid();
    } else {
        hid();
        byId(nam).style.display = ''
        if (nam.indexOf("piccy") != -1) {
            byId(nam).src = locPath + '/upload.asp?frm=' + frm + '&box=' + box
        }
    }
    return false;
}
function show(nam,frm,box){
	if(byId(nam).style.display==''){
		hid();
	}else{
		hid();
		byId(nam).style.display=''
		if(nam.indexOf("piccy")!=-1){
			byId(nam).src=locPath+'/upload.asp?frm='+frm+'&box='+box
		}
	}
	return false;
}
	function hid(){
		var divs = document.getElementsByTagName("div");
		var ifr = document.getElementsByTagName("iframe");
		for(x=0;x<divs.length;x++){
			if(divs[x].id.indexOf("col")!=-1 || divs[x].id.indexOf("smil")!=-1 || divs[x].id.indexOf("href")!=-1){
				divs[x].style.display='none';
			}
		}
		for(x=0;x<ifr.length;x++){
			if(ifr[x].id.indexOf("piccy")!=-1){
				ifr[x].style.display='none';
			}
		}
		return false;
	}
	
	function openImg(src){
		src = String(src).replace(/size=[0-9]*/gi,"size=m");
		if(src.indexOf("flickr.com")!=-1){
			src = src.replace(/_m\./gi,".");
		}
		window.open(src);
		}
function showPreview(obj) {
    if (byId(obj) && byId(obj).style.display == 'none') {
        byId(obj).style.display = 'block'
    } else {
        byId(obj).style.display = 'none'
    }
    return false;
}
function updateTxt(txt, box) {
    byId('hidden'+box).value = txt;
    //Freakcity.Debugger.Console.log('box value is now: ' + byId(box).value);
}