var table_id = 0;

function chkCmntForm() {
    var elem = document.getElementById('title').value;
    if (elem.length == 0) {
	document.getElementById("title").focus();
	alert("Title field is required");
	return false;
    }
    
    return true;
}

function chkMsgForm() {
    if (chkCmntForm() == false) {
        return(false);
    }
    
    var elemSelect = document.getElementById('sharingMsg');
    // alert(elemSelect.value);
    if (elemSelect.value == 0) {
	alert("Sharing Policy is not set");
	return false;
    }
    if (elemSelect.value == 2) {
        // when sharing is hive, need to check one of the hives
        var hiveElem = document.getElementById('sharingHives0');
        if (!hiveElem) {
            alert("You are not a member of any Hives. Please change your sharing policy");
            return false;
        }
    }
    
    return true;
}

function deleteTbl (divId) {
    var elem;
    var i=0;
    
    while (elem = document.getElementById(divId+i)) {
        elem.parentNode.removeChild(elem);
        i++;
    }
    table_id = 0;
}

function displayMsg (divId, msgId, title, msg_date, author, rating,
                     category, sentiment, num_comments, content) {
    var div_elem = document.getElementById(divId);
    var tbl = document.createElement('table');
    var row = tbl.insertRow(tbl.rows.length);
    var i=0;
    
    tbl.id = divId+table_id++;
    tbl.className = 'tfmtMsg';

    // Title cell	
    var cell = row.insertCell(i++);
    cell.colSpan = 4;
    cell.className = (category=='cmnt') ? 'Cmnt' : 'Title';

    var textNode = document.createTextNode(title);
    if (category=='cmnt') {
        cell.appendChild(textNode);
    } else {
        var a = document.createElement('a');
        a.setAttribute('href', 'msgd.php?msg_id=' + msgId);
        a.appendChild(textNode);
        cell.appendChild(a);
    }
    
    // arthur cell
    cell = row.insertCell(i++);
    cell.className = 'Right';
    cell.style.fontStyle = 'italic';
    cell.appendChild(document.createTextNode("By "));
    
    var a = document.createElement('a');
    a.setAttribute('href', 'usr_profile.php?usrid='+author);
    
    textNode = document.createTextNode(author);
    a.appendChild(textNode);
    cell.appendChild(a);
    
    if (category!='cmnt') {    
        // new line
        row = tbl.insertRow(tbl.rows.length);
        i = 0;
        
        // rating cell
        cell = row.insertCell(i++);
        cell.className = 'info';
        cell.style.fontWeight = 'bold';
        if (rating > 3) {
            cell.style.color = 'red';
        }

        var rating_str;
        if (rating>0) {
            rating_str = "rating: "+Math.round(rating*10)/10+'/5';
        } else {
            rating_str = "rating: none";
        }
        cell.appendChild(document.createTextNode(rating_str));

        // category cell
        cell = row.insertCell(i++);
        cell.width = '25%';
        cell.style.fontWeight = 'bold';
        cell.appendChild(document.createTextNode('category: '));
        cell.appendChild(document.createTextNode(category));

        // category cell
        cell = row.insertCell(i++);
        cell.className = 'info2';
        cell.style.fontWeight = 'bold';
        var sentiment_str;
        if (sentiment==1) {
            sentiment_str = 'Bullish';
        } else if (sentiment==2) {
            sentiment_str = 'Bearish';
        } else if (sentiment==3) {
            sentiment_str = 'Neutral';
        } else {
            sentiment_str = '';
        }
        cell.appendChild(document.createTextNode(sentiment_str));

        // num of comments
        cell = row.insertCell(i++);
        cell.className = 'info2';
        if (num_comments > 0) {
            cell.style.fontWeight = 'bold';
        }
        cell.appendChild(document.createTextNode('comments: '+num_comments));
    }
    
    // date cell
    cell = row.insertCell(i++);
    cell.className = 'Right';
    cell.style.fontWeight = 'bold';
    date_str = tstamp2str(msg_date, true);

    cell.appendChild(document.createTextNode(date_str));

    div_elem.appendChild(tbl);

    if (content == 'skip') {
        return;
    }

    // new line
    row = tbl.insertRow(tbl.rows.length);
    // content
    cell = row.insertCell(0);
    cell.colSpan = (category=='cmnt')? 6: 5;
    displayText(cell, content);
}

function displayStockTitle (divId, symbol) {
    var divElem = document.getElementById(divId);

    h2hdr = document.createElement('h3');
    h2hdr.id = divId+table_id++;
    h2hdr.appendChild(document.createTextNode(symbol));
    divElem.appendChild(h2hdr);
}

function deleteMsgResp (req, param) {
    var resp = req.responseText.split(DELIMITER);
    if (resp[0] == 'ok') {
        window.location = 'http://'+getServerName()+'/msgl.php';
    } else {
        alert(resp[0]);
    }
}

function displayDeleteOption (divId, msgId) {
    var div = document.getElementById('deleteMsg');
    var h2 = document.createElement('h2');

    var passwdBox = document.createElement('input');
    passwdBox.type = 'text';
    passwdBox.value = "enter author's passwd";
    
    var delMsgButton = document.createElement('input');
    delMsgButton.value = 'Delete thie Opinion';
    delMsgButton.type = 'button';
    delMsgButton.className = 'button2';
    delMsgButton.onclick = function() {
        var url = 'msg_del_handler.php';
        var data = 'msgid='+msgId+'&pw='+passwdBox.value;
        xmlHttpReq(xmlHttpObj(), url, true, data, deleteMsgResp, 0);
    }
    delMsgButton.onmouseover = function() {
        delMsgButton.className = 'button2hover';
    }
    delMsgButton.onmouseout = function() {
        delMsgButton.className = 'button2';
    }

    h2.appendChild(document.createTextNode('Delete this Opinion'));
    
    div.appendChild(h2);
    var li = document.createElement('li');
    li.className = 'emptyRow';
    div.appendChild(li);
    div.appendChild(passwdBox);
    div.appendChild(delMsgButton);
}

function displayDigg (msgId, title, content) {
    var diggLi = document.getElementById('DiggLogo');
    if (!diggLi) {
        return;
    }

    var shortContent = content.substring(0, 200);
    var a = document.createElement('a');
    a.setAttribute('href', "http://digg.com/submit?phase=2&url=www.investorhives.com/msgd.php?msg_id="+msgId+"&title="+encodeURIComponent(title)+"&topic=business_finance");
    var img = document.createElement('img');
    img.src = "http://digg.com/img/badges/91x17-digg-button.png";
    img.alt = "Digg!";

    a.appendChild(img);
    diggLi.appendChild(a);
}

function displayDelIcio (msgId, title, content) {
    var icioLi = document.getElementById('IcioLogo');
    if (!icioLi) {
        return;
    }    
    var shortContent = content.substring(0, 200);
    var a = document.createElement('a');
    a.setAttribute('href', "http://del.icio.us/post?v=2&url="+encodeURIComponent('www.investorhives.com/msgd.php?msg_id=')+msgId+"&title="+encodeURIComponent(title));
    a.appendChild(document.createTextNode('Add to del.icio.us'));
    icioLi.appendChild(a);
}

// disclosure, own, sharing policy, hive_lists
function displayDiscloAndSharing (divId, msgid, resp) {
    var divElem = document.getElementById(divId);
    if (!divElem) {
        return;
    }
    
    var cell, tbl = document.createElement('table');
    var row = tbl.insertRow(tbl.rows.length);
    var disclosure, caption, date, img, h2hdr, a;
    var i=12, first_time=1;
    
    // alert(resp[i]+' '+resp[i+1]+' '+resp[i+2]);
    while (resp[i] && (resp[i] != 'DISC')) {
        if (first_time) {
            h2hdr = document.createElement('h3');
            h2hdr.appendChild(document.createTextNode('Figures'));
            divElem.appendChild(h2hdr);
            tbl = document.createElement('table');
            tbl.className = 'tfmtMsg';
            
            divElem.appendChild(tbl);            
            row = tbl.insertRow(tbl.rows.length);
            cell = row.insertCell(0);
            
        }
        first_time = 0;

        img_name = resp[i++]; 
        divPic = document.createElement('div');
        divPic.className = 'pic';
        a = document.createElement('a');

        if (img_name.match('.pdf')) {
            //img = document.createElement('embed');
            //img.width = '560px';
            //img.height = '400px';
            a.setAttribute('href', img_name);
            i += 2;

            var pdf_file_cap = resp[i] ? resp[i] : 'click here';
            i++;
            a.appendChild(document.createTextNode(pdf_file_cap));
            divPic.appendChild(document.createTextNode('click to view the attached PDF file: '));
            divPic.appendChild(a);
        } else {
            a.setAttribute('href', 'big_pic.php?fname='+encodeURIComponent(img_name)+'&caption='+encodeURIComponent(resp[i+2])+'&msgid='+msgid);
            img = document.createElement('img');
            img.src = img_name;
            a.appendChild(img);
            divPic.appendChild(a);
            
            caption = document.createElement('p');
            i += 2;
            
            caption.appendChild(document.createTextNode(resp[i++]));
            divPic.appendChild(caption);
        }

        cell.appendChild(divPic);
    }

    i++;
    
    divElem.appendChild(document.createElement('br'));
    h2hdr = document.createElement('h3');
    h2hdr.appendChild(document.createTextNode('Discolsure & Sharing'));
    divElem.appendChild(h2hdr);    

    tbl = document.createElement('table');
    row = tbl.insertRow(tbl.rows.length);    
    tbl.className = 'tfmtMsg';
    cell = row.insertCell(0);
    cell.style.width='210px';    

    cell.appendChild(document.createTextNode('Disclosure:'));
    disclosure = resp[i] ? resp[i] : 'Not Specified';
    cell = row.insertCell(1);
    cell.appendChild(document.createTextNode(disclosure));

    i++;
    row = tbl.insertRow(tbl.rows.length);
    cell = row.insertCell(0);
    cell.appendChild(document.createTextNode('Ownership of any Stocks Mentioned:'));
    cell = row.insertCell(1);
    cell.appendChild(document.createTextNode(resp[i]));

    i++;
    row = tbl.insertRow(tbl.rows.length);
    cell = row.insertCell(0);
    cell.appendChild(document.createTextNode('Opinion Sharing Policy:'));

    divElem.appendChild(tbl);

    cell = row.insertCell(1);
    if (resp[i] != 'Hive Members') {
        cell.appendChild(document.createTextNode(resp[i]));
        return;
    }

    cell.appendChild(document.createTextNode(resp[i]+' of '));

    i++;

    var a, href_val;
    //cell = row.insertCell(1);
    while(resp[i]) {
        a = document.createElement('a');
        href_val = 'hived.php?hiveName=' + resp[i];
        a.setAttribute('href', href_val);
        a.appendChild(document.createTextNode(resp[i]));        
        cell.appendChild(a);
        if (resp[i+1]) {
            cell.appendChild(document.createTextNode(', '));
        }
        i++;
    }
}

function msgLResp (req, xh_param) {
    var divId = xh_param[0];
    var viewer_id = xh_param[2];
    var resp = req.responseText.split(DELIMITER);
    var msgid, msg_type, i=3;
    var prev_stock = 0;
    
    deleteTbl(divId);

    msg_type = resp[2];
    // alert(resp[0]+' '+resp[1]+' '+resp[2]+' '+resp[3]);
    while (resp[i]) {
        switch (msg_type) {
          case 'short':
              displayMsg(divId, resp[i++], resp[i++], resp[i++], resp[i++],
                         resp[i++], resp[i++], resp[i++], resp[i++], resp[i++]);
            break;
            
          case 'detail':
              msgid = resp[i];
              displayDigg(msgid, resp[i+1], resp[i+8]);
              displayDelIcio(msgid, resp[i+1], resp[i+8]);
              if (resp[i+3]==viewer_id) {
                  displayDeleteOption(divId, msgid);
              }

              displayMsg(divId, resp[i++], resp[i++], resp[i++], resp[i++],
                         resp[i++], resp[i++], resp[i++], resp[i++], resp[i++]);
              displayDiscloAndSharing('msgDisclosure', msgid, resp);
              return;
              break;
              
          case 'stock':
              var stock = resp[i+9];
              if ((prev_stock==0) || (prev_stock != stock)) {
                  displayStockTitle(divId, stock);
                  prev_stock = stock;
              }
              displayMsg(divId, resp[i++], resp[i++], resp[i++], resp[i++],
                         resp[i++], resp[i++], resp[i++], resp[i++], resp[i++]);
              i++; // for 7th elem (symbol)
              break;
              
          default:
              break;
        }
              
    }
    displayPages('msglPages', 'msgl.php'+xh_param[1], resp[0], resp[1]);
}

function msgLReqForStock (divId, page) {
    var key = document.getElementById('key').value;
    msgLReq(divId, 's', 0, key, 0, page, 90);
}

function msgLReqForComments (divId, sortBy, numItems, key, pMId, page, msgLen, ok2Disp) {
    if (ok2Disp == 0) {
        return;
    }
    
    msgLReq(divId, sortBy, numItems, key, pMId, page, msgLen);
}

// url format is msgl_handler.php?p_mid=0&sortBy='d'&page=1&short=1
function msgLReq (divId, sortBy, numItems, key, pMId, page, msgLen) {
    var xh_param;
    var url = 'msgl_handler.php';
    if (sortBy == 0) {
        sortBy = 'd';
    }
    
    if (sortBy == 'tonly') {
	return;
    }

    // alert(sortBy+' '+key);
    url_param ='?sort='+sortBy+'&p_mid='+pMId+'&key='+key+'&num='+numItems+
        '&len='+msgLen;
    url_param += '&page='+page;
    if (document.getElementById(divId) != undefined) {
        xh_param = new Array(divId, url_param);
        xmlHttpReq(xmlHttpObj(), url+url_param, true, null, msgLResp, xh_param);
    } 
}

function msgDetailReq (divId, msgId, viewer_id) {
    var url = 'msgd_handler.php';
    var url_param = '?msg_id='+msgId;

    if (document.getElementById(divId) != undefined) {
        var xh_param = new Array(divId, url_param, viewer_id);
        xmlHttpReq(xmlHttpObj(), url+url_param, true, null, msgLResp, xh_param);
    } 
}

var chkBoxId=0;
function displayHivesFor (row, cell, hive_name) {
    var elem = document.createElement('input');
    
    elem.type = 'checkbox';
    elem.name = 'sharingHives'+chkBoxId;
    elem.id = 'sharingHives'+chkBoxId;

    elem.defaultChecked = true;
    elem.checked = true;
    chkBoxId++;
    elem.value = hive_name;
    cell.appendChild(elem);
    cell.appendChild(document.createTextNode(hive_name+'   '));
}

function hiveListForUsrResp (req, tbl) {
    var resp = req.responseText.split(DELIMITER);
    var row = tbl.insertRow(tbl.rows.length);
    var i=2;

    // alert(resp[0], resp[1], resp[2]);
    if (!resp[i]) {
        return;
    }
    
    var cell = row.insertCell(0);
    var textNode = document.createTextNode("Which hives do you want to share: ");
    cell.appendChild(textNode);
    cell.width='190px';

    while (resp[i]) {
        //alert(resp[i]);
        displayHivesFor(row, cell, resp[i++]);
    }
}

function sharingMsgPolicy (elemSel, usrHnd) {
    var url = 'hivel_handler.php';
    var url_param = '?hivel_only=1&usr_hnd='+usrHnd;
    var tbl = document.getElementById('tblShareHiveList');
    
    if (elemSel.value == '2') {
        xmlHttpReq(xmlHttpObj(), url+url_param, true, null, hiveListForUsrResp,
                   tbl);
    } else {

        var i=0;
        // alert(tbl.rows.length);
        while(i<tbl.rows.length) {
            tbl.deleteRow(i++);
            chkBoxId=0;
        }
    }
}

function rateMsgResp (req, ulId) {
    var resp = req.responseText.split(DELIMITER);
    var ul = document.getElementById(ulId);
    if (ul.childNodes[0]) {
        ul.removeChild(ul.childNodes[0]);
    }
    
    var textNode = document.createTextNode(resp[0]);
    ul.appendChild(textNode);
}

function rateMsg (ulId, msgId) {
    var url = 'msgr_handler.php';
    var url_param = '?msgid='+msgId;
    var i, rating, ratingRadio;

    for (i=0; i<5; i++) {
        ratingRadio = document.getElementById("r"+i);
	if (ratingRadio.checked) {
            rating = ratingRadio.value;
            break;
        }
    }

    url_param += '&rate='+rating;
    if (i < 5) {
        xmlHttpReq(xmlHttpObj(), url+url_param, true, null, rateMsgResp, ulId);
    }
}

function bmListResp (req, param) {
    var ulId = param[0];
    var inc_delete = param[1];
    var resp = req.responseText.split(DELIMITER);
    var i=0; 
    
    // alert(resp[0], resp[1], resp[2]);
    if (resp[0] == "no") {
        alert(resp[1]);
        return;
    }    
    var ul = document.getElementById(ulId);
    var msgId;

    while(resp[i]) {
        msgId = resp[i];
        a = document.createElement('a');
        href_val = 'msgd.php?msg_id=' + msgId;
        a.setAttribute('href', href_val);
        a.appendChild(document.createTextNode(resp[i+1]));

        li = document.createElement('li');
        li.appendChild(a);
        ul.appendChild(li);

        if (inc_delete) {
            li.appendChild(document.createTextNode('  '));
            var delButton = document.createElement('input');
            delButton.value = 'delete';
            delButton.type = 'button';
            delButton.className = 'button1';
            delButton.style.fontSize = 9;
            delButton.onclick = function() {
                var href = 'bmark_delete.php?msg_id='+msgId;
                document.location.href = href;
            }
        
            li.appendChild(delButton);
        }

        i+=2;
    }
}

function bmListReq (ulId, inc_del) {
    var url = 'bmark_handler.php';
    var url_param = '?op=l';
    var param = Array(ulId, inc_del);
    xmlHttpReq(xmlHttpObj(), url+url_param, true, null, bmListResp, param);  
}

