
var sendReq = getXmlHttpRequestObject();
var receiveReq = getXmlHttpRequestObject();
var base_addr = 'http://www.infinitecore.ca/index.php?';
	base_addr = base_addr.replace(/\&amp\;/ig, '&');
var lastMessage = 0;
var mTimer;
var nTimer;
var status_mess;
var alert_mess;
var status_orig;
var current_mess = 1;
var can_private;
var can_mod;
var skin_img;
var total_mem = new Array();
var ignore = new Array();
//Function for initializating the page.
function startChat(stat_mess,alt_mess,can_priv, skin, mod) {
	status_mess = stat_mess;
	alert_mess = alt_mess;
	can_private = can_priv;
	can_mod = mod;
	skin_img = skin;
	//Set the focus to the Message Box.
	document.getElementById('message').focus();
	status_orig = document.getElementById('p_status').innerHTML;
	document.getElementById('p_status').innerHTML = status_mess;
	//Start Recieving Messages.
	getChatText();
}
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest ) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject ) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		status_mess = status_orig;
		document.getElementById('p_status').innerHTML = status_mess;
	}
}
//Gets the current messages from the server
function getChatText() {
	if (lastMessage > -1 && (receiveReq.readyState == 4 || receiveReq.readyState == 0)) {
		receiveReq.open("GET", base_addr + 'a=cht&header=0&last=' + lastMessage, true);
		receiveReq.onreadystatechange = handleReceiveChat;
		receiveReq.send(null);
	}
	clearInterval(mTimer);
	mTimer = setTimeout('getChatText();',3000); //Refresh our chat in 3 seconds
}
//Add a message to the chat server.
function sendChatText() {
	if(document.getElementById('message').value == '') {
		alert(alert_mess);
		return;
	}
	var timing = new Date();
	if( nTimer > timing.getTime()-3100 ){ //will wait 3 seconds before it can send another message
		document.getElementById('message').focus();
		return;
	}
	document.getElementById('message').focus();
	if (sendReq.readyState == 4 || sendReq.readyState == 0) {
		nTimer = timing.getTime();
		sendReq.open("POST", base_addr + 'a=cht&last=' + lastMessage, true);
		sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		sendReq.onreadystatechange = handleSendChat;
		var param = 'message=' + document.getElementById('message').value;
		sendReq.send(param);
		document.getElementById('input_text').innerHTML = '<input type="text" id="message" name="message" id="message" style="width: 50em;" class="forminput" onClick="storeCaret(this);" onKeyup="storeCaret(this); javascript:expendinput();" onChange="storeCaret(this);" onFocus="storeCaret(this);" onSelect="storeCaret(this);" ONDBLCLICK="storeCaret(this);"/>';
		if(document.getElementById('expend_box').checked){
			expendinput();
		}
	}
	CurOffset;
	CurLine;
	TagStack = new Array();
}
//When our message has been sent, update our page.
function handleSendChat() {
	//Clear out the existing timer so we don't have
	//multiple timer instances running.
	clearInterval(mTimer);
	getChatText();
}
//Function for handling the return of chat text
function handleReceiveChat() {
	if (receiveReq.readyState == 4) {
		var chat_div = document.getElementById('div_chat');
		var xmldoc = receiveReq.responseXML;
		var member_nodes = xmldoc.getElementsByTagName("member");
		var me = xmldoc.getElementsByTagName("me");
		var message_nodes = xmldoc.getElementsByTagName("message");
		var n_messages = message_nodes.length;
		var add_lines = '';
		var lnti = ignore.length;
		for (i = 0; i < n_messages; i++) {
			var user_node = message_nodes[i].getElementsByTagName("user");
			var user_id_node = message_nodes[i].getElementsByTagName("user_id");
			var text_node = message_nodes[i].getElementsByTagName("text");
			var time_node = message_nodes[i].getElementsByTagName("time");
			var color_node = message_nodes[i].getElementsByTagName("color");
			var ign = 0;
			for(j=0;j<lnti;j++){
				if(ignore[j] == user_id_node[0].firstChild.nodeValue){
					ign = 1;
				}
			}
			if(ign == 0){
				add_lines += '<table width="98%"><tr><td align="left" colspan="3" id="chat_messages">' + text_node[0].firstChild.nodeValue + '</td></tr><tr><td><font color="' + color_node[0].firstChild.nodeValue + '">' + user_node[0].firstChild.nodeValue + '</font></td><td><font class="chat_time">' + time_node[0].firstChild.nodeValue + '</font></td><td align="center" width="10%"><input  type="image" onclick="javascript:deletemess(' + current_mess + ')" src="' + skin_img + 'postv/delete.gif" border="0" ></td></tr></table><hr /><!-- mess -->';
			}
			lastMessage = (message_nodes[i].getAttribute('id'));
			current_mess++;
		}
		if( add_lines != '' ){
			chat_div.innerHTML += add_lines;
			chat_div.scrollTop += (chat_div.offsetHeight * i);
			document.getElementById('message').focus();
		}
		var n_member = member_nodes.length;
		if(n_member>0){
			total_mem = new Array();
		}
		for (i = 0; i < n_member; i++) {
			var name_node = member_nodes[i].getElementsByTagName("name");
			var me_node = member_nodes[i].getElementsByTagName("me");
			var member_id_node = member_nodes[i].getElementsByTagName("member_id");
			var color_node = member_nodes[i].getElementsByTagName("color");
			var mem_arr = new Array(member_id_node[0].firstChild.nodeValue, name_node[0].firstChild.nodeValue, color_node[0].firstChild.nodeValue, 0);
			total_mem[i] = mem_arr;
			if(me_node.length){
				document.getElementById('moi').innerHTML = '<font color="' + color_node[0].firstChild.nodeValue + '">' + name_node[0].firstChild.nodeValue + '</font>';
			}
		}
		if(n_member>0){
			render_mem();
		}
	}
}
//Function that handles the member in the chat room.
function render_mem(){
	var n_member = total_mem.length;
	document.getElementById('n_member').innerHTML = n_member;
	var lines_m = '';
	var lines_mi = '';
	var ling = ignore.length;
	var mod;
	for (i = 0; i < n_member; i++) {
		var ing = 0;
		for(j=0; j < ling; j++){
			if(ignore[j] == total_mem[i][0]){
				ing = 1;
			}
		}
		if(ing == 0){
			if( lines_m != '' ){
				lines_m += ', ';
			}
			if( can_private == 1 ){
				lines_m += '<a href="javascript:privateMessage(' + total_mem[i][0] + ', \'' + total_mem[i][1] + '\' );"><font color=' + total_mem[i][2] + ' >' + total_mem[i][1] + '</font></a>';
			}else{
				lines_m += '<font color=' + total_mem[i][2] + ' >' + total_mem[i][1] + '</font>';
			}
		}else{
			if( lines_mi != '' ){
				lines_mi += ', ';
			}
			if( can_private == 1 ){
				lines_mi += '<a href="javascript:remIgnore(' + total_mem[i][0] + ' );"><font color=' + total_mem[i][2] + ' >' + total_mem[i][1] + '</font></a>';
			}else{
				lines_mi += '<font color=' + total_mem[i][2] + ' >' + total_mem[i][1] + '</font>';
			}
		}
		if(can_mod == 1){
			mod += '<option value="' + total_mem[i][0] + '">' + total_mem[i][1] + '</option>';
		}
	}
	if(can_private == 0){
		document.getElementById('ignore').disabled = true
	}
	if(can_mod == 1){
		document.getElementById('members_mod').innerHTML = '<select name="member">' + mod + '</select>';
	}
	document.getElementById('members').innerHTML = lines_m;
	document.getElementById('imembers').innerHTML = lines_mi;
	return;
}
//Delete a specific message in the chat_div
function deletemess( num ){
	var splitmess = document.getElementById('div_chat').innerHTML.split( '<!-- mess -->' );
	var ln = splitmess.length;
	var tot = "";
	for( i=0; i < ln; i++ ){
		if( i != (num-1) ){
			tot += splitmess[i] + '<!-- mess -->';
		}else{
			tot += '<!-- mess -->';
		}
	}
	document.getElementById('div_chat').innerHTML = tot;
	document.getElementById('message').focus();
}
//This functions handles when the user presses enter.  Instead of submitting the form, we
//send a new message to the server and return false.
function blockSubmit() {
	sendChatText();
	return false;
}
//This sends a private message to someone in the chat room.
//It adds the [private=n]@name: in front of the message.
function privateMessage( id, name ){
	if(id != '' ){
		if(document.getElementById('ignore').checked){
			document.getElementById('ignore').checked = false;
			var lnt = ignore.length;
			ignore[lnt] = id;
			render_mem();
			document.getElementById('message').focus();
		}else{
			var re = new RegExp("^\\[private=");
			if( document.getElementById('message').value == '' || !document.getElementById('message').value.match( re ) ){
				document.getElementById('message').value = '[private=' + id + ']@' + name + ': ' + document.getElementById('message').value;
				document.getElementById('message').focus();
			}else{
				document.getElementById('message').focus();
			}
		}
	}
}
//Removes an member from the Ignore list
function remIgnore(id){
	var lnt = ignore.length;
	var temp_arr = new Array();
	var j = 0;
	for(i=0; i < lnt; i++){
		if( ignore[i] != id ){
			temp_arr[j] = ignore[i];
			j++;
		}
	}
	ignore = temp_arr;
	render_mem();
	document.getElementById('message').focus();
}
//This function is used to add more input element for more space..
function expendinput(){
	var le = document.getElementById('message').value;
	l1 = le.length;
	if(l1 > 80 || document.getElementById('expend_box').checked ){
		var text = document.getElementById('message').value;
		document.getElementById('input_text').innerHTML = '<textarea cols="75" rows="10" id="message" name="message" class="forminput" onClick="storeCaret(this);" onKeyup="storeCaret(this);" onChange="storeCaret(this);" onFocus="storeCaret(this);" onSelect="storeCaret(this);" ONDBLCLICK="storeCaret(this);">' + document.getElementById('message').value + '</textarea>';
		document.getElementById('message').focus();
		document.getElementById('message').focus();
		return true;
	}
}


function CheckLength(NumAllowed) {
  MessLen  = document.messages.message.value.length;
  ArrayWords = document.messages.message.value.split(" ");
  alert( "You have used " + MessLen + " characters. \n The maximum allowed is "+NumAllowed+" so you can use another "+(NumAllowed-MessLen)+" characters.");
}


function CheckDnld(LangMustAgree,LangSelOpt,tot_file) {

  Agree  = document.membercp.agree.checked;
   if( Agree != true ) {
    alert(LangMustAgree);
    document.membercp.agree.focus();
    return false;
  } 

  file_sel = false;
  for (i=0;i<tot_file;i++) {
  if (document.membercp.file_id[i].checked) file_sel = true;
  }
  if (!file_sel) {
    alert(LangSelOpt);
    return false;
  }
}



function CheckReg(LangNameShort,LangPassShort,LangPassMatch,LangEmailMiss,LangEmailInv,LangMustAgree) {

  NameLen  = document.REG.UserName.value.length;
  if( NameLen < 3 ) {
    alert(LangNameShort);
    document.REG.UserName.focus();
    return false;
  }
  Pass1  = document.REG.PassWord.value;
  Pass2  = document.REG.PassWord_Check.value;
  if (Pass1.length < 5 || Pass2 < 5 ) {
    alert(LangPassShort);
    document.REG.PassWord.focus();
    return false;
  }
  if( Pass1 != Pass2 ) {
    alert(LangPassMatch);
    document.REG.PassWord.focus();
    return false;
  }

  Email  = document.REG.EmailAddress.value.length;
  if( Email==null || Email=="" ) {
    alert(LangEmailMiss);
    document.REG.EmailAddress.focus();
    return false;
  } else {
    apos=document.REG.EmailAddress.value.indexOf("@");
    dotpos=document.REG.EmailAddress.value.lastIndexOf(".");
    lastpos=document.REG.EmailAddress.value.length-1;
    if (apos<1 || dotpos-apos<2 || lastpos-dotpos>3 || lastpos-dotpos<2) {
      alert(LangEmailInv);
      document.REG.EmailAddress.focus();
      return false;
    }
  }
  Agree  = document.REG.agree.checked;
   if( Agree != true ) {
    alert(LangMustAgree);
    document.REG.agree.focus();
    return false;
  }
}



// ******************
// Redirection
// ******************

function ictredirect(search) { 
 self.location.href = '#' + search; 
}

// ******************
// Browser detection
// ******************
// Sources:
// http://www.quirksmode.org/js/detect.html

var Agent = navigator.userAgent.toLowerCase();
var BrowserVer = parseInt(navigator.appVersion);
var CurOffset;
var CurLine;

var ie = ((navigator.appName == 'Microsoft Internet Explorer' || FindItem('msie')) && BrowserVer >= 4 ) ? 1 : 0;
var moz = (navigator.appName == 'Netscape' && navigator.product == 'Gecko' && !(FindItem('safari'))) ? 1 : 0;
var opera  = (navigator.appName == 'Opera' || FindItem('opera')) ? 1 : 0;

var win = (navigator.platform == 'Win32' || FindItem('win')) ? 1 : 0;
var mac = (FindItem('mac')) ? 1 : 0;

function FindItem(search_item)
{
	item_index = Agent.indexOf(search_item) + 1;
	return item_index;
}

// ******************
// Stack functions
// ******************

var TagStack = new Array();

// Find the ToS
function ToS(StackName){
  for (i = 0; i < StackName.length; i++) {
    if (!StackName[i]) { return i; }
  }
  return StackName.length;
}

// Put item on the stack
function PushToS(StackName, Tag) {
  InsertPoint = ToS(StackName);
  StackName[InsertPoint] = Tag;
}

// Return the top item
function GetToS(StackName) {
  TopPoint = ToS(StackName);
  TopItem = StackName[TopPoint -1];
  return TopItem;
}

// Remove the top item
function KillToS (StackName) {
  TopPoint = ToS(StackName);
  delete StackName[TopPoint -1];
}

// Return the top value and remove it
function GetKillToS (StackName) {
  TopPoint = ToS(StackName);
  TopItem = StackName[TopPoint -1];
  delete StackName[TopPoint -1];
  return TopItem;
}

// Related functions

function CloseTags(StackName) {
  for ( i = ToS(StackName);   i > 0;   i--) {
    code =  '[/' + GetToS(StackName) + ']';
    document.messages['message'].value += code;
    delete StackName[i -1];
  } 
  DispUsedCode (TagStack); 
}

function CloseLastTag(StackName) {
  if (ToS(StackName) > 0 ) {
    code =  '[/' + GetKillToS(StackName) + ']';
    ictCode(code);
  }
}

// ******************
// Checking functions
// ******************

function isUrl(text) {
  return ((text.indexOf('.') > 7) &&
         ((text.substring(0,7) == 'http://') || 
        (text.substring(0,8) == 'https://') || 
         (text.substring(0,6) == 'ftp://')));
}

function isEmail(str) {
  if (!reSupport) { return (str.indexOf('.') > 2) && (str.indexOf('@') > 0); }
  var r1 = new RegExp( '(@.*@)|(..)|(@.)|(^.)' );
  var r2 = new RegExp('^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$ ');
  return (!r1.test(str) && r2.test(str));
}

// ******************
// Textarea functions
// ******************

function DispUsedCode (StackName) {
  if (document.messages.tagsopen != null) {
    document.messages.tagsopen.value = ' '; 
    for (i = ToS(StackName); i > 0; i--) {
      document.messages.tagsopen.value += '['+StackName[i-1]+'] ';
    }
  }
}

function storeCaret(el) { 
  if (ie && el.createTextRange) {
    el.caretPos = document.selection.createRange().duplicate();
  }
}

function returnFocus(ItemLen) {
   if (moz) {
     var curFocus = CurOffset+ItemLen;
     document.messages['message'].selectionStart = curFocus;
     document.messages['message'].selectionEnd = curFocus;
     document.messages['message'].scrollTop = CurLine; 
   }
   DispUsedCode (TagStack); 
   document.messages['message'].focus();
   
}

function getText() {
  if (ie && document.messages['message'].createTextRange && document.messages['message'].caretPos) {
    return (document.messages['message'].caretPos.text);
  } 
  else if (moz) {
    return (document.messages['message'].value.substring(document.messages['message'].selectionStart, document.messages['message'].selectionEnd));
  }
  else if (document.getSelection) {
    return(document.getSelection());
  } 
  else { return '';}
}

// ******************
// Code functions
// ******************
// code = 'the tag'
// is_complex = add the opened tag to the stack

function ictCode(TextItem) {
  var ItemLen = TextItem.length;
  if (ie &&  win && document.messages['message'].createTextRange && document.messages['message'].caretPos) {
    var caretPos = document.messages['message'].caretPos;
    caretPos.text = TextItem;
  } else if (moz) {
     CurOffset = document.messages['message'].selectionStart;
     CurLine = document.messages['message'].scrollTop;
     document.messages['message'].value = (document.messages['message'].value.substring(0, document.messages['message'].selectionStart)) + TextItem + (document.messages['message'].value.substring(document.messages['message'].selectionEnd, document.messages['message'].value.length));
  } else {
     document.messages['message'].value += TextItem; 
  }
  returnFocus(ItemLen); 
}

// Basic tag handler
function ubbBasic(code) {
  var text = getText();
  if (text) {
    code = '[' + code + ']' + text + '[/' + code + ']';
    ictCode(code);
  } else {
    if ( GetToS(TagStack) == code ) {
      var tag = '[/' + code + ']';
      KillToS(TagStack);
    } else {
      var tag = '[' + code + ']';
      PushToS(TagStack, code);
    } ictCode(tag);
  }
}

// URL's
function TPurl() {
  var url = 'http://'; 
  var desc = '';
  var text = getText();
  if (text) {
    if (isUrl(text)) { 
	  url = text; 
      desc = prompt('Enter Description: (or click OK to use the URL)',desc) || url;
    }
    else { 
      desc = text; 
      url = prompt('Enter URL: (must start http://)',url) || '';
    } 
  } else {
    url = prompt('Enter URL: (must start http://)',url) || '';
    desc = prompt('Enter Description: (or click OK to use the URL)',desc) || url;
  }
  if (!isUrl(url) || !desc ) { returnFocus(); return; }
  var code = '[url=' + url + ']' + desc + '[/url]';
  ictCode(code);
}

// Lists
function TPlist() {
    var write = getText();
    if (!write) { write = ''; }
    write = prompt('Enter Text:',write) || '';
    if ( !write ) { returnFocus(); return; }
    var code = (( write ) ? '' : ' ') + '[*]' + write;
    ictCode(code);
  }

// Email
function TPemail() {
  var email = ''; 
  var desc = '';
  var text = getText();
  if (text) {
    if (text) { 
      email = text; 
      desc = prompt('Enter Description: (or click OK to use the address)',desc) || email;
	}
    else { 
      desc = text; 
      email = prompt('Enter Email Address:',email) || '';
    } 
  } else {
    email = prompt('Enter Email Address:',email) || '';
    desc = prompt('Enter Description: (or click OK to use the address)',desc) || email;
  }
  if (!email || !desc) { returnFocus(); return; }
  var code = '[email=' + email + ']' + desc + '[/email]';
  ictCode(code);
}

function TPflash() {
  var url = 'http://';
  var h = '';
  var w = '';
  var wmin = '10';
  var hmin = '10';
  var text = getText();
  if (text && isUrl(text)) { 
     url = text; text = ''; 
  } else {
     url = prompt('Enter Flash URL:',url) || '';
  }
  w = prompt("Enter Flash Width: (max="+100+" min="+wmin+")",w) || '';
  h = prompt("Enter Flash Height: (max="+100+" min="+hmin+")",h) || '';
  if (w > 100) { w = 100; }
  if (h > 100) { h = 100; }
  if (w < wmin) { w = wmin; }
  if (h < hmin) { h = hmin; }
  if (!isUrl(url) || !h || !w) { returnFocus(); return; }
  var code = ((text) ? text + ' ' : '') + '[flash=' + w + ',' + h + ']' + url + '[/flash]';
  ictCode(code);
}

function TPimage() {
  var url = 'http://';
  var text = getText();
  if (text && isUrl(text)) { 
    url = text; text = ''; 
  } else {
    url = prompt('Enter Image URL: (must start http://)',url) || '';
  }
  if (!isUrl(url)) { returnFocus(); return; }
  var code = ((text) ? text + ' ' : '') + '[img]' + url + '[/img]';
  ictCode(code);
}


function TPimageHelp() {
  var text = getText();
  if (text) { 
    url = text; text = ''; 
  } else {
    url = prompt('Enter Image Name: (The images must be stored in the /skins/help_img/ directory)') || '';
  }
  if (!url) { returnFocus(); return; }
  var code = ((text) ? text + ' ' : '') + '[img]' + url + '[/img]';
  ictCode(code);
}

function DropList(OptionVal,OptionSee,UseStyle) {
  var Listitem;
  Listitem = '<option value="' + OptionVal;
  Listitem += ((UseStyle) ? '" style="color:' + OptionSee: '');
  Listitem += '">' + OptionSee + '</option>';
  return Listitem;
}

function TPFont(list) {
  var text = getText();
  var code;
  var attrib = list.name.substring(0,list.name.length);
  var value = list.options[list.selectedIndex].value;
  list.options[0].selected = 1;
  if (value && attrib && text) {
    code = '[' + attrib + '=' + value + ']' + text + '[/' + attrib + ']';
    ictCode(code);
  } else {
    if (value && attrib && !text) {
      code = '[' + attrib + '=' + value + ']';
      PushToS(TagStack, attrib);
      ictCode(code);
    }
  }
}

function VerifyTags() {
  var TagOpArray = new Array('');
  var TagClArray = new Array('');
  var textArray = new Array('');
  var Errors = 0;
  var AvailTags = new Array('dummy','b','i','u','s','code','me','list','quote');
  text = document.messages['message'].value;
  textArray = text.split('[');
  for(j=0; j < textArray.length; j++){
    textArray[j] = '[' + textArray[j];
    Item = textArray[j].substring(textArray[j].indexOf('[')+1, textArray[j].indexOf(']'));
    Item = Item.toUpperCase();
    if (Item.charAt(0) == '/') {
      ItemArray = Item.split('/');
      if (GetToS(TagOpArray) ==  ItemArray[1]) {
        KillToS(TagOpArray);
      } else {
        for(h=0 ; h<ToS(AvailTags) ; h++) {
          AvailTags[h] = AvailTags[h].toUpperCase();
          if (AvailTags[h] == ItemArray[1]) {
            PushToS(TagClArray, ItemArray[1]);   
          }
        }     
   
      }
    } else {
      for(k=0 ; k<ToS(AvailTags) ; k++) {
        AvailTags[k] = AvailTags[k].toUpperCase();
        if (AvailTags[k] == Item) {
          PushToS(TagOpArray, Item);
        }
      }      
    }
  }

  if (ToS(TagOpArray)) {Errors = 'opening'};
  if (ToS(TagClArray)) {Errors = 'closing'};
  if (ToS(TagClArray) && ToS(TagOpArray)) {Errors = 'the tags are mismatched'};

  Balance = ToS(TagOpArray) - ToS(TagClArray);
  if (Balance == 0) {
    if (Errors == 0 ) {
      Error = 'none';
    } else {

      Error = 'Correct number of open and close tags but they are in the wrong order';
    }
  }
  else if (Balance < 0) {Error = 'more opening tags are needed'}
  else if (Balance > 0) {Error = 'more closing tags are needed'};
  alert('You have ' + Balance + '  ' + Errors + ' tag errors - ' + Error);
}




function ImagePopup(url, width, height, title) 
{
	var pageWidth = 480;
	var pageHeight = 340;
	if (document.body && document.body.clientWidth) {
		pageWidth = document.body.clientWidth;
		pageHeight = document.body.clientHeight;
	} else if (window.innerWidth) {
		pageWidth = window.innerWidth;
		pageHeight = window.innerHeight;
	}
	var topPos = (pageHeight - height) / 2;
	var leftPos = (pageWidth - width) / 2;
	var features = 'width='+width;
	features += ',height='+height;
	features += ',top='+topPos;
	features += ',left='+leftPos;

	newWindow = window.open("", "ImagePopup", features);
	newWindow.document.open();
	newWindow.document.write('<html><title>'+title+'</title><body leftmargin="0" topmargin="0" marginheight="0" marginwidth="0" onBlur="self.close();" onClick="self.close();">');  
	newWindow.document.write('<table width="'+width+'" height="'+height+'" border="0" cellspacing="0" cellpadding="0" align="center"><tr><td><img src="'+url+'" width="'+width+'" height="'+height+'" alt="Click to Close"></td></tr></table>'); 
	newWindow.document.write('</body></html>');
	newWindow.document.close();
	newWindow.focus();
}


function emoticon(theSmilie) {
  var SmilieLen = theSmilie.length;
  if (ie && document.messages['message'].createTextRange && document.messages['message'].caretPos) {
      var caretPos = document.messages['message'].caretPos;
      caretPos.text = theSmilie + ' ';
   } else if (moz) {
     CurOffset = document.messages['message'].selectionStart;
     CurLine = document.messages['message'].scrollTop;
     document.messages['message'].value = (document.messages['message'].value.substring(0, document.messages['message'].selectionStart)) + theSmilie + (document.messages['message'].value.substring(document.messages['message'].selectionEnd, document.messages['message'].value.length));
   } else { 
     document.messages['message'].value += theSmilie; 
   }
   returnFocus(SmilieLen); 
}


var Agent = navigator.userAgent.toLowerCase();
var ie = ((navigator.appName == 'Microsoft Internet Explorer' || FindItemPop('msie')) && BrowserVer >= 4 ) ? 1 : 0;
var moz = (navigator.appName == 'Netscape' && navigator.product == 'Gecko') ? 1 : 0;
var CurOffset;

function emoticon_popup(theSmilie) {
var SmilieLen = theSmilie.length;

if (ie && window.opener.document.messages['message'].createTextRange && window.opener.document.messages['message'].caretPos) {
      var caretPos = window.opener.document.messages['message'].caretPos;
      caretPos.text = theSmilie + ' ';
  } else if (moz) {
     CurOffset = window.opener.document.messages['message'].selectionStart;
     CurLine = window.opener.document.messages['message'].scrollTop;
     window.opener.document.messages['message'].value = (window.opener.document.messages['message'].value.substring(0, window.opener.document.messages['message'].selectionStart)) + theSmilie + (window.opener.document.messages['message'].value.substring(window.opener.document.messages['message'].selectionEnd, window.opener.document.messages['message'].value.length));
   } else { 
      window.opener.document.messages['message'].value += theSmilie; 
   }
   returnFocusPop(SmilieLen); 
}

function returnFocusPop(ItemLen) {
   if (moz) {
     var curFocus = CurOffset+ItemLen;
     window.opener.document.messages['message'].selectionStart = curFocus;
     window.opener.document.messages['message'].selectionEnd = curFocus;
     window.opener.document.messages['message'].scrollTop = CurLine; 
   }
   window.opener.document.messages['message'].focus();
   window.close();
}

function FindItemPop(search_item) {
	item_index = Agent.indexOf(search_item) + 1;
	return item_index;
}

<!-- start popup -->


function PopUp(url, name, width,height,center,resize,scroll,posleft,postop) {
    if (posleft != 0) { x = posleft }
    if (postop  != 0) { y = postop  }

    if (!scroll) { scroll = 1 }
    if (!resize) { resize = 1 }

    if ((parseInt (navigator.appVersion) >= 4 ) && (center)) {
      X = (screen.width  - width ) / 2;
      Y = (screen.height - height) / 2;
    }
    if (scroll != 0) { scroll = 1 }

    var Win = window.open( url, name, 'width='+width+',height='+height+',top='+Y+',left='+X+',resizable='+resize+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no');
}

<!-- end popup -->
 
function doPreview(myForm, theURL) { 
var oldTarget = myForm.target; 
var oldAction = myForm.action; 
myForm.target = 'message'; 
myForm.action = theURL; 
window.open("", "message", 'toolbar=yes,menubar=no,location=no,resizable=yes,scrollbars=yes,status=no,width=600,height=600');
myForm.submit();
myForm.target = oldTarget; 
myForm.action = oldAction;
}  


  function JSQuote(post, mem_name, date, posturl) {
    theMessage = '[quote]In reference to post [url='+posturl+']#' + post + '[/url] (by ' + mem_name + ' on ' + date + ' ) in this thread[/quote]';
    if (moz) {
     CurOffset = document.messages['message'].selectionStart;
     CurLine = document.messages['message'].scrollTop;
     document.messages['message'].value = (document.messages['message'].value.substring(0, document.messages['message'].selectionStart)) + theMessage + (document.messages['message'].value.substring(document.messages['message'].selectionEnd, document.messages['message'].value.length));
   } else { 
      document.messages['message'].value += theMessage;
   }
       quote_len = theMessage.length;
       returnFocus(quote_len);
  }


