/**
* @ CHANT Core Script 
* @ Copyright (C) 2006-07 Alexander Movsisyan
* @ Site: http://chant.prophp.org
* @ All rights reserved
* @ version $Revision: 1.1.1.1 $
**/

var a = 1;
var count = 1;
var show = 0;    
var rector = 1;
var stopit = 0; 
var usrdelay  = 30000;
var datadelay = 5000;
var step = -1;
var save = new Array();
var regexp = new RegExp("[\r]","gi");
var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko') != -1) ? true : false;
var isIE = (navigator.appName == "Microsoft Internet Explorer"); 

new Image().src = 'images/ajax-loader.gif';
new Image().src = 'images/loading.gif';
		
var Try = {            
these: function() {
    var returnValue;
    for (var i = 0; i < arguments.length; i++) {
      var args = arguments[i];
      try {
        returnValue = args();
        break;
      } catch (e) {
      }
    }
    return returnValue;
  }
}

function xmlhttp() {
    return Try.these(
    function() {return new XMLHttpRequest()},  
    function() {return new ActiveXObject('Msxml2.XMLHTTP')},
    function() {return new ActiveXObject('Microsoft.XMLHTTP')}      
    ) || false;
}

function showProgress(){
    var bar = document.getElementById("bar");
    var digits = document.getElementById("digits");
    if(document.layers){
	if (count < 100) count++; else return;
	if(bar.progbar.width < 200){
	bar.write("<img src=\"images/load.gif\" height=15 width=" + count*2 + " name=\"progbar\" />"); 
	bar.close();
	}
	if (count < 100) count++; else return;
	document.digits.document.write(count + " %");
	document.digits.document.close();
	setTimeout('showProgress()', 100);
	}
    if(document.getElementById){    
	if(document.progbar.width < 200) document.progbar.width += 2;
	if (count < 100) count++; else return;
	digits.innerHTML = count + " %";
	prdelay = setTimeout('showProgress()', 100);
    }
    
}

function roll(id){  
	var objS = document.getElementById(id).style;
	if (objS.display=='none'){
	objS.display='';
	} else {
	objS.display='none';
	}
}

function scrollBar() {
    panel = document.getElementById("chat_win");
    for (I=1; I<=panel.scrollHeight; I+=50){
      panel.scrollTop += 50
    }
}
				
function keydown(x) {
    if(x)
    thisKey = x.which;
    else
    thisKey = window.event.keyCode;

    if(thisKey == 38 || thisKey == 40){
    if(thisKey == 38)
    step = step + 1;
    if(thisKey == 40)
    step = step - 1;
    arrow();
    } else {
    step = -1;
    }
						
}
                    
function arrow() {
    if(step > save.length - 1)
    step = save.length - 1;
    if(step < - 1)
    step = -1;						
    if(step != -1)	
    document.getElementById('text').value = save[step];
    else
    document.getElementById('text').value = '';
}                    
        
function sendData()	{
    var usrname = document.getElementById('userid').value;
    var color = document.getElementById('color').value;
	var chatstr = document.getElementById('text');

	if(chatstr.value.length == 0) return;
    
    document.getElementById('inprogress').innerHTML = "<img src='images/ajax-loader.gif' width='16' height='16' alt='Sending...' />";			
	inpdata = Base64.encode(chatstr.value);
    save.unshift(chatstr.value);
	chatstr.value = '';    
                
	url = 'senddata.php?user=' + usrname + '&color=' + color + '&text=' + inpdata;
	
	senddata = xmlhttp();
    senddata.open('GET', url + "&ms=" + new Date().getTime(), true);
	senddata.onreadystatechange = function(){
    if (senddata.readyState == 4) {
    getData(false);
	}
	}
	senddata.send(null);
}
        
function setPrivate(name) {
	document.getElementById('privname').innerHTML = name;
    document.getElementById("float_bar_roll").style.display = "";
	switchCell(4);    
} 
        
function sendprivData(name)	{
	var usrname = document.getElementById('userid').value;
    var color = document.getElementById('color').value;
	var privtext = document.getElementById('privtext');
    var privname = document.getElementById('privname').innerHTML;
        
    if(privname == '') {
    privtext.value = "Please select user";    
    document.getElementById('inprogress').innerHTML = "";
    return;
    }
    
    if(privtext.value.length == 0) {
    document.getElementById('inprogress').innerHTML = "";
    return;
    }
    
    document.getElementById('inprogress').innerHTML = "<img src='images/ajax-loader.gif' width='16' height='16' alt='Sending...' />";			
	inpdata = Base64.encode(privtext.value);
	privtext.value = '';
                  
	url = 'senddata.php?user=' + usrname + '&private=' + privname + '&color=' + color + '&text=' + inpdata;
	req = xmlhttp();
    req.open('GET', url + "&ms=" + new Date().getTime(), true);
	req.onreadystatechange = function(){
    if (req.readyState == 4) {    
    getData(false);
    }			
	}    
    req.send(null);
            
}
         
function getInfo(un) {
	var info = document.getElementById('info'); 
    
    document.getElementById('inprogress').innerHTML = "<img src='images/ajax-loader.gif' width='16' height='16' alt='Sending...' />";			
	url = 'getusrinfo.php?user=' + un;
	getinfo = xmlhttp();
	getinfo.open('GET', url + "&ms=" + new Date().getTime(), true);        
	getinfo.onreadystatechange = function(){			
	if(getinfo.readyState == 4 && getinfo.responseText != '') {                    
	info.innerHTML = getinfo.responseText;
    document.getElementById('inprogress').innerHTML = "";			
	switchCell(3);
	}			
	}
	getinfo.send(null);
}
          
function getData(x) {
    var px = '';
    var py = '';
    var usrname = document.getElementById('userid').value;
    var timestamp = document.getElementById('timestamp');
	var chatdata = document.getElementById('chat_win');
    var privdata = document.getElementById('privdata');
    var firstmark = document.getElementById('firstmark');
    var fetchmark = document.getElementById('fetchmark');
    
    if(fetchmark.value == 'inwork') return;
                
	url = 'getdata.php?username=' + usrname + '&timestamp=' + timestamp.value;
	//alert(timestamp.value);
    fetchmark.value = 'inwork';
	getdat = xmlhttp();
    getdat.open('GET', url + "&ms=" + new Date().getTime(), true);    
	getdat.onreadystatechange = function(){			
	if(getdat.readyState == 4) {
    //window.clearTimeout(prdelay);
    document.getElementById('inprogress').innerHTML = "";
    if(firstmark.value == '') chatdata.innerHTML = '';
    firstmark.value = 'ok';
    s = getdat.responseText;
    xx = s.split("\n");                 
                  
    for(var i = 1; i < xx.length - 1; i++){
    v = xx[i].split("|");
    if(v[0] == "no" || v[0] == "on"){
    px += Base64.decode(v[1]) + '<br /><br />';                     
    } else {
    py += Base64.decode(v[1]) + '<br /><br />';
    document.getElementById("float_bar_roll").style.display = "";
    switchCell(4);   
    }
    if(v[0] == "on") 
    var getnewusr = 'yes';
    }
    if(getnewusr == 'yes') getUsers(false);
    if(px != '')
	chatdata.innerHTML += px;
    if(py != '')                
    privdata.innerHTML += py;
          
    timestamp.value = xx[0];   
    getnewusr = '';     
    fetchmark.value = '';      
    scrollBar();    
	}			
	}
            
	getdat.send(null);
	if(x) window.setTimeout("getData(true)", datadelay);
}

function getUsers(y)	{
	var usrname = document.getElementById('userid').value;
	var sex = document.getElementById('sex').value;
	var usrlst = document.getElementById('userlist');
	
	url = 'getusers.php?user=' + usrname + '&sex=' + sex;
	getusr = xmlhttp();
    getusr.open('GET', url + "&ms=" + new Date().getTime(), true);            
	getusr.onreadystatechange = function(){
	
		if(getusr.readyState == 4 && getusr.responseText != '') {
			usrlst.innerHTML = getusr.responseText;
		}
	
	}
    
	getusr.send(null);

    if(y) window.setTimeout("getUsers(true)", usrdelay);
}   
                    
function setsmile(name){
	var txtstr = document.getElementById('text');
    txtstr.value = txtstr.value + ' ' + name + ' ';
    txtstr.focus();
}

function tag(x, y) {
	var txtstr = document.getElementById('text');
    
	if (isMozilla) {       
	objectValue = txtstr.value;

	deb = txtstr.selectionStart;
	fin = txtstr.selectionEnd;

	objectValueDeb = objectValue.substring(0, txtstr.selectionStart);
	objectValueFin = objectValue.substring(txtstr.selectionEnd, txtstr.textLength);
	objectSelected = objectValue.substring(txtstr.selectionStart,txtstr.selectionEnd);
		
	txtstr.value = objectValueDeb + "[" + x + "]" + objectSelected + "[/" + y + "]" + objectValueFin;
	txtstr.selectionStart = strlen(objectValueDeb);
	txtstr.selectionEnd = strlen(objectValueDeb + "[" + x + "]" + objectSelected + "[/" + y + "]");
	txtstr.setSelectionRange(
	objectValueDeb.length + selec.length + 2,
	objectValueDeb.length + selec.length + 2);
	} else {
	var str = document.selection.createRange().text;
  	if (str.length > 0)	{
	var sel = document.selection.createRange();
	sel.text = "[" + x + "]" + str + "[/" + y + "]";
	sel.collapse();
	sel.select();
	} else {
	txtstr.focus(txtstr.caretPos);
	txtstr.focus(txtstr.value.length);
	txtstr.caretPos = document.selection.createRange().duplicate();
	
	var bidon = "%~%";
	var orig = txtstr.value;
	txtstr.caretPos.text = bidon;
	var i = txtstr.value.search(bidon);
	txtstr.value = orig.substr(0,i) + "[" + x + "][/" + y + "]" + orig.substr(i, txtstr.value.length);
	var r = 0;
	for(n = 0; n < i; n++)
	{if(regexp.test(txtstr.value.substr(n,2)) == true){r++;}};
	pos = i + 2 + x.length - r;
	var r = txtstr.createTextRange();
	r.moveStart('character', pos);
	r.collapse();
	r.select();
	}
  }
}

function captureReturn(event) {  
	if(isIE)
	event = window.event;

    if(event.keyCode == 13) {
	sendData();             
    if(isIE) {
	event.returnValue = false;
    } else {
    event.preventDefault();
    }
    }
}

function clearstr() {
	txtstr = document.getElementById('text');
    txtstr.value = '';
    txtstr.focus();
}

function exit() { 
    var usrname = document.getElementById('userid').value;

    url = 'getusers.php?user=' + usrname+ '&act=exit';
			
	exit = xmlhttp();
    exit.open('GET', url + "&ms=" + new Date().getTime(), true);			
    exit.onreadystatechange = function(){
	if(exit.readyState == 4) {        
	window.location.href = "index.php";     
	}			
	}                    
	exit.send(null);    
}

function admin(act, user, sec) { 
    url = 'admin.php?act=' + act + '&user=' + user;
			
	adminreq = xmlhttp();
    adminreq.open('GET', url + "&ms=" + new Date().getTime(), true);
    adminreq.onreadystatechange = function(){			
	if(adminreq.readyState == 4) {    
    window.location.href = 'admin.php?sec=' + sec;  
    }			
	}                    
	adminreq.send(null);    
}

function init(which) {
	stopit=0
	shake=which
	shake.style.left=0
	shake.style.top=0
}

function rattleimage() {
	if ((!document.all&&!document.getElementById)||stopit==1) return;
	if (a==1){
	shake.style.top=parseInt(shake.style.top)+rector
	} else if (a==2){
	shake.style.left=parseInt(shake.style.left)+rector
	} else if (a==3){
	shake.style.top=parseInt(shake.style.top)-rector
	} else{
	shake.style.left=parseInt(shake.style.left)-rector
	}
	if (a<4)
	a++
	else
	a=1
	setTimeout("rattleimage()", 100)
}

function stoprattle(which) {
	stopit=1
	which.style.left=0
	which.style.top=0
}

function statusClock() {
	today = new Date();
	self.status = today.toString();
    window.setTimeout("statusClock()", 100);
}

function switchCell(m) {
    var style;
    document.getElementById("float_bar_roll").style.display = "";
    document.getElementById("navcell1").className = "tab-off";
    document.getElementById("navcell2").className = "tab-off";
    document.getElementById("navcell3").className = "tab-off";
    document.getElementById("navcell4").className = "tab-off";
    document.getElementById("tab1").className = "hide-table";
    document.getElementById("tab2").className = "hide-table";
    document.getElementById("tab3").className = "hide-table";
    document.getElementById("tab4").className = "hide-table";  
    style = "tab-on"
    document.getElementById("navcell" + m).className = style;
    document.getElementById("tab" + m).className = "tab-content show-table";
}

function startChat() {
//    showProgress();	
    statusClock();
	getUsers(true);
	getData(true);
    
    DragHandler.attach(document.getElementById('float_bar'));                                               			
	sendtext = document.getElementById("text");
	sendtext.focus();
	sendtext.onkeypress = captureReturn;
	sendtext.onkeydown = keydown;
}
