/*
COPYRIGHTS:

Copyright 2006 Adam S Docherty. All Rights Reserved.

www.themes.co.nz

This file is Copyright 2006 Adam S Docherty. All
rights reserved. This file may not, in whole or in any part, be
copied, reproduced or redistributed without prior consent, 
in writing, from Adam S Docherty.

You are granted a limited license to use this file. The file
may be used or copied only in accordance with the terms of that
license, which is described in the following paragraphs.

This file is intended as a library of functions for the JChat
Software Application and may only be used for this. You may
not copy or transfer these functions to use in other 3rd
party software.

THIS LICENSE AGREEMENT SHALL BE GOVERNED BY THE

LAWS OF THE UNITED STATES OF AMERICA, AND SHALL INURE TO 
THE BENEFIT OF Adam S Docherty OR ITS ASSIGNS.

DISCLAIMER / LIMITATION OF LIABILITY:
THE USER ACKNOWLEDGES THAT THE SOFTWARE MAY NOT BE
FREE FROM DEFECTS AND MAY NOT SATISFY ALL OF THE USER'S
NEEDS. THE SOFTWARE AND ANY ACCOMPANYING WRITTEN
MATERIALS ARE LICENSED "AS IS". IN NO EVENT WILL 
Adam S Docherty BE LIABLE FOR
DIRECT, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGE
OR DAMAGES RESULTING FROM LOSS OF USE, OR LOSS OF
ANTICIPATED PROFITS RESULTING FROM ANY DEFECT IN THE
PROGRAM, EVEN IF IT HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. 
*/

function jc_insertusermsg(message)
{	
	var recipient = jc_getparam('jc_recipient');
	
	/*var isspace = message.substring(0,6);
	
	if(isspace == '&nbsp;'){
		var cvalue = 0;
		var message 	= message.substring(6,message.length);
	}
	
	var isbreak = message.substring((message.length - 12),message.length);
	
	if(isbreak == '<br /><br />'){
		var message 	= message.substring(0,(message.length - 12));
	}
	
	if(!message){
		return false;
	}*/
	
	if(recipient == 'all'){
		
		var content 	= document.createElement('span');
		var template 	= $('messagetemplate').innerHTML;		
		var template 	= template.replace('***username***', jc_getparam('jc_username'));
		var template 	= template.replace('***username***', jc_getparam('jc_username'));
		var template 	= template.replace('***message***', message);
		
		content.innerHTML = template;
		
		var target 		= $('content');	
		
		target.appendChild(content, target.lastChild);
		
	} else {
		
		var content 	= document.createElement('span');
		var ptemplate 	= $('pmessagetemplate').innerHTML;	
		
		var ptemplate 	= ptemplate.replace('***username***', jc_getparam('jc_username'));
		var ptemplate 	= ptemplate.replace('***username***', jc_getparam('jc_username'));
		var ptemplate 	= ptemplate.replace('***message***', message);
		var ptemplate 	= ptemplate.replace('***recipient***', recipient);
		var ptemplate 	= ptemplate.replace('***recipient***', recipient);
		
		content.innerHTML = ptemplate;
		
		var target 		= $('content');	
		
		target.appendChild(content, target.lastChild);
	}
	
	scrollbott();
}

function disableIt(obj)
{
	if($(obj).disabled){
		$(obj).disabled = false;
	} else {
		$(obj).disabled = 'disabled';
	}
}

function scrollbott()
{	
	if (jc_getparam('jc_messagescroll')) {	
			parent.$('content').scrollTop = parent.$('content').scrollHeight;
		//parent.$('content').scrolling="no"
	}
}

function jc_detectopera(){
	
	if (navigator.userAgent.indexOf('Opera') != -1) {
		return true;
	}
	return false;	
}
	
function jc_usersetrecipient($name){
	
	if($name){
		jc_setparam('jc_recipient', $name);
	} else {
		jc_setparam('jc_recipient', 'all');
	}
	
	//$('jc_cresipient').innerHTML = jc_getparam('jc_recipient');
	$('jc_ulrecipient').innerHTML = jc_getparam('jc_recipient');

}

function jc_setrecipient(){
	
	if($('jc_pmrecipient').value){
		jc_setparam('jc_recipient', $('jc_pmrecipient').value);
	} else {
		jc_setparam('jc_recipient', 'all');
	}
	
	$('jc_cresipient').innerHTML = jc_getparam('jc_recipient');
	$('jc_ulrecipient').innerHTML = jc_getparam('jc_recipient');

}

function jc_formfileupload(target, func, iframename) {
	var div = window.parent.document.createElement('div');
	div.innerHTML = '<iframe style="width:0;height:0" name="'+iframename+'" frameborder="0" onload="jc_accessfunc(\''+target+'\', \''+func+'\');"></iframe>';
	
	$(target).appendChild(div);
}

function jc_clearelement(id) {
	var element = document.getElementById(id);
	
	element.innerHTML = '<img src="'+imagepatht+'loading2.gif" />';
}

function jc_clearelement2(id) {
	var element = document.getElementById(id);
	
	element.innerHTML = '<!-- -->';
}

function getFormValues(fid,valFunc) {
	
var fobj 		= document.getElementById(fid);
var str 		= "";
var valueArr 	= null;
var val 		= "";
var cmd 		= "";

	for(var i = 0;i < fobj.elements.length;i++){
		
		if(escape(fobj.elements[i].name) != 'undefined'){
				
		   switch(fobj.elements[i].type){
		
			   case "text":
		
					if(valFunc) {
		
						cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
						val = eval(cmd)
					}
		
					str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
					break;
		
			   case "select-one":
		
					str += fobj.elements[i].name + "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
					break;
			   
			   case 'checkbox':    
					
					var value = '';
					
					if(escape(fobj.elements[i].checked) == 'true'){
						value = 'true';
					}
					
				str += fobj.elements[i].name + "=" + escape(value) + "&";
				break;
				
				default:    
				str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
		
		   }
		
		}
	
	}
	str = str.substr(0,(str.length - 1));
	
	return str;
}



function jc_accessroom(id, name){
	
	newroom = id;
	cur_room = id;
	
	jc_setparam('jc_roomid', id);
	jc_setparam('jc_roomname', name);
	
	$('jc_currentroom').innerHTML = name;
	
	showTab('dhtmlgoodies_tabView1','0');
	
	jc_setparam('jc_lastid', 'roomchange');
	
	jc_accessfunc('', 'userpm', 'jc_config');
	jc_setparam('jc_recipient', 'all');
	
	$('jc_ulrecipient').innerHTML = jc_getparam('jc_recipient');
	 
	if(timerID == '448941'){
		changeVisibility('jc_iefixfieldset', 1, 'block');
		getdata();
	} else {
		changeVisibility('jc_iefixfieldset', 1, 'block');
		getdata0();
	}
}

/*function jc_multicheck(){	
	
	if(newroom != cur_room){
		clearTimeout(timerID);
		window.location="index.php?option=com_jchat&func=accessdenied&type=multibrowser";
		jc_accessfunc('noreturn', 'logout');
		jc_exit();		
	}
}*/

function jc_exit(){
	
	clearTimeout(timerID);
	
	timerID = 'initialise';
	
	jc_setparam('jc_roomid', 'exit');
	jc_setparam('jc_roomname', 'exit');
	
	$('jc_currentroom').innerHTML = chooseroom;
	
	showTab('dhtmlgoodies_tabView1','0');
	
	jc_setparam('jc_lastid', 'exit');
	
	//jc_accessfunc('', 'userpm', 'jc_config');
	jc_setparam('jc_recipient', 'all');
	
	$('jc_ulrecipient').innerHTML = jc_getparam('jc_recipient');
	
	getdata0();
	
	changeVisibility('jc_iefixfieldset', 1, 'none');
	changeVisibility('jc_loading', 1, false);
}

function jc_accessstartroom(id, name){
	
	jc_setparam('jc_roomid', id);
	jc_setparam('jc_roomname', name);
	
	$('jc_currentroom').innerHTML = name;
	
	//showTab('dhtmlgoodies_tabView1','0');
	
	jc_setparam('jc_lastid', 'roomchange');
	
	jc_accessfunc('jc_jajax_userpm', 'userpm', 'jc_config');
	jc_setparam('jc_recipient', 'all');
	
	$('jc_ulrecipient').innerHTML = jc_getparam('jc_recipient');
	
	getdata0();
}

function jc_tabajaxinit(id){

	var nodess = $('tabViewdhtmlgoodies_'+id).childNodes;
	
	
	for(i=0; i<nodess.length; i++){		
		if(nodess[i].id){
			if(nodess[i].id.search(/jajax/i) == 3){
				gettabdata(nodess[i].id);
			}
		}
	}	
}


function jc_ajaxError(errorcode, url){
	
	var error;
	
	switch(errorcode)
	{
	case 404:
	  error = '404 Not Found';
	  break    
	case 408:
	  error = '408 Request Timeout';
	  break
	case 409:
	  error = '409 Conflict';
	  break
	case 500:
	  error = '500 Internal Server Error';
	  break
	case 503:
	  error = '503 Service Unavailable';
	  break
	default:
	  error = errorcode;
	}
	
	changeVisibility('jc_error', 1, 'inline');
	
	var errordiv = document.getElementById('jc_error');
	
	alert('Error: ' + error +' : ' +url);
}


function $(element){
	return document.getElementById(element);
}

function jc_initparams(){
	var cookieName = 'jc_temp'; 
	var jc_params_array = init_array();	
	get_array(cookieName, jc_params_array);
	
	for (var i=1; i<next_entry(jc_params_array); i++) {			
		
		results = jc_params_array[i].split('**');
				
		var param 		= results[0];
		var setting  	= results[1];
		
		jc_setparam(param, setting);
	}
}

function jc_setparam(param, setting){
	
	if(!document.getElementById(param)){		
		newConfigElement = document.createElement("input");
		newConfigElement.setAttribute("type", "hidden");
		newConfigElement.setAttribute("id", param);
		newConfigElement.setAttribute("value", setting);	
		document.getElementById('jc_config').appendChild(newConfigElement);
	} else {
		document.getElementById(param).value = setting;
	}
	
	//set config cookie
	jc_params = document.forms['jc_config'].elements;
	
	jc_params_array = init_array();	
	jc_params_array.splice(0,1);
	
	for(i=0; i<jc_params.length; i++){				
		jc_params_array[i+1] = jc_params[i].id+'**'+jc_params[i].value;
	}
	
	var cookieName = 'jc_temp';
	var timeToKeep = 60000; // one minute
	var expires = new Date();
	expires.setTime(expires.getTime() + timeToKeep);

	set_array(cookieName, jc_params_array, expires);
}

function jc_getparam(param){
	
	if(document.getElementById(param)){
		return document.getElementById(param).value;
	}
}

function closeFW (div){

    var div = document.getElementById(div);
	
	div.style.display='none';
	
}

function openFW(div){
	var div = document.getElementById(div);
	
	div.style.display='block';
}

function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
 
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}

function changeClass(objid, objclass) {
	ID = document.getElementById(obj);
	ID.style.className = objclass;
} 

function changeVisibility(objid, collapse, visibility){
	
	if (collapse) {
		if (!visibility) {
			document.getElementById(objid).style.display = 'none';	
		} else {
			document.getElementById(objid).style.display = visibility;
		}
	} else {
		if (!visibility) {
			document.getElementById(objid).style.visibility = 'hidden';	
		} else {
			document.getElementById(objid).style.visibility = visibility;
		}
	}
}

//for the permissions admin
function jc_moveup(count,formname,group,username,room,level,tfnme) {

	var fnme 	= document.getElementById(formname);
	var tfnme 	= document.getElementById(tfnme);
	
	tfnme.elements['group'].value 	=  fnme.elements['group'+(parseInt(count)-1)].value;
	tfnme.elements['username'].value=  fnme.elements['username'+(parseInt(count)-1)].value;
	tfnme.elements['room'].value 	=  fnme.elements['room'+(parseInt(count)-1)].value;
	tfnme.elements['level'].value 	=  fnme.elements['level'+(parseInt(count)-1)].value;
	
	fnme.elements['group'+(parseInt(count)-1)].value 	= fnme.elements[group].value;
	fnme.elements['username'+(parseInt(count)-1)].value = fnme.elements[username].value;
	fnme.elements['room'+(parseInt(count)-1)].value 	= fnme.elements[room].value; 
	fnme.elements['level'+(parseInt(count)-1)].value 	= fnme.elements[level].value; 
	
	fnme.elements[group].value 	= tfnme.elements['group'].value;
	fnme.elements[username].value = tfnme.elements['username'].value;
	fnme.elements[room].value 	= tfnme.elements['room'].value; 
	fnme.elements[level].value 	= tfnme.elements['level'].value; 
}

function jc_movedown(count,formname,group,username,room,level,tfnme) {
	
	var fnme 	= document.getElementById(formname);
	var tfnme 	= document.getElementById(tfnme);
	
	tfnme.elements['group'].value 	=  fnme.elements['group'+(parseInt(count)+1)].value;
	tfnme.elements['username'].value=  fnme.elements['username'+(parseInt(count)+1)].value;
	tfnme.elements['room'].value 	=  fnme.elements['room'+(parseInt(count)+1)].value;
	tfnme.elements['level'].value 	=  fnme.elements['level'+(parseInt(count)+1)].value;
	
	fnme.elements['group'+(parseInt(count)+1)].value 	= fnme.elements[group].value;
	fnme.elements['username'+(parseInt(count)+1)].value 		= fnme.elements[username].value;
	fnme.elements['room'+(parseInt(count)+1)].value 	= fnme.elements[room].value;
	fnme.elements['level'+(parseInt(count)+1)].value 	= fnme.elements[level].value; 
		
	fnme.elements[group].value 	= tfnme.elements['group'].value;
	fnme.elements[username].value = tfnme.elements['username'].value;
	fnme.elements[room].value 	= tfnme.elements['room'].value;
	fnme.elements[level].value 	= tfnme.elements['level'].value;
}

//for the rooms order 
function jc_rmoveup(count,formname,rid,rname,tfnme) {

	var fnme 	= document.getElementById(formname);
	var tfnme 	= document.getElementById(tfnme);
	
	tfnme.elements['rid'].value 	=  fnme.elements['rid'+(parseInt(count)-1)].value;
	tfnme.elements['rname'].value=  fnme.elements['rname'+(parseInt(count)-1)].value;
	
	fnme.elements['rid'+(parseInt(count)-1)].value 	= fnme.elements[rid].value;
	fnme.elements['rname'+(parseInt(count)-1)].value = fnme.elements[rname].value;
	
	fnme.elements[rid].value 	= tfnme.elements['rid'].value;
	fnme.elements[rname].value = tfnme.elements['rname'].value;
}

function jc_rmovedown(count,formname,rid,rname,tfnme) {
	
	var fnme 	= document.getElementById(formname);
	var tfnme 	= document.getElementById(tfnme);
	
	tfnme.elements['rid'].value 	=  fnme.elements['rid'+(parseInt(count)+1)].value;
	tfnme.elements['rname'].value=  fnme.elements['rname'+(parseInt(count)+1)].value;
	
	fnme.elements['rid'+(parseInt(count)+1)].value 	= fnme.elements[rid].value;
	fnme.elements['rname'+(parseInt(count)+1)].value 		= fnme.elements[rname].value; 
		
	fnme.elements[rid].value 	= tfnme.elements['rid'].value;
	fnme.elements[rname].value = tfnme.elements['rname'].value;
}

function jc_loginfunc(divid, func, formid) 
{			
	
	
	
	var xmlhttpGeneric 	= getHTTPObject();
	var targetDiv 		= divid;
	var url 			= 'index.php?option=com_jchat';
	var formparams		= '';
	

	
	if(formid){
		var formparams = getFormValues(formid,'');
	}
	
	var param 			= '&func='+func+'&'+formparams;
	
	changeVisibility('jc_error', 1, false);
	changeVisibility('jc_loading', 1, 'inline');
	
	xmlhttpGeneric.open("post",url,true);
 	xmlhttpGeneric.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 	xmlhttpGeneric.send(param);
	
	xmlhttpGeneric.onreadystatechange=function() {
		
  		if (xmlhttpGeneric.readyState==4){	
		
			if (xmlhttpGeneric.status == '200'){
				
				result = xmlhttpGeneric.responseText;
				
				if(divid){
					var target 	= $(targetDiv);		
					var content = document.createElement('span');					
					target.innerHTML = xmlhttpGeneric.responseText;
					
					var x = target.getElementsByTagName("script"); 
					   for(var i=0;i<x.length;i++)
					   {
						   eval(x[i].text);
					   }
				}
				
			} else {				
				//jc_ajaxError(xmlhttpGeneric.status);
			}
			changeVisibility('jc_loading', 1, false);
  		}				
		//scrollbott("content");
 	}

 	return false
}

function jc_cookiecheck() {
	
	var cc_cookieName = 'jc_cookiecheck';
	var cc_timeToKeep = 5000; // one minute
	var cc_content = init_array();
	cc_content[1] = 'yes';
	var cc_expires = new Date();
	cc_expires.setTime(cc_expires.getTime() + cc_timeToKeep);

	set_array(cc_cookieName, cc_content, cc_expires);
	
	var cookieName = 'jc_cookiecheck'; 
	var jc_cookiechecka = init_array();	
	get_array('jc_cookiecheck', jc_cookiechecka);
	
	if (jc_cookiechecka[1] == 'yes'){
		return true;
	}
}

function jc_setEmbed(ID) {
    var element = document.getElementById(ID);
    //Write the following three lines in one:
    element.innerHTML = '<embed src="'+imagepatht+'newmessage2.wav" autostart="1" loop="0" width="0" height="0" type="'+jc_getMimeType()+'" ></embed>';
}

function jc_getMimeType(){
var mimeType = "application/x-mplayer2"; //default
var agt=navigator.userAgent.toLowerCase();
if (navigator.mimeTypes && agt.indexOf("windows")==-1) {
//non-IE, no-Windows
  var plugin=navigator.mimeTypes["audio/x-wav"].enabledPlugin;
  if (plugin) mimeType="audio/x-wav" //Mac/Safari & Linux/FFox
}//end no-Windows
return mimeType
}
