
function openmessenger(op_id,v_id,session_id,mess_win_for)
{
        var url = '/chat/messenger_window.html' + '?op_id=' + op_id + '&v_id=' + v_id + '&session_id=' + session_id  + '&mess_win_for='+ mess_win_for  ;
        var width = 550;
        var height = 350;
        var messengerWindow = window.open(url, "_blank", "menubar=0,location=0,scrollbars=auto,resizable=1,status=0,width=" + width + ",height=" + height);
}


function open_waiting_win()
{
				var layer = document.getElementById('wait_win') ;
				layer.style.visibility = 'visible';
				layer.style.top = '300px';
				layer.style.left = '300px';


}

function closewin (div_id)
{
        var layer = document.getElementById(div_id) ;
        layer.style.visibility = 'hidden';
}


function init_session(op_id,visitor_id,transferer_id)
{
				if(transferer_id == null) {
								transferer_id = 0;
				}
				var XMLHttpRequestObject = false;
				var url = "/chat/init_session.html"  ;
				var postparams =  'op_id=' + op_id + '&v_id=' + visitor_id + '&t_id=' + transferer_id ;
				if (window.XMLHttpRequest){
								XMLHttpRequestObject = new XMLHttpRequest();
				}	else if (window.ActiveXObject){
								XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
				}

				if (XMLHttpRequestObject){

								XMLHttpRequestObject.open("POST", url);
								XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
								XMLHttpRequestObject.setRequestHeader("Content-length", postparams.length);
								XMLHttpRequestObject.setRequestHeader("Connection", "close");

								XMLHttpRequestObject.onreadystatechange = function()
								{
												if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
												{
																var res = eval(XMLHttpRequestObject.responseText);
																if(! res) 
																				return false;
																var session_id =  res[0].session_id;	
																if(!transferer_id) {
																				openmessenger(op_id,visitor_id,session_id,'O');
																}

												} 

								}
				}
				XMLHttpRequestObject.send(postparams);
}
 



var chatting = false;
function chk_invit_acpt(chat_vid)
{
				if(chatting)
				{
								return false;
				}
				var XMLHttpRequestObject = false;
				var url = '/chat/get_events.html';
				var postparams = 'visitor_id_args=' + chat_vid ;

				if (window.XMLHttpRequest){
								XMLHttpRequestObject = new XMLHttpRequest();
				}	else if (window.ActiveXObject){
								XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
				}

				if (XMLHttpRequestObject){

								XMLHttpRequestObject.open("POST", url);
								XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                XMLHttpRequestObject.setRequestHeader("Content-length", postparams.length);
                XMLHttpRequestObject.setRequestHeader("Connection", "close");
								XMLHttpRequestObject.onreadystatechange = function()
								{
												if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
												{
																var sess_data = eval (XMLHttpRequestObject.responseText); 	
																var n_sess = sess_data.length;
																if(! n_sess)
																				return false;
																for(var i=0;i<n_sess;i++ ) {
																				var session = sess_data[i];	
																				var v_id = session.visitor_id;	
																				var op_id = session.op_id;	
																				var sess_id = session.session_id;	

																				var url = '/chat/messenger_window.html' + '?op_id=' + op_id + '&v_id=' + v_id + '&session_id=' + sess_id  + '&mess_win_for=V' ;
																				window.location.replace(url);	
																				chatting = true;
																				return false;
																}
												}
								}
				}
				XMLHttpRequestObject.send(postparams);
}

function insert_message(v_id,op_id,sender,session_id,msg)
{

				if(!msg.length)
				{
								alert('Please enter your message..');
								return false;
				}
				var XMLHttpRequestObject = false;
				var post_url = "/chat/ins_msg_comp.html" ;

				var postparms = 'msg=' + encodeURIComponent(msg) + '&visitor_id=' + v_id + '&op_id=' + op_id + '&session_id=' + session_id  +'&sender=' + encodeURIComponent(sender);

				if (window.XMLHttpRequest){
								XMLHttpRequestObject = new XMLHttpRequest();
				}	else if (window.ActiveXObject){
								XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
				}

				if (XMLHttpRequestObject){

								XMLHttpRequestObject.open("POST", post_url);
								XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      					XMLHttpRequestObject.setRequestHeader("Content-length", postparms.length);
      					XMLHttpRequestObject.setRequestHeader("Connection", "close");
								XMLHttpRequestObject.onreadystatechange = function()
								{
												if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
												{
																document.msg_post.msg.value = '';

												}
								}
						XMLHttpRequestObject.send(postparms);
				}
				document.getElementById('txtBox').focus(true);
}



function start_chat(current_user_id) {

				var dd = document.getElementById("v_list") ;
				if(dd.selectedIndex < 0) {
								alert ("Please select a visitor for chat. ");
								return false;
				}
				var v_id= dd.options[dd.selectedIndex].value;
				var option_name = dd.options[dd.selectedIndex].text; 			
				var match = option_name.match(/.*?\((.*)\)/) ;
				var status = option_name.match(/\w+\s+\[\s+(\w+)\s+\].*/);
				var chat_invt_user_id ;
				if (match) {
								chat_invt_user_id = match[1];
				}
				if (chat_invt_user_id && (chat_invt_user_id != current_user_id)) {

								alert ("Sorry! this visitor is invited by some other operator.") ;
								return false;
				}
				init_restore_session(current_user_id,v_id,status[1]);
}



function init_restore_session (o_id,vid,status) 
{
				var XMLHttpRequestObject = false;
				var url = "/chat/get_events.html";
				var postparams;
				if(status == 'CHAT_TRANS') {
								postparams = 'op_console_vid=' + vid + '&t_status=' + status + '&t_id=' + o_id;
				}
				else {
								postparams = 'op_console_vid=' + vid;
				}
				if (window.XMLHttpRequest){
								XMLHttpRequestObject = new XMLHttpRequest();
				}	else if (window.ActiveXObject){
								XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
				}
				if (XMLHttpRequestObject){

								XMLHttpRequestObject.open("POST", url);
								XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
								XMLHttpRequestObject.setRequestHeader("Content-length", postparams.length);
								XMLHttpRequestObject.setRequestHeader("Connection", "close");

								XMLHttpRequestObject.onreadystatechange = function()
								{
												if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
												{

																var session = eval(XMLHttpRequestObject.responseText);

																if ( session && session.length ) {
																				var s = session[0];
																				var sess_id = s.session_id; 
																				var v_id = s.visitor_id; 
																				var op_id = s.op_id;
																				var current_user_id = o_id;
																				if (op_id != current_user_id) {

																								alert ("Sorry! this chat session belongs to some other operator.") ;
																								return false;
																				}
																				openmessenger(op_id,v_id,sess_id,'O');	

																}else {  
																			
																				init_session(o_id,vid);

																}

												}


								}
				}
				XMLHttpRequestObject.send(postparams);
}
function transfer_chat(current_user_id) {
				var dd = document.getElementById("v_list") ;
				if(dd.selectedIndex < 0) {
								alert ("Please select a visitor for transfering. ");
								return false;
				}
				var v_id= dd.options[dd.selectedIndex].value;
				var option_name = dd.options[dd.selectedIndex].text;
				var new_operator_id = document.getElementById("o_list").value ;

				//Below checking is done for visitor whether he is invited by an operator. if he is invited by an operator then we can not transfer him to another operator.

				var match = option_name.match(/.*?\((.*)\)/) ; //here if visitor is invited by an operator then match variable will be initialised by that operator_id.
				if(!match) {
								init_session(new_operator_id,v_id,current_user_id);
				}
}

function fill_dd(visitor_json_list) {
				var visitor_list_len = visitor_json_list.length;
				document.getElementById('v_list').options.length = 0;
				for(var i=0 ; i<visitor_list_len ; i++) {
								var v_country = visitor_json_list[i].country;
								var v_ip = visitor_json_list[i].ip_add;
								var v_username = visitor_json_list[i].username;
								var v_invited_by = visitor_json_list[i].invited_by;
								var v_age= visitor_json_list[i].age;
								var v_status = visitor_json_list[i].v_status;
								var v_name = visitor_json_list[i].name;
								var v_id = visitor_json_list[i].visitor_id;
								var sender = visitor_json_list[i].sender;
								var option_name = v_name + ' ' + ' [ ' + v_status +' ] ';
								if (v_invited_by) {
												option_name += 'invited by [' + v_username + ' (' + v_invited_by + ')]' ;
								}
								option_name += ' [ ' + v_age + ' ] ' ;
								option_name +=  ' ' + v_ip + ' ' + v_country ;
								var optn = document.createElement("OPTION");
								optn.text = option_name;
								optn.value = v_id;
								if(sender == 'V') {
												optn.style.color='#7D0541';
												optn.text += ' * ';	
								}
								if(v_status == 'WAIT') {
												optn.style.backgroundColor='#C25A7C';
												optn.style.color='#FFFFFF';
								}
								if(v_status =='CHAT_TRANS') {
												optn.style.backgroundColor='#C6C6C6';
								}
								var dd = document.getElementById('v_list');
								dd.options.add(optn);
				}
}

function drop_visitor() {
				var dd = document.getElementById("v_list") ;
				if(dd.selectedIndex < 0) {
								alert ("Please select a visitor for chat. ");
								return false;
				}
				var v_id= dd.options[dd.selectedIndex].value;
				var XMLHttpRequestObject = false;
				var url = "/chat/drop_visitor.html"  ;
				var postparams =  'v_id=' + v_id ;
				if (window.XMLHttpRequest){
								XMLHttpRequestObject = new XMLHttpRequest();
				} else if (window.ActiveXObject){
								XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
				}

				if (XMLHttpRequestObject){

								XMLHttpRequestObject.open("POST", url);
								XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
								XMLHttpRequestObject.setRequestHeader("Content-length", postparams.length);
								XMLHttpRequestObject.setRequestHeader("Connection", "close");

								XMLHttpRequestObject.onreadystatechange = function()
								{
												if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
												{
																var res = eval (XMLHttpRequestObject.responseText);
																var op_id =  res[0];
																var session_id =  res[1];
																insert_message(v_id,op_id,'S',session_id,'You have been dropped.');
												}

								}
				}
				XMLHttpRequestObject.send(postparams);
}




