//Copyright (c) 2006-2007 Vayusphere, Inc. All rights reserved.
//
// This file contains proprietary information.  It is the
// unpublished property of Vayusphere. Use, disclosure,
// or reproduction is prohibited except as permitted by express
// written license agreement with Vayusphere.

// JScript File

var archiveXsl = '';


var oneToOneWindows = [[],[]];
var spchars = [
		[60,62,255,254,253,252,251,250,249,248,247,246,245,244,243,242,241,240,239,238,237,236,235,234,233,232,231,230,229,228,227,226,225,224,223,222,221,220,219,218,217,216,215,214,213,212,211,210,209,208,207,206,205,204,203,202,201,200,199,198,197,196,195,194,193,192,191,190,189,188,187,186,185,184,183,182,181,180,179,178,177,176,175,174,172,171,169,168,167,166,165,164,163,162,161,376,339,353,8482,732,8211,8212,8226,8221,8220,8217,8216,338,352,8240,710,8224,8225,8230,8222,402,8218,8364,8249,8250,170,151],
		["&lt;","&gt;","&yuml;","&thorn;","&yacute;","&uuml;","&ucirc;","&uacute;","&ugrave;","&oslash;","&divide;","&ouml;","&otilde;","&ocirc;","&oacute;","&ograve;","&ntilde;","&eth;","&iuml;","&icirc;","&iacute;","&igrave;","&euml;","&ecirc;","&eacute;","&egrave;","&ccedil;","&aelig;","&aring;","&auml;","&atilde;","&acirc;","&aacute;","&agrave;","&szlig;","&THORN;","&Yacute;","&Uuml;","&Ucirc;","&Uacute;","&Ugrave;","&Oslash;","&times;","&Ouml;","&Otilde;","&Ocirc;","&Oacute;","&Ograve;","&Ntilde;","&ETH;","&Iuml;","&Icirc;","&Iacute;","&Igrave;","&Euml;","&Ecirc;","&Eacute;","&Egrave;","&Ccedil;","&AElig;","&Aring;","&Auml;","&Atilde;"," ","&Aacute;","&Agrave;","&iquest;","&frac34;","&frac12;","&frac14;","&raquo;","&ordm;","&sup1;","&cedil;","&middot;","&para;","&micro;","&acute;","&sup3;","&sup2;","&plusmn;","&deg;","&macr;","&reg;","&not;","&laquo;","&copy;","&uml;","&sect;","&brvbar;","&yen;","&curren;","&pound;","&cent;","&iexcl;","&Yuml;","&oelig;","&scaron;","&trade;","&tilde;","-","-","&bull;","\"","\"","'","'","&OElig;","&Scaron;","&permil;","&circ;","&Dagger;","&dagger;","...","&bdquo;","&fnof;","&sbquo;","&euro;","&lsaquo;","&rsaquo;","&ordf;","-"]		
	];
	
//var alert = function(msg){Ext.MessageBox.alert('Message', msg, null);};
var l1ContextMenu;
var l2ContectMenu;
var MSIE = navigator.userAgent.indexOf('MSIE')?true:false;
var navigatorVersion = navigator.appVersion.replace(/.*?MSIE (\d\.\d).*/g,'$1')/1;	
var activeContextMenuItem = false;
var smileyMenu;	
var divRoomRoster;
var iframeSelectMask;
var newOpenChatRoomDiv;
var iShowIdForNewOpenRoom;

var alert = function (msg){
    if ( !YAHOO.myalert )
    {
        YAHOO.myalert =  new YAHOO.widget.SimpleDialog("simpledialog1", 
														 { width: "300px",
														   fixedcenter: true,
														   visible: false,
														   draggable: false,
														   modal:true,
														   close: true,
														   text: "Do you want to continue?",
														   icon: YAHOO.ICON_INFO,
														   constraintoviewport: true,
														   buttons: [ { text:"OK", handler:function(){this.hide();}, isDefault:true } ]
														 } );
         YAHOO.myalert.setHeader("Message");	 
		 YAHOO.myalert.render(document.body);        
    }
    
    YAHOO.myalert.setBody(msg);
    YAHOO.myalert.show();
};
function sendMessageOnEnter(myfield,e, roomName)
{
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    else return true;

    if (keycode == 13 && e.shiftKey == false)
    {
        sendChatMessage(roomName);
        return false;
    }
    else
        return true;
}

function sendOneToOneMessageOnEnter(e, buddyName, 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)
    {
        sendOneToOneIM(buddyName, txtBox);
        return false;
    }
    else
        return true;
}

function BrowserCheck() {
	    var b = navigator.appName
	    if (b=="Netscape") this.b = "ns"
	    else if (b=="Microsoft Internet Explorer") this.b = "ie"
	    else if (b=="Opera") this.b = "op"
	    else this.b = b
	    this.v = parseInt(navigator.appVersion)
	    this.ns = (this.b=="ns" && this.v>=4)
	    this.ns4 = (this.b=="ns" && this.v==4)
	    this.ns5 = (this.b=="ns" && this.v==5)
	    this.ie = (this.b=="ie" && this.v>=4)
	    this.op = (this.b=="op" && this.v>=7)
	    this.ie4 = (navigator.userAgent.indexOf('MSIE 4')>0)
	    this.ie5 = (navigator.userAgent.indexOf('MSIE 5')>0)
	    this.ie55 = (navigator.userAgent.indexOf('MSIE 5.5')>0)
	    if (this.ie55) {
		    this.v = 5.5;
		    this.ie5 = false;
	    }
	    this.mac = (navigator.userAgent.indexOf('Mac')>0);
	    if (this.ie5) this.v = 5
	    this.min = (this.ns||this.ie) 
}
	
function isThisBrowerSupported()
{
    is = new BrowserCheck();
	if (is.b == 'op' || is.b == 'Konqueror' || navigator.userAgent.indexOf('Safari') != -1 ||
        (is.b == 'ns' && is.v < '5') || (is.ie && is.mac) || is.ie4 ) 
    {
        return false;
    }
    else
    {
        return true;
    }
}
function submitLoginOnEnter(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
   checkAndSubmitLogin();
   return false;
   }
else
   return true;
}


function setLoginInfo(userid, passwd, roomToJoin, roomDescription, roomType, action, vdoUrl, sponsorUrl)
{
    config_userJID = userid;
    config_passwd = trim(doUnsecure(passwd));
    groupNameToJoin = roomToJoin;
    groupDescription = roomDescription;
    groupVideoUrl = vdoUrl;
    groupSponsorUrl = sponsorUrl;
    
    if ( action == 'archive' )
    {
        groupTypeToJoin = 'archive';
    }
    else
    {
        groupTypeToJoin = roomType;
    }
    config_nick = config_userJID;
}

function checkLoginStatus()
{
    return isXMPPLoggedIn;
}


function showChatArchive(roomName, roomDescription, vdoUrl, sponsorUrl)
{
    if ( checkLoginStatus() == false)
    {
        document.getElementById("groupnametojoin").value = roomName;        
        document.getElementById("groupdescription").value = roomDescription;
        document.getElementById("action").value = 'archive';
        document.getElementById("videoUrl").value = vdoUrl; 
        document.getElementById("sponsorUrl").value = sponsorUrl;       
        popUpLoginWindow();
        return;        
    }
    addNewChatRoomTab(roomName, roomDescription, 'none', 'archive', vdoUrl, sponsorUrl);
        
}
function joinChatRoom(roomName, roomDescription, roomType, videoUrl, sponsorUrl)
{   
    groupNameToJoin = roomName;
    groupDescription = roomDescription;
    groupTypeToJoin = roomType;
    groupVideoUrl = videoUrl;
    groupSponsorUrl = sponsorUrl;
    
    if ( checkLoginStatus() == false)
    {
        document.getElementById("groupnametojoin").value = roomName;
        document.getElementById("groupdescription").value = roomDescription;        
        document.getElementById("grouptype").value = roomType;
        document.getElementById("action").value = 'join';
        document.getElementById("videoUrl").value = videoUrl;
        document.getElementById("sponsorUrl").value = sponsorUrl;
        popUpLoginWindow();
        return;        
    }
    
    
    
    // Loging to XMPP server.
    SendAffiliationRequest(roomName+'@'+config_conferenceServer, config_nick, '');    
}
function joinChatRoomChooseTarget(roomName, roomDescription, roomType, videoUrl, targetPage)
{   
    groupNameToJoin = roomName;
    groupDescription = roomDescription;
    groupTypeToJoin = roomType;
    groupVideoUrl = videoUrl;
    frmLogin = targetPage;
    
    if ( checkLoginStatus() == false)
    {
        document.getElementById("groupnametojoin").value = roomName;
        document.getElementById("groupdescription").value = roomDescription;        
        document.getElementById("grouptype").value = roomType;
        document.getElementById("action").value = 'join';
        document.getElementById("videoUrl").value = videoUrl;
        document.getElementById("frmLogin").action = targetPage;
        popUpLoginWindow();
        return;        
    }
    
    
    
    // Loging to XMPP server.
    SendAffiliationRequest(roomName+'@'+config_conferenceServer, config_nick, '');    
}


function checkAndSubmitLogin()
{

    var prohibitedChars = ['"',' ','&','\'','/',':','<','>','@']; // invalid chars
    if ( trim(document.getElementById("username1").value) == "" )
    {
        alert("Please enter username");        
        return;
    }
    
    var nodeprep = document.getElementById("username1").value;
    for (var i=0; i<prohibitedChars.length; i++) 
    {
        if (nodeprep.indexOf(prohibitedChars[i]) != -1) {        
            alert("Invalid Username. '"+prohibitedChars[i]+"' not allowed in Username.");
            return;
        }
    }
    
    if ( trim(document.getElementById("password1").value) == "" )
    {
        alert("Please enter password");
        return;
    }
    var securepwd = doSecure(document.getElementById("password1").value);
    document.getElementById("password1").value = securepwd;
    document.getElementById("frmLogin").submit();
}


// This function will process xmpp login
function processXMPPLogin()
{      
    //alert("logintoserver");
    if ( !isThisBrowerSupported() )
    {
        window.location = errorPage + msgUnSupportedBrowser + 
            "&uname=" + config_userJID + 
            "&groupnametojoin=" + groupNameToJoin + 
            "&groupdescription=" + groupDescription + 
            "&grouptype=" + groupTypeToJoin + 
            "&videoUrl=" + groupVideoUrl;
            return;
    }
    
     
    loginCheckX(config_userJID, config_passwd, config_XMPPServer, config_XMPPResource,
                                 config_XMPPPort, config_XMPPHost);
    
    //joinChatRoom(roomNameToJoin);
}

// This function will open a DHTML popup for do the login.
function popUpLoginWindow()
{
    YAHOO.loginPanel.show();
}

//This function will close yahoo login popup
function closeYahooLoginWindow()
{
    YAHOO.loginPanel.hide();
}


function initchat()
{


}

// This function will initialize the yahoo widgets components.
function initYahooLogin()
{
    var x = 400;//document.width / 2 - 100;
    var y = 400;//document.height / 2 - 200;    
                                                                  
    YAHOO.loginPanel = new YAHOO.widget.Overlay("loginPanel", { xy:[x,y],
                visible:false,
                width:"300px",
                effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25} } );
    YAHOO.loginPanel.render(); 
    
    //YAHOO.manager = new YAHOO.widget.OverlayManager();
	//YAHOO.manager.register([YAHOO.loginPanel]);
	if ( showLoginDiv )
	{
	    popUpLoginWindow();
	}

}

function initYahooLoading()
{

YAHOO.wait1 =  
	        new YAHOO.widget.Panel("wait1",   
	                                        { width:"240px",  
	                                          fixedcenter:true,  
	                                          close:false,  
	                                          draggable:false,  
	                                          modal:true, 
	                                          visible:false, 
	                                          effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:0.5}  
	                                        }  
	                                    ); 
	 
	YAHOO.wait1.setHeader("Connecting..."); 
	YAHOO.wait1.setBody('<img src="images/interstitial_connecting.gif" />'); 
	YAHOO.wait1.render(document.body); 
	YAHOO.wait1.show();
	
}

// Add a new tab for chat room
function addNewChatRoomTab(roomName, roomDescription, role, roomType, vdoUrl, sponsorUrl)
{

    if ( document.getElementById("arc"+roomName) || 
            document.getElementById("opn"+roomName) || 
            document.getElementById("adm"+roomName) ||
            document.getElementById("cel"+roomName) ||
            document.getElementById("usr"+roomName) )
    {
        alert("room already opened.");
        return;
    }
    var index = 0;
    var tab;
    var joinXMPPRoom = false;
    
    if ( roomType == 'archive' )
    {
        tab = tabs.addTab(
                 "arc"+roomName,
                 roomDescription,
                 getArchiveTabtContent(roomName),
                 true
            );    
            loadArchiveContents(roomName);
            joinXMPPRoom = false;
            //loadNBCMediaPlayer(vdoUrl, roomDescription);
            tab.on('activate', function(tab) {
            loadNBCMediaPlayer(vdoUrl, roomDescription);
            onSponsorUrl(sponsorUrl);
        });
    }
    else if ( roomType == 'open' )
    {
        if ( role == 'owner' )// Admin UI
        {
            tab = tabs.addTab(
                 "opn"+roomName,
                 roomDescription,
                 getOpenChatContent(roomName),
                 true
            );
            joinXMPPRoom = true;
        }
        else
        {
            tab = tabs.addTab(
                 "opn"+roomName,
                 roomDescription,
                 getOpenChatContent(roomName),
                 true
            );
            joinXMPPRoom = true;
         }
         //loadWindowsMediaPlayer(vdoUrl, roomDescription);
         tab.on('activate', function(tab) {
            //loadWindowsMediaPlayer(vdoUrl, roomDescription);
			loadShowImage();
			onSponsorUrl(sponsorUrl);
        });
        buildMessageToolBar(roomName);
    }
    else
    {
        if ( role == 'owner' )// Admin UI
        {
            tab = tabs.addTab(
                 "adm"+roomName,
                 roomDescription,
                 getAdminTabContent(roomName),
                 true
            );
            new Spry.Widget.CollapsiblePanel("panel"+roomName+"answer");
            new Spry.Widget.CollapsiblePanel("panel"+roomName+"question");
            new Spry.Widget.CollapsiblePanel("panel"+roomName+"chat"); 
            joinXMPPRoom = true;
            QueryRoomStatus(roomName);
            buildMessageToolBar(roomName);
        }
        else if ( role == 'admin' )// Celebrity UI
        {
            tab = tabs.addTab(
                 "cel"+roomName,
                 roomDescription,
                 getCelebrityTabContent(roomName),
                 true
            );
            
            new Spry.Widget.CollapsiblePanel("panel"+roomName+"answer");
            new Spry.Widget.CollapsiblePanel("panel"+roomName+"question");
            new Spry.Widget.CollapsiblePanel("panel"+roomName+"chat"); 
            joinXMPPRoom = true;
            buildMessageToolBar(roomName);
        }
        else// User UI
        {   
            tab = tabs.addTab(
                 "usr"+roomName,
                 roomDescription,
                 getTabContent(roomName),
                 true
            );
            new Spry.Widget.CollapsiblePanel("panel"+roomName+"answer");
            new Spry.Widget.CollapsiblePanel("panel"+roomName+"question");
            new Spry.Widget.CollapsiblePanel("panel"+roomName+"chat");
            buildMessageToolBar(roomName);
            joinXMPPRoom = true;     
        }
        //
        tab.on('activate', function(tab) {
            loadWindowsMediaPlayer(vdoUrl, roomDescription);
            onSponsorUrl(sponsorUrl);
        });
    }
    //tab.on('activate', function(tab) {
      //      tabActivated(tab);            
        //});


    if ( joinXMPPRoom )
    {
        tab.on('beforeclose', function(tab, e) {
            tabClosed(tab);            
        });
        openGroupchat(roomName+'@'+config_conferenceServer,config_userJID,'');
    }
    tabs.activate(tab.id);
}



function processLogout()
{
    Logout();
    setTimeout(function(){window.location = "index.html";},2000)
}

function tabClosed(tab, e)
{
    CloseRoom(tab.id.substring(3, tab.id.length));
}

function rejectNewQuestion()
{
    var roomName = tabs.active.id.substring(3, tabs.active.id.length);    
    var myRoleInRoom = tabs.active.id.substring(0, 3);
    
    if ( myRoleInRoom == 'cel' || myRoleInRoom == 'adm')        // Perform celebrity/admin action
        {
        var list = document.getElementById('qus1'+roomName);
        var selectedIndex = -1;
        for (i=0;i<list.options.length;i++)
        {
            if ( list.options[i].selected )
            {
                selectedIndex = i;
                break;
            }
        }
        if ( selectedIndex >= 0)
        {
            PostDeletedQuestion(roomName, list.options[selectedIndex].text, list.options[selectedIndex].value);                
        } 
    }
}
function rejectApprovedQuestion()
{
    var roomName = tabs.active.id.substring(3, tabs.active.id.length);    
    var myRoleInRoom = tabs.active.id.substring(0, 3);
    
    if ( myRoleInRoom == 'cel' || myRoleInRoom == 'adm')        // Perform celebrity/admin action
        {
        var list = document.getElementById('qus2'+roomName);
        var selectedIndex = -1;
        for (i=0;i<list.options.length;i++)
        {
            if ( list.options[i].selected )
            {
                selectedIndex = i;
                break;
            }
        }
        if ( selectedIndex >= 0)
        {
            PostApprovedDeletedQuestion(roomName, list.options[selectedIndex].text, list.options[selectedIndex].value);                
        } 
    }
}


function sendChatMessage(roomName)
{
// Get active room
    var room = tabs.active.id.substring(3, tabs.active.id.length);
    var myRoleInRoom = tabs.active.id.substring(0, 3);
    var textBox = document.getElementById("txtMessageBox"+roomName);
    var msg = textBox.value;
    
    if ( msg == '' )
    {
        alert('Please write some message');
        return;
    }
    msg = escapeHTML(msg);
    document.getElementById("txtMessageBox"+roomName).value = "";
    
    
    if ( myRoleInRoom == 'cel' || myRoleInRoom == 'adm')        // Perform celebrity/admin action
    {
        if (document.getElementById('rdo' + roomName + 'Answer').value == 1) 
        {   
            var list = document.getElementById('qus2'+room);    
            var selectedIndex = -1;
            for (i=0;i<list.options.length;i++)
            {
                if ( list.options[i].selected )
                {
                    selectedIndex = i;
                    break;
                }
            }

                 
            if ( selectedIndex >= 0 )
            {
                var questionText = list.options[selectedIndex].text;
                PostQuestionBeforeAnswer(room, questionText.substring(questionText.indexOf(":") +2, questionText.length), list.options[selectedIndex].value);
                document.getElementById('rdo' + roomName + 'Answer').value = list.options[selectedIndex].value;
            }
            PostAnswer(room, msg, document.getElementById('rdo' + roomName + 'Answer').value);
		} 
	    else if (document.getElementById('rdo' + roomName + 'Approve').value == 1) 
	    {
            var list = document.getElementById('qus1'+room);    
            var selectedIndex = -1;
            for (i=0;i<list.options.length;i++)
            {
                if ( list.options[i].selected )
                {
                    selectedIndex = i;
                    break;
                }
            }
            if ( selectedIndex >= 0)
            {
                PostApprovedQuestion(room, msg, list.options[selectedIndex].value);
                //document.getElementById('rdo' + roomName + 'Message').checked = true;     
				shn_switch('rdo'+room+'Message',room); 
				shn_switchOff('rdo'+room+'Approve'); 
				shn_switchOff('rdo'+room+'Message'); 
				changeClass('submit'+room+'Message','submitChoice');           
            }
            
	    } 
	    else
        {   
            msg = formatToHtmlMessage(textBox, msg);
            PostMessage(room,msg);            
		} 
    }
    else if ( myRoleInRoom == 'opn' )// Post message to open chat room
    {
        msg = formatToHtmlMessage(textBox, msg);
        PostMessage(room,msg);	            
    }
    else    // Perform users actions
    {
        
        if (document.getElementById('rdo' + roomName + 'Question').value == 1) 
        {   
	        PostQuestion(room, msg);
			openThanksPop();
		} 
	    else
	    {   
	        msg = formatToHtmlMessage(textBox, msg);
            PostMessage(room,msg);
	    }
    }   
}

function formatToHtmlMessage(txtBox, msg)
{
    var style = "";
    if (txtBox.style.fontWeight)
        style += "font-weight:"+txtBox.style.fontWeight+";";
    if (txtBox.style.fontStyle)
        style += "font-style:"+txtBox.style.fontStyle+";";
    if (txtBox.style.textDecoration)
        style += "text-decoration:"+txtBox.style.textDecoration+";";
    if (txtBox.style.color)
        style += "color:"+txtBox.style.color+";";
    
    if ( style != '')
    {
        msg = "<span style='"+style+"'>"+msg+"</span>";
    }
    return msg;
}

function removeQuestionFromList(listid, questionid)
{
    var list = document.getElementById(listid);    
    var selectedIndex = -1;
    for (i=0;i<list.options.length;i++)
    {
        if ( list.options[i].value == questionid )
        {
            list.options[i] = null;
            break;
        }
    }
}

function promoteQuestionForApprive(list)
{
    var room = tabs.active.id.substring(3, tabs.active.id.length);
    var list = document.getElementById('qus1'+room);    
    var selectedIndex = -1;
    for (i=0;i<list.options.length;i++)
    {
        if ( list.options[i].selected )
        {
            selectedIndex = i;
            break;
           }
    }
     
    if ( selectedIndex >= 0 )
    {
        var questionText = list.options[selectedIndex].text;        
        document.getElementById('txtMessageBox'+room).value = questionText.substring(questionText.indexOf(":") + 2, questionText.length);
        //document.getElementById('rdo' + room + 'Approve').checked = true;
		shn_switch('rdo'+room+'Approve',room); 
		shn_switchOff('rdo'+room+'Answer'); 
		shn_switchOff('rdo'+room+'Message'); 
		changeClass('submit'+room+'Approve','submitChoice');
    }
}


function promoteQuestionForAnswer(list)
{
    var room = tabs.active.id.substring(3, tabs.active.id.length);
    //document.getElementById('rdo' + room + 'Answer').checked = true; 
		shn_switch('rdo'+room+'Answer',room); 
		shn_switchOff('rdo'+room+'Approve'); 
		shn_switchOff('rdo'+room+'Message'); 
		changeClass('submit'+room+'Answer','submitChoice');
		document.getElementById('txtMessageBox'+room).value = '';
}

function addNewChatToUi(room, sender, msg)
{   
    win = document.getElementById('div'+room+'chat');
 	win.innerHTML += '<BR />' + formatSmileys(formatChatMessage(msg, sender));
 	win.scrollTop = win.scrollTop + 200;    
}

function addNewQuestionToUi(room, sender, msgid, msg)
{
    if ( document.getElementById('cel'+room) || document.getElementById('adm'+room) )
    {
        
        queue = document.getElementById('qus1'+room);
        if ( queue )
        {
            queue.options[queue.length] = new Option(sender + ": " + msg,msgid);
 	        //win.innerHTML += '<BR />' + sender + ': ' + msg;
 	        //win.scrollTop = win.scrollTop + 200;        
 	    }
    }
    
}
function addNewDeletedQuestionToUi(room, sender, msgid, msg)
{
    removeQuestionFromList('qus1'+room, msgid);
}

function addApprovedDeletedQuestionToUi(room, sender, msgid, msg)
{
    if ( document.getElementById('cel'+room) || document.getElementById('adm'+room) )
    {   
        queue = document.getElementById('qus2'+room);
        if ( queue )
        {            
            removeQuestionFromList('qus2'+room, msgid);
 	    }
    }
    else
    {
        var msgSpan = document.getElementById(msgid);
        if ( msgSpan )
        {
            msgSpan.innerHTML = "";
        }
    }
}

function addNewApprovedQuestionToUi(room, sender, msgid, msg)
{
    if ( document.getElementById('cel'+room) || document.getElementById('adm'+room) )
    {
        
        queue = document.getElementById('qus2'+room);
        if ( queue )
        {
            queue.options[queue.length] = new Option(msgid.substring(0, msgid.indexOf("_")) + ": " + msg,msgid);
            removeQuestionFromList('qus1'+room, msgid);
 	    }
    }
    else if ( document.getElementById('usr'+room) )
    {
        win = document.getElementById('div'+room+'question');
 	    win.innerHTML += '<BR />' + formatSmileys(formatApprovedQuestion(msg, msgid));
 	    win.scrollTop = win.scrollTop + 200;           
    }
}

function addNewAnswersQuestionToUi(room, sender, msgid, msg)
{
    if ( document.getElementById('cel'+room) || document.getElementById('adm'+room) )
    {   
        queue = document.getElementById('qus2'+room);
        if ( queue )
        {            
            removeQuestionFromList('qus2'+room, msgid);
 	    }
    }
    
    if ( document.getElementById('cel'+room) || document.getElementById('adm'+room) || document.getElementById('usr'+room))
    {
        win = document.getElementById('div'+room+'answer');
 	    win.innerHTML += '<BR />' + formatSmileys(formatAnswersQuestion(msg, msgid));
 	    win.scrollTop = win.scrollTop + 200;           
 	}
    
}

function addNewAnswerToUi(room, sender, msgid, msg)
{
    win = document.getElementById('div'+room+'answer');
    if ( win )
    {
 	    win.innerHTML += '<BR />' + formatSmileys(formatAnswer(msg, sender));
 	    win.scrollTop = win.scrollTop + 200;     
 	}
}


function addNewRoomAnnouncementToUi(room, sender, msg, priority)
{
    win = document.getElementById('div'+room+'chat');
    if ( win )
    {
 	    win.innerHTML += '<BR />' + formatSmileys(formatAnnouncement(msg, sender));
 	    win.scrollTop = win.scrollTop + 200;     
 	}
}
function formatApprovedQuestion(msg, messageid)
{
    var retValue;
    try{
    var from = '';
    if (config_nick == from) 
    {
        from = "<span id='"+messageid+"'><span class='msgHeadingOwner'>" + messageid.substring(0, messageid.lastIndexOf('_'), messageid.length) + ": </span>";
        retValue =  from  + "<span class='msgChatMessage'>"+ msg +"</span></span>";
    }
    else
    {
        from = "<span id='"+messageid+"'><span class='msgHeadingOther'>" + messageid.substring(0, messageid.lastIndexOf('_'), messageid.length) + ": </span>";
        retValue =  from  + "<span class='msgChatMessage'>"+ msg +"</span><span>";
    }}catch(e){}
    return retValue;
}
function formatChatMessage(body,sender)
{
    var retValue;
    var from = '';
    if (config_nick == from) 
    {
        from = "<span class='msgHeadingOwner'>" + sender + ": </span>";
        retValue =  from  + "<span class='msgChatMessage'>"+ body +"</span>";
    }
    else
    {
        from = "<span class='msgHeadingOther'>" + sender + ": </span>";
        retValue =  from  + "<span class='msgChatMessage'>"+ body +"</span>";
    }
    return retValue;
}

function formatAnnouncement(msg, sender)
{
    var retValue;    
    retValue =  "<span class='msgRoomAnnouncement'>Announcement: "+ msg +"</span>";
    return retValue;
}
function formatAnswersQuestion(body,messageid)
{
    var retValue;
    var from = '';
    if (config_nick == from) 
    {
        from = "<span class='msgPreAnswerQusHeadingOwner'>" + messageid.substring(0, messageid.lastIndexOf('_'), messageid.length) + " asked:</span><br />";
        retValue =  from  + "<span class='msgPreAnswerQuestion'>"+ body +"</span>";
    }
    else
    {
        from = "<span class='msgPreAnswerQusHeadingOther'>" + messageid.substring(0, messageid.lastIndexOf('_'), messageid.length) + " asked:</span><br />";
        retValue =  from  + "<span class='msgPreAnswerQuestion'>"+ body +"</span>";
    }
    return retValue;
}

function formatAnswer(body,from)
{
    var retValue;
    retValue =  "<span class='msgAnswerHeading'>"+
        from  +": </span><span class='msgAnswerChat'>"+ body +"</span>";
    return retValue;
}

function getHTTPRequestObject()
{
    var xmlhttp;
    if(window.XMLHttpRequest)
    {
        xmlhttp = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    {
        try
        {
            xmlhttp = new XMLHttpRequest();
        }
        catch (trymicrosoft) 
        {
            try
            {
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (othermicrosoft)
            {
                try
                {
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (failed)
                {
                    //alert(failed);
                    xmlhttp = false;
                }
            }
        }
    }
    return xmlhttp;
}

function getXMLDocFromString(xml)
{
    // parse xml
    var xmlDoc;
    if (window.XMLHttpRequest && document.implementation)
    {
        try
        {
            xmlDoc  =document.implementation.createDocument("","",null);
            xmlDoc = (new DOMParser()).parseFromString(xml, "text/xml");
        }
        catch(e)
        {
            try
            {
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.loadXML(xml);
            }
            catch(e)
            {
                xmlDoc= new ActiveXObject('Msxml2.FreeThreadedDOMDocument.3.0');
                xmlDoc.async = false;
                xmlDoc.load(xml);
            }
        }
    }
    else
    {
        // parse xml
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async=false;
        xmlDoc.loadXML(xml);
    }
    return xmlDoc;
}


function loadArchiveContents(roomName)
{
  try{
    var archiveUrl = "getArchive.php?roomname=" + roomName + '@' + config_conferenceServer;
    var xslUrl='xsl/archive.xsl';	
    

    //xmlDoc = getXMLDocFromString(xmlString);
    //alert('XML is '+xmlhttp.responseText);

    if ( (archiveXsl + "") == "")
    {
        xslhttp = getHTTPRequestObject();
        xslhttp.open("GET",xslUrl,false);
        xslhttp.send(null);
        //GOT XSL
        archiveXsl=xslhttp.responseXML;
        
    }
    
    
    xmlhttp = getHTTPRequestObject();
    xmlhttp.open("GET",archiveUrl,false);
    xmlhttp.send(null);
    //GOT XSL
    archiveXml=xmlhttp.responseText;
    
    
    xmlDoc = getXMLDocFromString(archiveXml);
    
    if(window.ActiveXObject)
    {
		// Filter XML
		// Display Xsl
        fXsl= new ActiveXObject('Msxml2.FreeThreadedDOMDocument.3.0');
        fXsl.async = false;
        fXsl.load(archiveXsl);

        var xslt1 = new ActiveXObject('msxml2.XSLTemplate.3.0');
        xslt1.stylesheet=fXsl;
        var processor1 = xslt1.createProcessor();
        processor1.input=xmlDoc;
        processor1.transform();        
        document.getElementById('div'+roomName+'archive').innerHTML += processor1.output;
    }
    else if(window.XMLHttpRequest)
    {
        var xslt1 = new XSLTProcessor();
        xslt1.importStylesheet(archiveXsl);        
        resultDocument1=xslt1.transformToDocument(xmlDoc);
        document.getElementById('div'+roomName+'archive').innerHTML += resultDocument1.xml;
    }
  }
  catch(e)
  {
    alert(e);
  }
}

//This needs further  definition
function loadShowImage(){
   
    var imageHtml = "<img src='images/showimage.jpg'>";
   
    var playerDiv = document.getElementById("divMediaPlayer");
    if ( playerDiv )
    {
        playerDiv.innerHTML = imageHtml;
    }
}


function loadNBCMediaPlayer(videoURL, videoTitle){
   
    var playerHtml = "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,65,0' id='usa_short_cont' align='middle' height='220' width='232'>";
    playerHtml += "<param name='allowScriptAccess' value='sameDomain'/ >";
    playerHtml += "<param name='movie' value='swf/usa_sub_flvp.swf?vid="+videoURL+"&amp;autoVid=yes&amp;title="+videoTitle+"' />";
    playerHtml += "<param name='quality' value='high' />";
    playerHtml += "<param name='wmode' value='transparent' />";
    playerHtml += "<param name='base' value='.' />";
    playerHtml += "<param name='bgcolor' value='#1C292D'>";
    playerHtml += "<embed src='swf/usa_sub_flvp.swf?vid="+videoURL+"&amp;autoVid=yes&amp;title="+videoTitle+"' base='.' align='middle' height='220' width='232'>";
    playerHtml += "</object>";
    var playerDiv = document.getElementById("divMediaPlayer");
    if ( playerDiv )
    {
        playerDiv.innerHTML = playerHtml;
    }
}


function loadWindowsMediaPlayer(videoURL, videoTitle)
{
    if(window.ActiveXObject)
    {   
        /*var playerHtml = "<OBJECT id='WMPVIDEO' CLASSID='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6' type='application/x-oleobject' >";
        playerHtml += "<PARAM NAME='URL' VALUE=''>";
        playerHtml += "<PARAM NAME='enabled' VALUE='True'>";
        playerHtml += "<PARAM NAME='AutoStart' VALUE='False'>";
        playerHtml += "<PARAM name='PlayCount' value='9999'>";
        playerHtml += "<PARAM name='Volume' value='100'>";
        playerHtml += "<PARAM NAME='balance' VALUE='0'>";
        playerHtml += "<PARAM NAME='Rate' VALUE='1.0'>";
        playerHtml += "<PARAM NAME='Mute' VALUE='False'>";
        playerHtml += "<PARAM NAME='fullScreen' VALUE='False'>";
        playerHtml += "<PARAM name='uiMode' value='full'>";
        playerHtml += "</OBJECT>";*/
        
        //var playerHtml = "<OBJECT ID='WMPVIDEO' WIDTH=230 HEIGHT=215 classid='CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95'";
//        playerHtml += " codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112'";
//        playerHtml +=   " standby='Loading "+videoTitle+"'";
//        playerHtml +=   " type='application/x-oleobject'>";
//        //playerHtml += "<PARAM NAME='FileName' VALUE='"+videoURL+"'>";
//		playerHtml += "<PARAM NAME='FileName' VALUE='http://mfile.akamai.com/31585/live/reflector:30765.asx?prop=n'>";
//        playerHtml += "<PARAM NAME='ShowControls' VALUE='0'>";
//        playerHtml += "<PARAM NAME='ShowDisplay' VALUE='0'>";
//        playerHtml += "<PARAM NAME='ShowStatusBar' VALUE='1'>";
//        playerHtml += "<PARAM NAME='AutoSize' VALUE='1'>";
//        playerHtml += "<PARAM name='PlayCount' value='9999'>";
//        playerHtml += "<Embed type='application/x-mplayer2'";
//            playerHtml += " pluginspage='http://www.microsoft.com/windows/windowsmedia/download/AllDownloads.aspx/'";
//            playerHtml += " filename='Station1.asx'";
//            //playerHtml += " src='Station1.asx'";
//			playerHtml += "SRC='http://mfile.akamai.com/31585/live/reflector:30765.asx?prop=n' ";
//            playerHtml += " Name=MediaPlayer";
//            playerHtml += " ShowControls=0";
//            playerHtml += " ShowDisplay=0";
//            playerHtml += " ShowStatusBar=0";
//            playerHtml += " width=230";
//            playerHtml += " height=215>";
//        playerHtml += "</embed>";
//        playerHtml += "</OBJECT>";
		
		
		var playerHtml = "<object type=\"video/x-ms-wmv\" id=\"WMPVIDEO\" WIDTH=\"230\" HEIGHT=\"215\" ";
        playerHtml += " codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112'";
        playerHtml += " standby='Loading "+videoTitle+"'";
		playerHtml += " classid=\"CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95\"";
		playerHtml += " >\n";
		//playerHtml += "     <param name=\"src\" value=\"http://mfile.akamai.com/36705/live/reflector:48450.asx?bkup=59090&prop=n\" />\n";
		playerHtml += "     <param name=\"src\" value=\""+videoURL+"\" />\n";
        playerHtml += "     <param NAME='ShowControls' VALUE='1'>\n";
        playerHtml += "     <param NAME='ShowDisplay' VALUE='0'>\n";
        playerHtml += "     <param NAME='ShowStatusBar' VALUE='1'>\n";
        playerHtml += "     <param NAME='AutoSize' VALUE='1'>\n";
        playerHtml += "     <param name='PlayCount' value='9999'>\n";
		playerHtml += "</object>";
         
        var playerDiv = document.getElementById("divMediaPlayer");
        if ( playerDiv )
        {
            playerDiv.innerHTML = playerHtml;
        }
    }
    else if (navigator.platform.indexOf('Mac') >= 0 ) // Load Window Media Player for Firefox Mac
    {
        var fHasWMP = navigator.mimeTypes 
              && navigator.mimeTypes["application/x-mplayer2"]
              && navigator.mimeTypes["application/x-mplayer2"].enabledPlugin;
        var playerHtml  ="";
        if( fHasWMP ) {
           var playerHtml = "<object id='WMPVIDEO' data='"+videoURL+"' type='video/x-ms-wmv'  width='230' height='215' SHOWCONTROLS='0'>";
			playerHtml += "<param name='ShowStatusBar' value='1'>";
			playerHtml += "<param name='src' value='"+videoURL+"'>";
			playerHtml += "<param name='autostart' value='1'>";
			playerHtml += "<param NAME='ShowDisplay' VALUE='0'>";
			playerHtml += "<param name='volume' value='0'>";
			playerHtml += "<param NAME='AutoSize' VALUE='1'>";
			playerHtml += "<param name='PlayCount' value='9999'>";
			playerHtml += "</object>";
        }else
        {
            var playerHtml = "Please install Windows Media Player to play show video. Download from <a href='http://www.apple.com/downloads/macosx/video/windowsmediaplayerformacosx.html'>here.</a>"
        }
      
        var playerDiv = document.getElementById("divMediaPlayer");
        if ( playerDiv )
        {
            playerDiv.innerHTML = playerHtml;
        }
    }
    else
    {
        //var playerHtml  = "<object id='WMPVIDEO' data='http://mfile.akamai.com/36705/live/reflector:48450.asx?bkup=59090&prop=n' type='video/x-ms-wmv' ";
		var playerHtml  = "<object id='WMPVIDEO' data='"+videoURL+"' type='video/x-ms-wmv' ";
        playerHtml += " width='230' height='215' SHOWCONTROLS='1'>";
        playerHtml += "<param name='ShowStatusBar' value='1'>";
        playerHtml += "<param name='src' value='"+videoURL+"'>";
		//playerHtml += "<param name='src' value='http://mfile.akamai.com/36705/live/reflector:48450.asx?bkup=59090&prop=n'>";
        playerHtml += "<param name='autostart' value='1'>";
        playerHtml += "<PARAM NAME='ShowDisplay' VALUE='0'>";
        playerHtml += "<param name='volume' value='0'>";
        playerHtml += "     <param NAME='AutoSize' VALUE='1'>\n";
        playerHtml += "     <param name='PlayCount' value='9999'>\n";
        playerHtml += "<embed src='"+videoURL+"' width='230' height='215' autoStart='1' ShowStatusBar='1' ></embed>";
		playerHtml += "</object>";
      
      var playerDiv = document.getElementById("divMediaPlayer");
        if ( playerDiv )
        {
            playerDiv.innerHTML = playerHtml;
        }
    }
}


function updateMemberCount()
{
   try{
    var room = tabs.active.id.substring(3, tabs.active.id.length) + '@' + config_conferenceServer;
    var roomType = tabs.active.id.substring(0, 3);
    if ( roomType == "opn" ||
            roomType == "adm" ||
            roomType == "cel" ||
            roomType == "usr" )
    {
        var count = GetOnlineCount(room)+50;
        var divCount = document.getElementById("divMemberCount");
        if ( divCount )
        {
            if ( count <= 1 )
            {
                divCount.innerHTML = "<a onClick='showRoomRoster(event);' title='View members'>" + count + " Member</a>";
            }
            else
            {
                divCount.innerHTML = "<a onClick='showRoomRoster(event);' title='View members'>" + count + " Members</a>";
            }
        }
        
        var rosterHTML = GetRoomRosterHtml(room, roomType == "adm");
        var rosterDiv = document.getElementById("divRoomRosterContents");
        if ( rosterDiv )
        {
            rosterDiv.innerHTML = rosterHTML;
        }
    }
    }catch(e){}
    setTimeout('updateMemberCount()', 4000);
}
var xmlhttpadminui;
function checkForAdminAndAddtab()
{
    var url = "nscadmin/checkRole.php?ujid="+config_userJID+"@"+config_XMPPServer;
    
    var xmlhttp = getHTTPRequestObject();
    xmlhttp.open("GET",url,false);
    xmlhttp.send(null);
    //GOT XSL    
    if ( trim(xmlhttp.responseText) == 'admin')
    {
        var admUIUrl = "nscadmin/admin-tab.php?nwid="+config_TVNetworkId+"&ujid="+config_userJID+"@"+config_XMPPServer;
        xmlhttpadminui = getHTTPRequestObject();
        xmlhttpadminui.onreadystatechange = function()
        {
            if (xmlhttpadminui.readyState==4) {
                tab = tabs.addTab(
                    "nacadmintab",
                    "Admin",
                    xmlhttpadminui.responseText,
                    false
                );
                initYahooAddShow();
            }
        };
        xmlhttpadminui.open("GET",admUIUrl,false);
        xmlhttpadminui.send(null);
    }
    
}


function trim(sString)
{
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
		while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
		return sString;
}
function kickedFromRoom(roomname)
{
    var roomName = roomname.substring(0, roomname.indexOf("@"));
    var roomtabid = '';
    if ( document.getElementById("opn"+roomName) )
    {
        roomtabid = "opn"+roomName;
    }
    if (document.getElementById("cel"+roomName))
    {
        roomtabid = "cel"+roomName;
    }
    else if (document.getElementById("usr"+roomName))
    {
        roomtabid = "usr"+roomName;
    }
    
    if ( roomtabid != '')
    {
        alert("You have been kicked from "+tabs.getTab(roomtabid).text + " room");
        tabs.removeTab(roomtabid);
    }
}
function bannedFromRoom(roomname)
{
    var roomName = roomname.substring(0, roomname.indexOf("@"));
    var roomtabid = '';
    if ( document.getElementById("opn"+roomName) )
    {
        roomtabid = "opn"+roomName;
    }
    if (document.getElementById("cel"+roomName))
    {
        roomtabid = "cel"+roomName;
    }
    else if (document.getElementById("usr"+roomName))
    {
        roomtabid = "usr"+roomName;
    }
    
    if ( roomtabid != '')
    {
        alert("You have been banned from "+tabs.getTab(roomtabid).text + " room");
        tabs.removeTab(roomtabid);
    }
}

function roomLockedOnRunTime(roomname)
{   
    var roomName = roomname.substring(0, roomname.indexOf("@"));
    var roomtabid = '';
    if ( document.getElementById("opn"+roomName) )
    {
        roomtabid = "opn"+roomName;
    }
    else if (document.getElementById("adm"+roomName))
    {
        roomtabid = "adm"+roomName;
    }
    else if (document.getElementById("cel"+roomName))
    {
        roomtabid = "cel"+roomName;
    }
    else if (document.getElementById("usr"+roomName))
    {
        roomtabid = "usr"+roomName;
    }
    
    if ( roomtabid != '')
    {
        alert(msgRoomClosed);
        tabs.removeTab(roomtabid);
    }
    
    
}

function checkIntKey(e){
	var unicode=e.charCode? e.charCode : e.keyCode
	if (unicode!=8 && unicode!=37 && unicode!=39 && unicode!=46)
	{ //if the key isn't the backspace key, arrrow key, delete key (which we should allow)
		if (unicode<48||unicode>57) //if not a number
			return false //disable key press
	}
}




/*Secure Starts*/
function permutationGenerator(nNumElements) {
this.nNumElements     = nNumElements;
this.antranspositions = new Array;
var k = 0;
for (i = 0; i < nNumElements - 1; i++)
for (j = i + 1; j < nNumElements; j++)
this.antranspositions[ k++ ] = ( i << 8 ) | j;
// keep two positions as lo and hi byte!
this.nNumtranspositions = k;
this.fromCycle = permutationGenerator_fromCycle;
}
function permutationGenerator_fromCycle(anCycle) {
var anpermutation = new Array(this.nNumElements);
for (var i = 0; i < this.nNumElements; i++) anpermutation[i] = i;
for (var i = 0; i < anCycle.length; i++) {
var nT = this.antranspositions[anCycle[i]];
var n1 = nT & 255;
var n2 = (nT >> 8) & 255;
nT = anpermutation[n1];
anpermutation[n1] = anpermutation[n2];
anpermutation[n2] = nT;
}
return anpermutation;
}
function password(strpasswd) {
this.strpasswd = strpasswd;
this.getHashValue   = password_getHashValue;
this.getpermutation = password_getpermutation;
}
function password_getHashValue() {
var m = 907633409;
var a = 65599;
var h = 0;
for (var i = 0; i < this.strpasswd.length; i++) 
h = (h % m) * a + this.strpasswd.charCodeAt(i);
return h;
}
function password_getpermutation() {
var nNUMELEMENTS = 13;
var nCYCLELENGTH = 21;
pg = new permutationGenerator(nNUMELEMENTS);
var anCycle = new Array(nCYCLELENGTH);
var npred   = this.getHashValue();
for (var i = 0; i < nCYCLELENGTH; i++) {
npred = 314159269 * npred + 907633409;
anCycle[i] = npred % pg.nNumtranspositions;
}
return pg.fromCycle(anCycle);
}
function SecureContext(strText, strSignature, bEscape) {
this.strSIGNATURE = strSignature || '';
this.bESCApE      = bEscape || false;
this.strText = strText;
this.escape        = SecureContext_escape;
this.unescape      = SecureContext_unescape;
this.transliterate = SecureContext_transliterate;
this.encypher      = SecureContext_encypher;
this.decypher      = SecureContext_decypher;
this.sign          = SecureContext_sign;
this.unsign        = SecureContext_unsign;
this.secure   = SecureContext_secure;
this.unsecure = SecureContext_unsecure;
}
function SecureContext_escape(strToEscape) {
var strEscaped = '';
for (var i = 0; i < strToEscape.length; i++) {
var chT = strToEscape.charAt( i );
switch(chT) {
case '\r': strEscaped += '\\r'; break;
case '\n': strEscaped += '\\n'; break;
case '\\': strEscaped += '\\\\'; break;
default: strEscaped += chT;
   }
}
return strEscaped;
}
function SecureContext_unescape(strToUnescape) {
var strUnescaped = '';
var i = 0;
while (i < strToUnescape.length) {
var chT = strToUnescape.charAt(i++);
if ('\\' == chT) {
chT = strToUnescape.charAt( i++ );
switch( chT ) {
case 'r': strUnescaped += '\r'; break;
case 'n': strUnescaped += '\n'; break;
case '\\': strUnescaped += '\\'; break;
default: // not possible
   }
}
else strUnescaped += chT;
}
return strUnescaped;
}
function SecureContext_transliterate(btransliterate) {
var strDest = '';

var nTextIter  = 0;
var nTexttrail = 0;

while (nTextIter < this.strText.length) {
var strRun = '';
var cSkipped   = 0;
while (cSkipped < 7 && nTextIter < this.strText.length) {
var chT = this.strText.charAt(nTextIter++);
if (-1 == strRun.indexOf(chT)) {
strRun += chT;
cSkipped = 0;
}
else cSkipped++;
}
while (nTexttrail < nTextIter) {
var nRunIdx = strRun.indexOf(this.strText.charAt(nTexttrail++));
if (btransliterate) {
nRunIdx++
if (nRunIdx == strRun.length) nRunIdx = 0;
}
else {
nRunIdx--;
if (nRunIdx == -1) nRunIdx += strRun.length;
}
strDest += strRun.charAt(nRunIdx);
   }
}
this.strText = strDest;
}
function SecureContext_encypher(anperm) {
var strEncyph = '';
var nCols     = anperm.length;
var nRows     = this.strText.length / nCols;
for (var i = 0; i < nCols; i++) {
var k = anperm[ i ];
for (var j = 0; j < nRows; j++) {
strEncyph += this.strText.charAt(k);
k         += nCols;
   }
}
this.strText = strEncyph;
}
function SecureContext_decypher(anperm) {
var nRows    = anperm.length;
var nCols    = this.strText.length / nRows;
var anRowOfs = new Array;
for (var i = 0 ; i < nRows; i++) anRowOfs[ anperm[ i ] ] = i * nCols;
var strplain = '';
for (var i = 0; i < nCols; i++) {
for (var j = 0; j < nRows; j++)
strplain += this.strText.charAt(anRowOfs[ j ] + i);
}
this.strText = strplain;
}
function SecureContext_sign(nCols) {
	if (this.bESCApE) {
		this.strText      = this.escape(this.strText);
		this.strSIGNATURE = this.escape(this.strSIGNATURE);
	}
	var nTextLen     = this.strText.length + this.strSIGNATURE.length;
	var nMissingCols = nCols - (nTextLen % nCols);
	var strpadding   = '';  
	if (nMissingCols < nCols)
		for (var i = 0; i < nMissingCols; i++) strpadding += ' ';
			var x = this.strText.length;
			this.strText +=  strpadding + this.strSIGNATURE;
	}
function SecureContext_unsign(nCols) {
	if (this.bESCApE) {
		this.strText      = this.unescape(this.strText);
		this.strSIGNATURE = this.unescape(this.strSIGNATURE);
	}
	if ('' == this.strSIGNATURE) return true;
		var nTextLen = this.strText.lastIndexOf(this.strSIGNATURE);
	if (-1 == nTextLen) return false;
		this.strText = this.strText.substr(0, nTextLen);
	return true;
	}
function SecureContext_secure(strpasswd) {
	var passwd = new password(strpasswd);
	var anperm   = passwd.getpermutation()
	this.sign(anperm.length);
	this.transliterate(true);
	this.encypher(anperm);
}
function SecureContext_unsecure(strpasswd) {
	var passwd = new password(strpasswd);
	var anperm = passwd.getpermutation()
	this.decypher(anperm);
	this.transliterate(false);
	return this.unsign(anperm.length);
}
// End -->

<!-- Begin
function doSecure(val) {
var sc = new SecureContext(val, 
"", false);
sc.secure("123");
return sc.strText;
}
function doUnsecure(val) {
var sc = new SecureContext(val, 
"", false);
if (!sc.unsecure("123")) 
	alert('Invalid password used.');

return sc.strText;
}
/* Secure Ends */


    
function buildMessageToolBar(roomOrBuddyName)
{
    var colorMenu = new Ext.menu.ColorMenu({
        handler : function(cm, color){
            if (typeof(color) == 'string' )
            {
                onItemColor(color, 'txtMessageBox'+roomOrBuddyName);
            }
        }
    });   
    
    var tb = new Ext.Toolbar('toolbar'+roomOrBuddyName);
    tb.add(' ',{
        text: '<b>B</b>',
        enableToggle: true,
        toggleHandler: function(item, pressed){onItemBoldToggle(item, pressed,'txtMessageBox'+roomOrBuddyName);},
        pressed: false
    },' ',
	{
        text: '<i>I</i>',
        enableToggle: true,
        toggleHandler: function(item, pressed){onItemItalicToggle(item, pressed,'txtMessageBox'+roomOrBuddyName);},
        pressed: false
    },' ',
	{
        text: '<u>U</u>',
        enableToggle: true,
        toggleHandler: function(item, pressed){onItemUnderLineToggle(item, pressed,'txtMessageBox'+roomOrBuddyName);},
        pressed: false
    },' ',
	{
        icon: 'images/btn-color.gif', // icons can also be specified inline
        cls: 'x-btn-icon',
        menu: colorMenu      

    },' ',
    {
        icon: 'images/btn_smilie.ico', // icons can also be specified inline
        cls: 'x-btn-icon',
        handler: function (item, e){showSmilie(item, e, 'txtMessageBox'+roomOrBuddyName);}
    }
	);
	
}
var activeMessageTextBox = "";
function showSmilie(item, e, txtBox)
{
    activeMessageTextBox = txtBox;
    if (! smileyMenu )    
        smileyMenu = document.getElementById("divSmiley");
        
    if ( smileyMenu.style.visibility == "visible" )
    {
        smileyMenu.style.visibility = "hidden";
        return;
    }
    var xPos = e.xy[0];
	var yPos = e.xy[1];
    smileyMenu.style.left = xPos + "px";
    smileyMenu.style.top = yPos + "px";
    smileyMenu.style.visibility = "visible";  
    return true;
}

function insertSmiley(code)
{  
    var textBox = document.getElementById(activeMessageTextBox);
    if ( textBox )
    {   
        if (textBox.setSelectionRange){
            textBox.value = textBox.value.substring(0,textBox.selectionStart) + code + textBox.value.substring(textBox.selectionStart,textBox.selectionEnd) + textBox.value.substring(textBox.selectionEnd,textBox.value.length);
        }
        else if (document.selection && document.selection.createRange) {
         textBox.focus();
            var range = document.selection.createRange();
            range.text = code + range.text;
        }
    }
    hideSmilie();
}

function hideSmilie()
{
    if (! smileyMenu )    
        smileyMenu = document.getElementById("divSmiley");
    smileyMenu.style.visibility = "hidden";
}

function onItemBoldToggle(item, pressed, txtBox)
{   
    var textBox = document.getElementById(txtBox);
    if ( textBox )
    {
        if ( pressed )
            textBox.style.fontWeight = "bold";
        else
            textBox.style.fontWeight = "normal";
    }
}

function onItemItalicToggle(item, pressed, txtBox)
{
	//var roomName = tabs.active.id.substring(3, tabs.active.id.length);
    var textBox = document.getElementById(txtBox);
    if ( textBox )
    {
        if ( pressed )
            textBox.style.fontStyle = "italic";
        else
            textBox.style.fontStyle = "normal";
    }
}

function onItemUnderLineToggle(item, pressed, txtBox)
{
	//var roomName = tabs.active.id.substring(3, tabs.active.id.length);
    var textBox = document.getElementById(txtBox);
    if ( textBox )
    {
        if ( pressed )
            textBox.style.textDecoration = "underline";
        else
            textBox.style.textDecoration = "none";
    }
}

function onItemColor(color, txtBox)
{
    //var roomName = tabs.active.id.substring(3, tabs.active.id.length);
    var textBox = document.getElementById(txtBox);
    if ( textBox )
    {
        textBox.style.color = "#"+color;
    }

}


function initYahooAddShow()
{
     var x = -19600;//document.width / 2 - 100;
    //var y = 100;//document.height / 2 - 200;    
	var y = -19580;//document.height / 2 - 200;    
                                                                  
    YAHOO.showPanel = new YAHOO.widget.Overlay("addShowPanel", { xy:[x,y],
                visible:false,
                width:"400px",
                effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.3} } );
    YAHOO.showPanel.render(); 
    YAHOO.showPanel.hide();
}

function closeShowPop()
{
    YAHOO.showPanel.hide();
}

function openShowPop()
{
    YAHOO.showPanel.show();
}

function updateRoomStatus(roomName, isLocked)
{
    var divLock = document.getElementById('divLockUnlock'+roomName);
    
    if ( divLock )
    {
        if ( isLocked )
        {
            divLock.innerHTML = "<a class='adminALink' onclick=\"unlockRoom('"+roomName+"')\">Unlock Room</a>";
        }
        else
        {
            divLock.innerHTML = "<a class='adminALink' onclick=\"lockRoom('"+roomName+"')\">Lock Room</a>";
        }
    }   
}

function escapeHTML(message)
{   
	if (message) {
		for(var j = 0; j < spchars[0].length; j++){
			message = message.replace(eval("/"+String.fromCharCode(spchars[0][j])+"/g"),spchars[1][j]);
		}
		message = message.replace(/\r\n/g, '<br \>');
		message = message.replace(/\n/g, '<br />');
	}
    return message;
}

function formatSmileys(message)
{ 
	if (message) 
    {
		for(var j = 0; j < smilies[0].length; j++)
		{
			message = message.replace(smilies[0][j],"<img src='images/smilies/"+smilies[1][j]+"' />");
	    }
	}
	return message;
}

function setRosterPosition(element, e)
{     
    element.onmousedown = new function(){};    
    var rosterDiv = document.getElementById("divRoomRoster");
    if ( rosterDiv )
    {        
        if(window.ActiveXObject)
        {
            rosterDiv.style.left = event.clientX + "px";
            rosterDiv.style.top = "380px";
        }
        else
        {
            rosterDiv.style.left = e.pageX + "px";
            rosterDiv.style.top = e.pageY + 10 + "px";
        }
    }    
}

function initRoomRoster()
{
    if ( !divRoomRoster )
    {
        divRoomRoster = document.getElementById("divRoomRoster");
    }
    divRoomRoster.style.visibility = "hidden";
    
}
function hideRoomRoomRoster()
{
    if ( divRoomRoster )
        divRoomRoster.style.visibility = "hidden";    
}
function showRoomRoster(e)
{   
    if(document.all)e = event;
    
    e.cancelBubble = true;
    
    if ( !divRoomRoster )
    {
        divRoomRoster = document.getElementById("divRoomRoster");
    }
    
    var xPos = e.clientX;
	if(xPos + divRoomRoster.offsetWidth > (document.documentElement.offsetWidth-20)){
		xPos = xPos + (document.documentElement.offsetWidth - (xPos + divRoomRoster.offsetWidth)) - 20;	
	}
	
	var yPos = e.clientY;
	
	if(window.ActiveXObject)
    {
        yPos = event.clientY + getScrollTop();
        event.returnValue = false;
    }
    else
    {   
        yPos = e.pageY + 2;
        e.preventDefault();
    }
    
    if ( MSIE == true && navigatorVersion == "6")
    {
        if ( !iframeSelectMask )
        {
            iframeSelectMask = document.getElementById("iframeSelectMask");
        }
        iframeSelectMask.style.left = xPos + 'px';
        iframeSelectMask.style.top = yPos + 'px';
        iframeSelectMask.style.width = (divRoomRoster.clientWidth+2) + 'px';
        iframeSelectMask.style.height = (divRoomRoster.clientHeight+2) + 'px';
        iframeSelectMask.style.visibility = "visible";
    }
    
    divRoomRoster.style.left = xPos + 'px';
	divRoomRoster.style.top = yPos + 'px';	
    divRoomRoster.style.visibility = "visible";
    return false;
}

function initNewOpenRoomDiv()
{
    if ( !newOpenChatRoomDiv )
    {
        newOpenChatRoomDiv = document.getElementById("newOpenChatRoomDiv");
    }
    newOpenChatRoomDiv.style.visibility = "hidden";
}

function showNewOpenRoomDiv(e, showId)
{
    if (!isXMPPLoggedIn)
    {
        alert("Please login to create a new chat room.");
        return;
    }
    iShowIdForNewOpenRoom = showId;
    if(document.all)e = event;
    
    e.cancelBubble = true;
    
    if ( !newOpenChatRoomDiv )
    {
        newOpenChatRoomDiv = document.getElementById("newOpenChatRoomDiv");
    }
    
    var xPos = e.clientX;
	if(xPos + newOpenChatRoomDiv.offsetWidth > (document.documentElement.offsetWidth-20)){
		xPos = xPos + (document.documentElement.offsetWidth - (xPos + newOpenChatRoomDiv.offsetWidth)) - 20;	
	}
	
	var yPos = e.clientY;
	
	if(window.ActiveXObject)
    {
        yPos = event.clientY + getScrollTop();
        event.returnValue = false;
    }
    else
    {   
        yPos = e.pageY + 2;
        e.preventDefault();
    }
        
    newOpenChatRoomDiv.style.left = xPos + 'px';
	newOpenChatRoomDiv.style.top = yPos + 'px';	
    newOpenChatRoomDiv.style.visibility = "visible";
    return false;
}

function hideNewOpenRoomDiv()
{
    if ( newOpenChatRoomDiv )
        newOpenChatRoomDiv.style.visibility = "hidden"; 
}

function highlightContextMenuItem()
{
	this.className='contextMenuHighlighted';
	activeContextMenuItem = this;
}

function deHighlightContextMenuItem()
{
	this.className='';
}

function showContextMenu(e, contextMenuObj)
{
    hideAllContextMenu();
	if(activeContextMenuItem)activeContextMenuItem.className='';
	if(document.all)e = event;
	
	contextMenuObj.style.display='block';
	var xPos = e.clientX;
	if(xPos + contextMenuObj.offsetWidth > (document.documentElement.offsetWidth-20)){
		xPos = xPos + (document.documentElement.offsetWidth - (xPos + contextMenuObj.offsetWidth)) - 20;	
	}
	
	var yPos = e.clientY;
	
	if(window.ActiveXObject)
    {
        yPos = event.clientY + getScrollTop();
        event.returnValue = false;
    }
    else
    {   
        yPos = e.pageY + 2;
        e.preventDefault();
    }
	/*if(yPos + contextMenuObj.offsetHeight > (document.documentElement.clientHeight-20)){
		yPos = yPos + (document.documentElement.clientHeight - (yPos + contextMenuObj.offsetHeight)) - 20 + getScrollTop();	
	}*/
	if ( MSIE == true && navigatorVersion == "6")
    {
        if ( !iframeSelectMask )
        {
            iframeSelectMask = document.getElementById("iframeSelectMask");
        }
        iframeSelectMask.style.left = xPos + 'px';
        iframeSelectMask.style.top = yPos + 'px';
        iframeSelectMask.style.width = (contextMenuObj.clientWidth+2) + 'px';
        iframeSelectMask.style.height = (contextMenuObj.clientHeight+2) + 'px';
        iframeSelectMask.style.visibility = "visible";
    }
	contextMenuObj.style.left = xPos + 'px';
	contextMenuObj.style.top = yPos + 'px';
	
	return false;	
}

function hideie6SelectMask()
{
    if ( iframeSelectMask )
    {
        iframeSelectMask.style.visibility='hidden';
    }
}

function hideAllContextMenu()
{
    if ( MSIE == true && navigatorVersion == "6")
        hideie6SelectMask();
    hideContextMenu(l1ContextMenu);
    hideContextMenu(l2ContextMenu);
    hideRoomRoomRoster();
    hideNewOpenRoomDiv();
    
    //hideSmilie();
}
function hideContextMenu(cMenu)
{	if ( cMenu )
    {
	    cMenu.style.display='none';
    }
	
}
function initAllContextMenu()
{
    initContextMenu('l1', 'questionQ1ContextMenu');
    initContextMenu('l2', 'questionQ2ContextMenu');
    initSmileyContextMenu();
    document.documentElement.onclick = hideAllContextMenu;
    initRoomRoster();
    initNewOpenRoomDiv();
}
function initSmileyContextMenu()
{
    var smDiv = document.getElementById("divSmileyContainer");
    if ( smDiv )
    {
        for(var j = 0; j < smilies[0].length; j++)
		{
            smDiv.innerHTML += "<img src='images/smilies/"+smilies[1][j]+"' class='smiliesDivImg' onClick=\"insertSmiley('"+smilies[0][j]+"')\" title='"+smilies[0][j]+"' alt='"+smilies[0][j]+"' />";
        }
    }
}
function initContextMenu(menu, menuid)
{
    
	var contextMenuObj = document.getElementById(menuid);
	contextMenuObj.style.display = 'block';
	var menuItems = contextMenuObj.getElementsByTagName('LI');
	for(var no=0;no<menuItems.length;no++){
		menuItems[no].onmouseover = highlightContextMenuItem;
		menuItems[no].onmouseout = deHighlightContextMenuItem;
		
		var aTag = menuItems[no].getElementsByTagName('A')[0];
		
		var img = menuItems[no].getElementsByTagName('IMG')[0];
		if(img){
			var div = document.createElement('DIV');
			div.className = 'imageBox';
			div.appendChild(img);
			
			if(MSIE && navigatorVersion<6){
				aTag.style.paddingLeft = '0px';
			}
			
			var divTxt = document.createElement('DIV');	
			divTxt.className='itemTxt';
			divTxt.innerHTML = aTag.innerHTML;
			
			aTag.innerHTML = '';
			aTag.appendChild(div);
			aTag.appendChild(divTxt);
			if(MSIE && navigatorVersion<6){
				div.style.position = 'absolute';
				div.style.left = '2px';
				divTxt.style.paddingLeft = '10px';
			}
			
			if(!document.all){
				var clearDiv = document.createElement('DIV');
				clearDiv.style.clear = 'both';
				aTag.appendChild(clearDiv);		
			}
		}else{
			if(MSIE && navigatorVersion<6){
				aTag.style.paddingLeft = '10px';
				aTag.style.width = (aTag.offsetWidth - 30) + 'px';
			}else{
				aTag.style.paddingLeft = '10px';
				aTag.style.width = (aTag.offsetWidth - 60) + 'px';
			}
		}
	}
	contextMenuObj.style.display = 'none';
	switch (menu)
	{
	    case 'l1':l1ContextMenu = contextMenuObj;break;
	    case 'l2':l2ContextMenu = contextMenuObj;
	}
}

function getScrollTop(){
	if (document.all){
		zxcWH=document.documentElement.clientHeight;
		zxcWW=document.documentElement.clientWidth;
		zxcWS=document.documentElement.scrollTop; //ie trans & strict
		if (zxcWH==0){
			zxcWS=document.body.scrollTop; //ie trans & strict
			zxcWH=document.body.clientHeight;
			zxcWW=document.body.clientWidth;
		}
	}
	zxcWC=Math.round(zxcWW/2);
return zxcWS;
}


function openOneToOneIMWindow(buddyName)
{
    if ( buddyName == config_nick )
    {
        alert("You can not do chat with your self.");
        return;
    }
    if ( !oneToOneWindows[buddyName] || oneToOneWindows[buddyName] == 'undefined')
    {
        oneToOneWindows[buddyName] = new YAHOO.widget.Panel("divOneToOne"+buddyName, { xy:[350,400], width:"300px", visible:false, draggable:true, close:true } );	
        oneToOneWindows[buddyName].setHeader(buddyName);
		oneToOneWindows[buddyName].setBody(getOneToOneIMContent(buddyName));
		oneToOneWindows[buddyName].render(document.body);
		buildMessageToolBar(buddyName);
    }
    oneToOneWindows[buddyName].show();    
}

function sendOneToOneIM(to, txtBoxId)
{
    var textBox = document.getElementById(txtBoxId);
    if ( textBox )
    {
        var msg = textBox.value;
        
        if ( msg == '' )
        {
            alert('Please write some message');
            return;
        }
        msg = escapeHTML(msg);
        textBox.value = ""; 
        msg = formatToHtmlMessage(textBox, msg);
        PostOneToOneMessage(to, msg);
        
        win = document.getElementById("div"+to+"OneToOne"); 
        if (win)
        {
 	        win.innerHTML += formatSmileys(formatChatMessage(msg, config_userJID)) + '<BR />';
 	        win.scrollTop = win.scrollTop + 200;
 	    }
    }
}

function addNewOneToOneIM(from, msg)
{  
    openOneToOneIMWindow(from);
    win = document.getElementById("div"+from+"OneToOne"); 
    if (win)
    {
 	    win.innerHTML +=  formatSmileys(formatChatMessage(msg, from)) + '<BR />';
 	    win.scrollTop = win.scrollTop + 200;
 	}
}

function cancelClickBubbeling(e)
{
    if(document.all)e = event;
    e.cancelBubble = true;
    if(window.ActiveXObject)    
        event.returnValue = false;    
    else
        e.preventDefault();
}

function addNewOpenChatRoom()
{   

    var url = "getMyRoomCount.php?nick="+config_userJID;    
    var xmlhttp = getHTTPRequestObject();    
    xmlhttp.onreadystatechange = function()
        {
            if (xmlhttp.readyState==4) {
                if( trim(xmlhttp.responseText) == 'error')
                {
                    alert("Error occured.");
                }
                else
                {
                   var currentCount = parseInt(xmlhttp.responseText);
                   if ( currentCount != 'NaN' && currentCount < MAX_NEW_ROOM_ALLOWED )
                   {    
                        var d = new Date();
                        var newRoomName = config_nick+"_"+d.getTime() + "@" + config_conferenceServer;    
                        var txtRoomName = document.getElementById("txtNewOpenChatRoom");
                        var roomDesc = txtRoomName.value + "";
                        
                        if ( trim(roomDesc) == '' )
                        {
                            alert("Please enter room name.");
                            return;
                        }
                        createMUCRoom(newRoomName, config_nick);
                        
                        var roomNewUrl = "addOpenRoom.php?showid="+iShowIdForNewOpenRoom+"&roomjid="+newRoomName+"&roomname="+roomDesc;    
                        xslhttp = getHTTPRequestObject();
                        xslhttp.open("GET",roomNewUrl,false);
                        xslhttp.send(null);
                        alert(xslhttp.responseText);	// Show the insert script respnse
                        txtRoomName.value = "";
                        vayu_getContent('openchat', 2); //first panel should be loaded at begining.
                    }
                    else
                    {
                        alert(msgNewRoomNotAllowd);
                    }
                }
            }
        };
    xmlhttp.open("GET",url,false);
    xmlhttp.send(null);
    
}

function showAnnouncement(msg)
{
    if ( !YAHOO.announcement )
    {
    YAHOO.announcement =  new YAHOO.widget.SimpleDialog("simpledialog2", 
														 { width: "300px",
														   fixedcenter: true,
														   visible: false,
														   draggable: true,
														   modal:false,
														   close: true,
														   text: msg,
														   icon: YAHOO.ICON_INFO,
														   constraintoviewport: true,
														   buttons: [ { text:"OK", handler:function(){this.hide();}, isDefault:true } ]
														 } );	
         YAHOO.announcement.setHeader("Announcement");	 
		 YAHOO.announcement.render(document.body);    
    }
    YAHOO.announcement.setBody(msg);
    YAHOO.announcement.show();
}

// This function will open a DHTML popup for do the login.
function openRegistrationPop()
{
    //sw_resetReportAbuseForm();
	YAHOO.registrationPanel.show();
	reg_loadCaptcha()
}

//This function will close yahoo login popup
function closeRegistrationPop()
{
    YAHOO.registrationPanel.hide();	
}

// This function will initialize the yahoo widgets components.
function initYahooRegistration()
{
     var x = 400;//document.width / 2 - 100;
    //var y = 100;//document.height / 2 - 200;    
	var y = 400;//document.height / 2 - 200;    
                                                                  
    YAHOO.registrationPanel = new YAHOO.widget.Overlay("registrationPanel", { xy:[x,y],
                visible:false,
                width:"300px",
                effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25} } );
    YAHOO.registrationPanel.render(); 
	YAHOO.registrationPanel.hide();	
	

}

function onSponsorUrl(sponsorUrl)
{
    // TODO NBC: This function will be called on activations of the chat room and archive tab. 
    // sponsorUrl variable will be containing the url of sponsor advertisement. 
    // Please also load default advertisement in case of this variable contains empty string. 
    // This variable will be empty for chat room created be registered users.
}
