// **********
/* A slightly modified version of the wTag mini chat
shoutbox from http://www.spacegirlpippa.co.uk */

// **********


/*------ JavaScript functions -------------------------------*/


// Clear default value of the name field
function set_focus_n(t) {

  if (t.defaultValue == t.value)
  t.value = '';

}

// Clear default value of the pass field
function set_focus_p(t) {

  if (t.defaultValue == t.value)
  t.value = '';

}

// Clear default value of the message field
// + change the message field text color
function set_focus_m(t) {

  if (t.defaultValue == t.value)
  t.value = '';
  t.style.color = '#000000';

}


// Submit on Enter key press
// The function taken from http://www.ryancooper.com/resources/keycode.asp
function checkKeycode(e) {
  
  var keycode;
  
  if (window.event) keycode = window.event.keyCode;
  else if (e) keycode = e.which;
  
  if(keycode == 13)
  {
  sendMessage();
  return false;
  }
  else return true;

}


// Validate user input and alert if something goes wrong
function checkInput(message) {
  
  var input_e = "";
  
  input_e += checkMessage(message);
  input_e += checkChars(message);
  input_e += checkSpam(message);
  
  if (input_e != "")
  {
  alert(input_e);
  return false;
  }

  return true;

}


// Check for restricted tags and attributes
function checkChars(msg) {
  
  var error = "";
  
  for (var i=0; i < characters.length; i++) { 
  
  if (msg.indexOf(characters[i])!= -1)
  { 
  error = "Some tags are not allowed.";
  } 
  
  } 
  
  return error;

} 


// Check a message against the banned words list
function checkSpam(msg) {
  
  var error = "";
  
  for (var i=0; i < spamwords.length; i++) {
  
  var pattern = new RegExp("\\b("+spamwords.join("|")+"){1,}\\b",'gi');       
  
  if (pattern.test(msg))
  { 
  error = "Your message contains a banned word.";
  }
  } 

  return error;

}  
 
// Validate a message
function checkMessage(message) {
  
  var error="";
  
  if (message=="" || message=="message")
  {
  error = "Please enter a message.\n";
  }
  
  if (message.length > 400)
  {
  error = "The message is longer than 400 characters.\n";
  }
  
  return error;

}


/*------ AJAX part -----------------------------------------------------------*/

/* *********************************************
   *  pulp'arts  ******  webdesign development *
   *  www.pulp-arts.com - studio@pulp-arts.com *
   *  ---------------------------------------- *
   ********************************************* */
// retourne un objet xmlHttpRequest.
// méthode compatible entre tous les navigateurs (IE/Firefox/Opera)
function getXMLHTTP(){
  var xhr=null;
  if(window.XMLHttpRequest) // Firefox et autres
  xhr = new XMLHttpRequest();
  else if(window.ActiveXObject){ // Internet Explorer
    try {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e1) {
        xhr = null;
      }
    }
  }
  else { // XMLHttpRequest non supporté par le navigateur
    //alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	alert ('Your browser does not accept XMLHTTPRequest objects...');
  }
  return xhr;
}


// *******
var GetChat_xmlHttp = null; //l'objet xmlHttpRequest utilisé pour contacter le serveur
// *******

function getChat(){
var _adresseRecherche = "chatfiles/getchat.php"; //l'adresse à interroger 
  
  if(GetChat_xmlHttp&&GetChat_xmlHttp.readyState!=0){
    GetChat_xmlHttp.abort()
  }
  GetChat_xmlHttp=getXMLHTTP();
  
  if(GetChat_xmlHttp){
    //appel à l'url distante
    GetChat_xmlHttp.open("POST",_adresseRecherche,true);
    GetChat_xmlHttp.onreadystatechange=function() {
      if(GetChat_xmlHttp.readyState==4&&GetChat_xmlHttp.responseText) {

		document.getElementById( 'content' ).innerHTML = GetChat_xmlHttp.responseText ;
		scroller.init();
      }
    };
	// envoi de la requête
    GetChat_xmlHttp.send(null);
	
	// refresh
	setTimeout("getChat()",2000);
  }
}



/*
* This Ajax part of the shoutbox script is based on AJAX-Based Chat System
* by Alejandro Gervasio
* URL: http://images.devshed.com/da/stories/Building_AJAX_Chat/chat_example.zip
*/

// Create the XMLHttpRequestObject
function getXMLHttpRequestObject() {
  var xmlobj;	
  // Check for existing requests
  if (xmlobj!=null&&xmlobj.readyState!=0&&xmlobj.readyState!=4) {
  xmlobj.abort();
  }
  try {
  // Instantiate object for Mozilla, Nestcape, etc.
  xmlobj=new XMLHttpRequest();
  }
  catch(e) {
  try {
  // Instantiate object for Internet Explorer
  xmlobj=new ActiveXObject('Microsoft.XMLHTTP');
  }
  catch(e) {
  // Ajax is not supported by the browser
  xmlobj=null;
  return false;
  }
  }
  return xmlobj;
}

// Check status of sender object
function senderStatusChecker() {
  	// Check if request is completed
	if(senderXMLHttpObj.readyState==4) {
		
		if(senderXMLHttpObj.status==200) { // If status == 200 display chat data
  		//displayChatData(senderXMLHttpObj);
  		}
  		else {
  		var post=document.getElementById('content');
  		var error_message = document.createTextNode('Failed to get response :'+ senderXMLHttpObj.statusText);
  		post.appendChild(error_message);
  		}
		
  	}
}

// instantiate sender XMLHttpRequest object
var senderXMLHttpObj = getXMLHttpRequestObject();


// Send a message
function sendMessage() {
  
  var name = document.getElementById('name').value;
  var message = document.getElementById('message').value;
    
  if (!checkInput(message))
  {
  return;
  }
  
  senderXMLHttpObj.open('POST','chatfiles/sendchat.php',true);
  senderXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  senderXMLHttpObj.send('name='+encodeURIComponent(name)+'&message='+encodeURIComponent(message));
  
  senderXMLHttpObj.onreadystatechange = senderStatusChecker;
  
  document.getElementById('message').value = '';
  document.getElementById('message').focus();
  
}
		
		
// Initialize chat 
function startChat() {
  
  var cform = document.getElementById('cform');
  var name = document.getElementById('name');
  var msg = document.getElementById('message');
  var submit = document.getElementById('submit');
  
  cform.onkeydown = checkKeycode;
  msg.onfocus = function () {set_focus_m(this);}
  submit.onclick = sendMessage;
  
  msg.value = 'message';
  
  getChat();
  
}


function startLogin() {

  var name = document.getElementById('name');
  var pass = document.getElementById('pass');
    
  name.onfocus = function () {set_focus_n(this);}
  pass.onfocus = function () {set_focus_p(this);}
  
  name.value = 'name';
  pass.value = 'pass';
  
  getChat();
  
}


window.onload = startChat;





