var maxUsersForLastCreatedRoom = 100;
function createMUCRoom(jid,nick)
{
   group = jid;
   var aPresence = new JSJaCPresence();
   aPresence.setTo(group+'/'+nick);
   aPresence.setFrom(nick+'@'+config_XMPPServer);
   var x = aPresence.getDoc().createElement('x');
   x.setAttribute('xmlns','http://jabber.org/protocol/muc');
   //alert('create : '+aPresence.getDoc().xml);
   con.send(aPresence,getMUCRoomResponse);
   
}


function getMUCRoomResponse(aPresence)
{
 var roomname = cutResource(aPresence.getFrom());
 
// alert('getMUCRoomResponce : '+aPresence.getDoc().xml);
  var x;
  for (var i=0; i<aPresence.getNode().getElementsByTagName('x').length; i++)
    if (aPresence.getNode().getElementsByTagName('x').item(i).getAttribute('xmlns') == 'http://jabber.org/protocol/muc#user') {
      x = aPresence.getNode().getElementsByTagName('x').item(i);
      break;
    }
  
    if (x.getElementsByTagName('status').item(0))
    {
    var code = x.getElementsByTagName('status').item(0).getAttribute('code');
//    alert(code);
    switch (code) {
      case '201': // room created
	 /* popup dialog to ask for whether to accept default
	 * configuration or make a custom room 
	 */

	  var iq = new JSJaCIQ();
	  iq.setType('set');
	  iq.setTo(roomname);
	  var query = iq.setQuery('http://jabber.org/protocol/muc#owner');
	  var doc = iq.getDoc();
	  var x = query.appendChild(doc.createElement('x'));
	  x.setAttribute('xmlns','jabber:x:data');
	  x.setAttribute('type','submit');

	  var f = x.appendChild(doc.createElement('field'));
	  f.setAttribute('var','muc#roomconfig_persistentroom');
	  var v = f.appendChild(doc.createElement('value'));
	  v.textContent = '1';

	  var f = x.appendChild(doc.createElement('field'));
	  f.setAttribute('var','muc#roomconfig_membersonly');
	  var v = f.appendChild(doc.createElement('value'));
	  v.textContent = '0';
	  
	  var f = x.appendChild(doc.createElement('field'));
	  f.setAttribute('var','muc#roomconfig_maxusers');
	  var v = f.appendChild(doc.createElement('value'));
	  v.textContent = maxUsersForLastCreatedRoom;
	  
	  con.send(iq);
 

     }
    }
}


function lockMUCRoom(roomname)
{
	  var iq = new JSJaCIQ();
	  iq.setType('set');
	  iq.setTo(roomname);
	  var query = iq.setQuery('http://jabber.org/protocol/muc#owner');
	  var doc = iq.getDoc();
	  var x = query.appendChild(doc.createElement('x'));
	  x.setAttribute('xmlns','jabber:x:data');
	  x.setAttribute('type','submit');

	  var f = x.appendChild(doc.createElement('field'));
	  f.setAttribute('var','muc#roomconfig_membersonly');
	  objNewNode = doc.createElement("value");
	  objNewText = doc.createTextNode("1")
	  objNewNode.appendChild(objNewText)
	  f.appendChild(objNewNode);
	  con.send(iq);
}

function unlockMUCRoom(roomname)
{
	  var iq = new JSJaCIQ();
	  iq.setType('set');
	  iq.setTo(roomname);
	  var query = iq.setQuery('http://jabber.org/protocol/muc#owner');
	  var doc = iq.getDoc();
	  var x = query.appendChild(doc.createElement('x'));
	  x.setAttribute('xmlns','jabber:x:data');
	  x.setAttribute('type','submit');
	  var f = x.appendChild(doc.createElement('field'));
	  f.setAttribute('var','muc#roomconfig_membersonly');
	  objNewNode = doc.createElement("value");
	  objNewText = doc.createTextNode("0")
	  objNewNode.appendChild(objNewText)
	  f.appendChild(objNewNode);
	  con.send(iq);
}

function setAffiliationAdmin(roomname,nick)
{
/*
<iq id="jcl_36" to="vayuroom1@conference.jabber.org" type="set">
<query xmlns="http://jabber.org/protocol/muc#owner">
<item affiliation="admin" jid="ntest8484@jabber.org" nick="ntest8484"/>
</query>
</iq>
*/
     var iq = new JSJaCIQ();
     iq.setType('set');
     iq.setTo(roomname);
     var query = iq.setQuery('http://jabber.org/protocol/muc#owner');
     var doc = iq.getDoc();
     var x = query.appendChild(doc.createElement('item'));
     x.setAttribute('affiliation','admin');
     x.setAttribute('jid',nick+'@'+config_XMPPServer);
     x.setAttribute('nick',nick);
     //alert(iq.getDoc().xml);
     con.send(iq);

}


function processAddNewShowRequest()
{
    var frmShow = document.getElementById("frmNewShow");
    var showName = frmShow.txtShowName.value;
    var showDesc = frmShow.txtShowDesc.value;
    var showURL = frmShow.txtShowURL.value;
    
    if ( trim(showName) == '' )
    {
        alert("Please enter show name.");
        return;
    }
    
    if ( trim(showDesc) == '')
    {
        alert("Please enter show description.");
        return;
    }
    var myJid = config_userJID + "@" + config_XMPPServer;
    var showNewUrl = base_path+"nscadmin/addShow.php?nwid="+config_TVNetworkId+"&ujid="+myJid+"&name="+showName+"&desc="+showDesc+"&url="+showURL;
    
    xmlhttp = getHTTPRequestObject();
    xmlhttp.open("GET",showNewUrl,false);
    xmlhttp.send(null);    
    if ( trim(xmlhttp.responseText).search(/^\d{1,6}$/) >= 0)
    {
        alert("success");
        var showsCombo = document.getElementById("frmNewRoom").comShow;
        showsCombo.options[showsCombo.length] = new Option(showName,xmlhttp.responseText);
    }
    else
    {
        alert(xmlhttp.responseText);
    }
}


function processAddNewRoomRequest()
{   
    var frmRoom = document.getElementById("frmNewRoom");
    var d = new Date();
    var newRoomName = "nscroom"+d.getTime() + "@" + config_conferenceServer;    
    var celebrityId = frmRoom.comCelebrityId.value + "";    
    var celebrityjId = celebrityId.substring(celebrityId.indexOf(",")+1, celebrityId.indexOf("@"));
    celebrityId = celebrityId.substring(0, celebrityId.indexOf(","));
    var myJid = config_userJID + "@" + config_XMPPServer;
    var showId = frmRoom.comShow.value + "";
    var roomDesc = frmRoom.txtRoomName.value + "";
    var liveVideo = frmRoom.txtLiveVideoURL.value + "";
    var archiveVideo = frmRoom.txtArchiveVideoURL.value + "";
    var sponsorUrl = frmRoom.txtSponsorURL.value + "";
    var maxUsers = frmRoom.txtMaxUsers.value + "";
    maxUsersForLastCreatedRoom = maxUsers;
    if ( trim(roomDesc) == '' )
    {
        alert("Please enter room name.");
        return;
    }
    
    var roomType="";    
    if ( frmRoom.rdoRoomType[0].checked )
    {   
        roomType = "cele";   
    }
    else if ( frmRoom.rdoRoomType[1].checked )
    {   
        roomType = "sche";
    }
    else
    {
        roomType = "open";
    }
    
    if ( frmRoom.txtDateYYYY.value.search(/^\d{4}$/) == -1 || frmRoom.txtDateMMM.value.search(/^\d{2}$/) == -1 || frmRoom.txtDateDD.value.search(/^\d{2}$/) == -1 )
    {
        alert("Please enter date in MM-DD-YYYY format.");
        return;
    }
    
    
    var time = frmRoom.txtTime.value;
    if ( time.search(/^[0-1][0-9]:[0-5][0-9]$/) == -1  || frmRoom.txtTimeAMPM.value.search(/^[A,P]M$/) == -1)
    {
        alert("Please enter time in HH:MM AM/PM format.");
        return;
    }
    
    d = new Date(frmRoom.txtDateYYYY.value, frmRoom.txtDateMMM.value, frmRoom.txtDateDD.value, time.substring(0,2), time.substring(3,5));
    d.setMonth(d.getMonth() -1 );
    if ( trim(frmRoom.txtTimeAMPM.value).toLowerCase() == 'pm' )
    {
        d.setHours(d.getHours() + 12 );        
    }
    
    var startdate = d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":00";
    d.setHours(d.getHours() + parseInt(frmRoom.txtDuration.value) );  
    var enddate = d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":00";
    
    
    createMUCRoom(newRoomName, config_nick);
    if ( roomType == 'sche' ) 
    {
        setTimeout("lockMUCRoom('"+newRoomName+"')",3000);
    }
    
    if ( roomType == 'cele' || roomType == 'sche')
    {
        setTimeout("setAffiliationAdmin('"+newRoomName+"','"+celebrityjId+"')", 3000);
    }
    
    var roomNewUrl = base_path+"nscadmin/addRoom.php?ujid="+myJid+"&showid="+showId+"&roomjid="+newRoomName+"&roomname="+roomDesc+"&sponsurl="+sponsorUrl+"&liveVdo="+liveVideo+"&archiveVdo="+archiveVideo+"&roomtype="+roomType+"&starttime="+startdate+"&endtime="+enddate+"&celebrityid="+celebrityId+"&maxUsers="+maxUsers;
    
    xslhttp = getHTTPRequestObject();
    xslhttp.open("GET",roomNewUrl,false);
    xslhttp.send(null);
    alert(xslhttp.responseText);	// Show the insert script respnse
    vayu_getContent('scchat', 1); //first panel should be loaded at begining.
    vayu_getContent('openchat', 2); //first panel should be loaded at begining.    
}

function lockRoom(roomName)
{
    lockMUCRoom(roomName + "@" + config_conferenceServer);
    updateRoomStatus(roomName, true);
    alert("Room locked.");
}


function unlockRoom(roomName)
{
    unlockMUCRoom(roomName + "@" + config_conferenceServer);
    updateRoomStatus(roomName, false);
    alert("Room unlocked.");
}

function banUserFromRoom(roomName, buddyName)
{
    var iq = new JSJaCIQ();
    iq.setType('set');
    iq.setTo(roomName);
    var query = iq.setQuery('http://jabber.org/protocol/muc#admin');
    var doc = iq.getDoc();
    var x = query.appendChild(doc.createElement('item'));
    x.setAttribute('nick',buddyName);
    x.setAttribute('affiliation','outcast');

    var f = x.appendChild(doc.createElement('reason'));    
    objNewText = doc.createTextNode("You have been banned from this room.");
    f.appendChild(objNewText);
    con.send(iq);
    alert(buddyName+" has been banned from this room.");
}


function kickUserFromRoom(roomName, buddyName)
{
    var iq = new JSJaCIQ();
    iq.setType('set');
    iq.setTo(roomName);
    var query = iq.setQuery('http://jabber.org/protocol/muc#admin');
    var doc = iq.getDoc();
    var x = query.appendChild(doc.createElement('item'));
    x.setAttribute('nick',buddyName);
    x.setAttribute('role','none');

    var f = x.appendChild(doc.createElement('reason'));
    objNewText = doc.createTextNode("You have been kicked from this room.");
    f.appendChild(objNewText);
    //con.send(iq);
    con.send(iq, getMUCKickResponse);
    
}

function getMUCKickResponse(iq)
{
    //alert(iq.getType());
//    alert(iq.getDoc().xml);
    
    if ( iq.getType() == 'error')
    {
        alert("Moderator/Celebrity can not be kicked from this room.");
    }
    else
    {
        alert(buddyName+" has been kicked from this room.");
    }
    
}

function sendAnnouncements(msg)
{
    
    if (msg == '') // don't send empty message
    return false;

	var aMessage = new JSJaCMessage();
	aMessage.setTo(config_XMPPServer+"/announce/online");    
	aMessage.setBody(msg);
    con.send(aMessage);    
    return false;  
}


function showSendAnnouncementWindow()
{
    var buddyName = "announcement";
    if ( !oneToOneWindows[buddyName] || oneToOneWindows[buddyName] == 'undefined')
    {
        oneToOneWindows[buddyName] = new YAHOO.widget.Panel("divAnnouncement"+buddyName, { xy:[350,400], width:"300px", visible:false, draggable:true, close:true } );	
        oneToOneWindows[buddyName].setHeader("Announcement");
		oneToOneWindows[buddyName].setBody(getAnnouncementContent("announcement"));
		oneToOneWindows[buddyName].render(document.body);		
    }
    oneToOneWindows[buddyName].show(); 
}
function sendAnnouncementMessageOnEnter(e, txtBox)
{
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    else return true;

    if (keycode == 13 && e.shiftKey == false)
    {
        sendAnnouncementIM(txtBox);
        return false;
    }
    else
        return true;
}

function sendAnnouncementIM( txtBoxId)
{
    var textBox = document.getElementById(txtBoxId);
    if ( textBox )
    {
        var msg = textBox.value;
        
        if ( msg == '' )
        {
            alert('Please write some message');
            return;
        }
        msg = escapeHTML(msg);
        sendAnnouncements(msg);
        textBox.value = "";         
    }
}