/* Message list routines */

var dcTime = 250;    // doubleclick time
var dcDelay = 100;   // no clicks after doubleclick
var dcAt = 0;        // time of doubleclick
var savEvent = null; // save Event for handling doClick().
var savEvtTime = 0;  // save time of click event.
var savTO = null;    // handle of click setTimeOut

function toggleFlag(u)
{
	t = document.getElementById('flag'+u);


	if ( t.innerHTML == "&nbsp;" )
	{
		f = "setFlag";
		//t.innerHTML = '<img src="/hwebmail/mail/themes/graphics/mail_flagged.png" alt="Flagged" title="Flagged" />';
		t.innerHTML = '<img src="/hwebmail/mail/themes/graphics/star.png" alt="Flagged" title="Flagged" />';
	}
	else
	{
		f = "clearFlag";
		t.innerHTML = "&nbsp;";
	}

	var url = "addFlag.php?&actionID=toggleFlag&f=" + f + "&u=" + u + "&xcache=" + getRandom();
        var xmlReq = newXMLHTTPRequest(url,"GET",toggleFlagGUI);
        xmlReq.send(null);
}

function toggleFlagGUI(xml,text)
{
	if ( "html" == text.substr(1,4) )
	{
		window.location = "login.php?logout_reason=no_session_vi";
	}
}


function togglePreview(show)
{
        if ( show )
        {
                with(parent.frames[1])
                {
                        getEl('splitViewIndicator').src = "../themes/images/splitview_on.png";
                        getEl('fullViewIndicator').src = "../themes/images/fullview_off.png";
                }

                if ( parent.document.all ) parent.document.all['rightView'].rows = "45%,*" ;
                else parent.document.getElementById('rightView').rows = "45%,*";
        }
        else
        {
                with(parent.frames[1])
                {
                        getEl('splitViewIndicator').src = "../themes/images/splitview_off.png";
                        getEl('fullViewIndicator').src = "../themes/images/fullview_on.png";
                }

                if ( parent.document.all ) parent.document.all['rightView'].rows = "100%,*" ;
                else parent.document.getElementById('rightView').rows = "100%,*";
        }
}

//      NEXT STUFF ADDED FOR HTML

function openMessageBasic(msgID,type)
{
         if(type=='0')
                 page = "mail/messageBasic.php?index=" + msgID;
         else
                 page = "mail/composeBasic.php?actionID=draft&index=" + msgID;

         changeCountBasic(msgID);
         window.open(page,"fullmessage","height=520,width=680,status=0,statusbar=0,scrollbars=0,resizable=yes");
}


function changeCountBasic(msgID)
{
        var number;
        var foldersTitle;
        row = getEl('row'+msgID);
        tds = row.getElementsByTagName('td');
        if(tds[2].innerHTML.toLowerCase().indexOf('<b>')!=-1)
        {
                for(i=0; i<tds.length; i++)
                {
                        //text = tds[i].innerHTML.toLowerCase();
                        text = tds[i].innerHTML;
                        text = text.replace('<b>','');
                        text = text.replace('</b>','');
        		text = text.replace('<B>','');
                        text = text.replace('</B>','');
	                tds[i].innerHTML = text;
                }
        }
}

function previewMessageBasic(msgID, mailbox)
{
         page = "message.php?index=" + msgID;
         if( mailbox.length > 0 )
         {
                 page += '&thismailbox=' + mailbox;
         }
         //changeCount(msgID);
         //parent.frames['preview'].location.href = page;
}


function doDoubleClickBasic(which,msgID,type)
{
         var d = new Date();
         dcAt = d.getTime();
         if (savTO != null)
         {
                 clearTimeout( savTO );    // Clear pending Click
                 savTO = null;
         }
         openMessageBasic(msgID,type);
}

function doClickBasic(which,msgID)
{
         // preempt if DC occurred after original click.
         if (savEvtTime - dcAt <= 0)
         {
                 return false;
         }

         pos = msgID.indexOf('&');
         if(pos > 0)
         {
                 id = msgID.substr(0, pos);
                 mailbox = msgID.substr(pos, msgID.length);
         }
         else
         {
                 id = msgID;
                 mailbox = '';
         }

         highlightMessage(id);
         previewMessageBasic(id, mailbox);
         //togglePreview(true);

}


function msgClickHandlerBasic(which,msgID, type)
{
                if ( which == "click" )
                {
                                // If we've just had a doubleclick then ignore it
                                if ( hadDoubleClick() )
                                                return false;
                                // Otherwise set timer to act.  It may be preempted by a doubleclick.
                                messageID = msgID;
                                savEvent = which;
                                d = new Date();
                                savEvtTime = d.getTime();
                                savTO = setTimeout("doClickBasic(savEvent,'"+msgID+"')", dcTime);
                }
                else if ( which == "dblclick" )
                {
                                doDoubleClickBasic(which,msgID,type)
                }
}



//      END HTML STUFF

function scrollMessageList()
{
        eldata = getEl("msgListItems");
        elheader = getEl("msgListHeaders");
        x = eldata.scrollLeft;
        elheader.style.left =- eldata.scrollLeft;
}

function highlightMessage(rowNumber)
{
        rows = getEl('tblMessageList').getElementsByTagName("tr");

        for ( i = 0; i < rows.length; i++ )
        {
                if ( rows.item(i).id == 'row'+rowNumber ){
                        rows.item(i).className = "msgListRowHighlight";
                        }
                else
                        rows.item(i).className = "msgListRow";
        }
        //top.getEl('activeMessage').value = rowNumber;
}

function selectAllMessages(me)
{
        startedList = false;
        checkState = true;
	if ( document.messages.show.checked )
	{
		document.messages.show.checked = false;
		me.src = "/hwebmail/themes/images/false.png";
	}
	else
	{
		document.messages.show.checked = true;
		me.src = "/hwebmail/themes/images/true.png";
	}

        for ( i=document.messages.elements.length-1; i>=0; i--)
        {
                if(document.messages.elements[i].type == 'checkbox' 
                && document.messages.elements[i].name !='show' 
                && document.messages.show.checked 
		!= document.messages.elements[i].checked)
                {
			cname = 'checkImage' + document.messages.elements[i].id.substr(5); 
                        document.messages.elements[i].checked = document.messages.show.checked;
			document.getElementById(cname).src = me.src;
                }
        }
        checkSelectAllMessages();
}

function checkSelectAllMessages()
{
    var uncheck = false;
    var checked = 0;
    var total = 0;

    for ( i=document.messages.elements.length-1; i>=0; i--)
    {
        if(document.messages.elements[i].type == 'checkbox' &&
            document.messages.elements[i].name !='show')
        {
            total++;
            if (document.messages.elements[i].checked == true)
                checked++;
        }
    }
    if ( total == checked )
    {	
        document.messages.show.checked = true;
	document.getElementById('showimg').src = '/hwebmail/themes/images/true.png';
    }
    if ( (total == "0" && checked == "0") || total != checked)
    {	
        document.messages.show.checked = false;
	document.getElementById('showimg').src = '/hwebmail/themes/images/false.png';
    }
}

function hadDoubleClick()
{
        var d = new Date();
        var now = d.getTime();

        if ((now - dcAt) < dcDelay) {
                return true;
        }

        return false;
}

function msgClickHandler(which,msgID, type)
{
        if ( which == "click" )
        {
                // If we've just had a doubleclick then ignore it
                if ( hadDoubleClick() )
                        return false;
                // Otherwise set timer to act.  It may be preempted by a doubleclick.
                messageID = msgID;
                savEvent = which;
                d = new Date();
                savEvtTime = d.getTime();
                savTO = setTimeout("doClick(savEvent,'"+msgID+"')", dcTime);
        }
        else if ( which == "dblclick" )
        {
                doDoubleClick(which,msgID,type)
        }
}

function doClick(which,msgID)
{
        // preempt if DC occurred after original click.
        if (savEvtTime - dcAt <= 0)
        {
                return false;
        }

        pos = msgID.indexOf('&');
        if(pos > 0)
        {
                id = msgID.substr(0, pos);
                mailbox = msgID.substr(pos, msgID.length);
        }
        else 
        {
                id = msgID;
                mailbox = '';
        }

        highlightMessage(id);
        previewMessage(id, mailbox);
        togglePreview(true);

}
 
function doDoubleClick(which,msgID,type)
{
        var d = new Date();
    dcAt = d.getTime();
        if (savTO != null)
        {
                clearTimeout( savTO );    // Clear pending Click
                savTO = null;
        }

        pos = msgID.indexOf('&');
        if(pos > 0)
        {
                id = msgID.substr(0, pos);
                mailbox = msgID.substr(pos, msgID.length);
        }
        else
        {
                id = msgID;
            mailbox = '';
        }
        openMessage(id,type,mailbox);
}


function previewMessage(msgID, mailbox)
{
        page = "message.php?index=" + msgID;
        if( mailbox.length > 0 ) 
        {
                page += '&thismailbox=' + mailbox;
        }
        changeCount(msgID);
        parent.frames['preview'].location.href = page;
}

function parseMessageCount(str)
{
        var number;
        number = str.substr( str.indexOf('('),  str.indexOf(')'));
        number = number.replace( /\)/g,"");
        number = number.replace( /\(/g,"");
        return number;
}


function changeCount(msgID)
{
        var number;
        var foldersTitle;
        row = getEl('row'+msgID);
        tds = row.getElementsByTagName('td');

        if(tds[4].innerHTML.toLowerCase().indexOf('<b>')!=-1)
        {
                // Selected message is bold, remove bold.
                for(i=0; i<tds.length; i++)
                {
                        //text = tds[i].innerHTML.toLowerCase();
                        text = tds[i].innerHTML;
                        text = text.replace('<b>','');
                        text = text.replace('</b>','');
                        text = text.replace('<B>','');
                        text = text.replace('</B>','');
						tds[i].innerHTML = text;
                }
				adjustUnseenCount(0,1); //decrement Unseen count by 1
        }
}

function decrementFolderCount(elementToChange)
{
	if ( elementToChange == "SPAM.incoming" || elementToChange == "mail/SPAM.incoming" )
	{
		elementToChange = "junk";
	}

	if (  elementToChange == "mail/trash" )
	{
		elementToChange = "trash";
	}

	foldersUnreadCount = parseMessageCount(parent.frames['folders'].document.getElementById(elementToChange + "MessageCount").innerHTML);
	foldersUnreadCount = foldersUnreadCount - 1;
	parent.frames['folders'].document.getElementById(elementToChange + "MessageCount" ).innerHTML = " (" + foldersUnreadCount + ")";


}

function adjustUnseenCount(increment, by)
{
	var b = by*1;
	var check  = parent.frames['folders'].getEl;
	if(check != null)
	{
		// folders frame exists
		messageListUnreadCount = parseMessageCount(getEl('newMessageCounter').innerHTML);
		foldersUnreadCount = parseMessageCount(parent.frames['folders'].document.getElementById("unreadMessageCount").innerHTML);
		messageListUnreadCount = messageListUnreadCount * 1;
		foldersUnreadCount = foldersUnreadCount * 1;
		if (increment)
		{
			messageListUnreadCount += by;
			foldersUnreadCount += by;
			if (foldersUnreadCount <= 0)
				foldersUnreadCount = 1;
			if (messageListUnreadCount <= 0)
				messageListUnreadCount = 1;
		}
		else
		{
			messageListUnreadCount -= by;
			foldersUnreadCount -= by;
		}
		var myThismailbox = parent.frames['messages'].document.getElementById("thismailbox").value;

		if ( myThismailbox == "INBOX" )
		{
			if (  foldersUnreadCount <= 0 && increment == 0)
			{
				parent.frames['folders'].document.getElementById("inboxCount").style.fontWeight="normal";
				parent.frames['folders'].document.getElementById("unreadMessageCount").innerHTML = "";
				getEl('newMessageCounter').innerHTML =  "";
				parent.frames['folders'].document.getElementById("unseenCount").value = 0;
			}
			else
			{
				parent.frames['folders'].document.getElementById("inboxCount").style.fontWeight="bold";
				parent.frames['folders'].document.getElementById("unreadMessageCount").innerHTML = "&nbsp;("+foldersUnreadCount+")";
				parent.frames['folders'].document.getElementById("unseenCount").value=foldersUnreadCount;
				getEl('newMessageCounter').innerHTML = "&nbsp;("+messageListUnreadCount+")";
			}
		}
		else
		{
			parent.frames['messages'].document.getElementById("newMessageCounter").innerHTML = "";
			if (  messageListUnreadCount > 0 )
			{
				parent.frames['messages'].document.getElementById("newMessageCounter").innerHTML="&nbsp;("+messageListUnreadCount+")";
			}

			decrementFolderCount(myThismailbox);
		}
	}
}

function openMessage(msgID,type,mailbox)
{
    if(type=='0')
        {
                page = "message.php?index=" + msgID;
                if( mailbox.length > 0 )
                        page += '&thismailbox=' + mailbox;
        }
        else
                page = "compose.php?actionID=draft&index=" + msgID;

        changeCount(msgID);
        window.open(page,"fullmessage","height=520,width=680,status=0,statusbar=0,scrollbars=0,resizable=yes");
}

