function chkHiveForm() {
    var hiveNameObj = document.getElementById("hiveName");
    var filter  = /^([a-zA-Z0-9_\-])+$/;

    if (!filter.test(hiveNameObj.value)) {
	hiveNameObj.focus();
        alert("Hive name cannot contain space or special characters");
        return false;
    }
    // alert(hiveNameObj.value);
}

function hiveListMemberResp (req, param) {
    var resp = req.responseText.split(DELIMITER);
    var i=2;

    while (resp[i]) {
        // alert(resp[i]);
        if (resp[i] == 'HD') {
            displayHiveAndMembers(resp, i+1);
        }
        i++;
    }
    displayPages('hivelPages', 'hivel.php', resp[0], resp[1]);
}

function hiveListMemberReq (page, sort, max_num) {
    var url = 'hivel_handler.php';
    var url_param = '?sort='+sort+'&num='+max_num+'&page='+page;

    xmlHttpReq(xmlHttpObj(), url+url_param, true, null, hiveListMemberResp, 0);
}

function hiveListResp (req, param) {
    var resp = req.responseText.split(DELIMITER);
    var i=2;

    var ul = document.getElementById(param);

    // alert(resp[0]+' '+resp[1]+' '+resp[2]);
    while (resp[i]) {
        displayHives(ul, resp, i++);
    }
}

function hiveListReq (ulElem, page, sort, max_num) {
    var url = 'hivel_handler.php';
    var url_param = '?hivel_only=1&sort='+sort+'&num='+max_num+'&page=0';

    xmlHttpReq(xmlHttpObj(), url+url_param, true, null, hiveListResp, ulElem);
}

function hiveDetailResp (req, param) {
    var resp = req.responseText.split(DELIMITER);
    // alert(resp[0]+' '+resp[1]+' '+resp[2]+' '+resp[3]+' '+resp[4]+' '+resp[5]);
    displayHiveDetail(resp, 1);
}

// Get list of hives which user belongs to
function hiveListForReq (ulElem) {
    var url = 'hivel_handler.php';
    var url_param = '?sort=n&hivel_only=1&sess_usr=1';
    xmlHttpReq(xmlHttpObj(), url+url_param, true, null, hiveListForResp, ulElem);
}

// same as hiveListForReq, but different input param
function hiveListForReqWithUsrId (ulElem, usrId) {
    var url = 'hivel_handler.php';
    var url_param = '?sort=n&hivel_only=1&usr_id='+usrId;
    xmlHttpReq(xmlHttpObj(), url+url_param, true, null, hiveListResp, ulElem);
}

function hiveListForResp (req, param) {
    var resp = req.responseText.split(DELIMITER);
    var i=2;

    var ul = document.getElementById(param);
    while (resp[i]) {
        displayHivesAcc(ul, resp, i++);
    }
}

// when select which hives to set the sharing policy 
function displayHivesAcc(ul, hives, idx) {
    var li = document.createElement('li');
    var a = document.createElement('a');
    var href_val = 'hivea.php?hiveName=' + hives[idx];
    
    a.setAttribute('href', href_val);
    a.appendChild(document.createTextNode(hives[idx]));
    li.appendChild(a);
    ul.appendChild(li);
}

function hiveDetailReq (hive) {
    var url = 'hived_handler.php';
    var url_param = '?hiveName='+hive;

    xmlHttpReq(xmlHttpObj(), url+url_param, true, null, hiveDetailResp, 0);
}

// same as displayHivesACC but with different href value
function displayHives (ul, hives, idx) {
    var li = document.createElement('li');
    var a = document.createElement('a');
    var href_val = 'hived.php?hiveName=' + hives[idx];
    
    a.setAttribute('href', href_val);
    a.appendChild(document.createTextNode(hives[idx]));
    li.appendChild(a);
    ul.appendChild(li);
}
    
function displayHiveAndMembers (hiveMembers, idx) {
    var no_members = true;
    var tbl = document.getElementById('tblHiveMembersList');
    var lastRow = tbl.rows.length;
    var row = tbl.insertRow(lastRow)

     // hive name
    var cell = row.insertCell(0);
    cell.className="left";
    var a = document.createElement('a');
    var href_val = 'hived.php?hiveName=' + hiveMembers[idx];
    a.setAttribute('href', href_val);
    var textNode = document.createTextNode(hiveMembers[idx]);
    a.appendChild(textNode);
    cell.appendChild(a);

    // description
    cell = row.insertCell(1);
    cell.className="left";
    textNode = document.createTextNode(hiveMembers[idx+1]);
    cell.appendChild(textNode);

    // goal
    cell = row.insertCell(2);
    textNode = document.createTextNode(hiveMembers[idx+2]);
    cell.appendChild(textNode);

    // hive leader
    var cell = row.insertCell(3);
    var a = document.createElement('a');
    var href_val = 'usr_profile.php?usrid=' + hiveMembers[idx+3];
    a.setAttribute('href', href_val);
    textNode = document.createTextNode(hiveMembers[idx+3]);
    a.appendChild(textNode);
    cell.appendChild(a);

    cell = row.insertCell(4);
    var j = 0;
    for (var i=idx+4; hiveMembers[i] && (hiveMembers[i] != 'HD'); i++) {
	if (j++ > 4) {
            textNode = document.createTextNode('...');
            cell.appendChild(textNode);            
            break;
        }
        var a = document.createElement('a');
        var href_val = 'usr_profile.php?usrid=' + hiveMembers[i];
        a.setAttribute('href', href_val);
        textNode = document.createTextNode(hiveMembers[i]);
        a.appendChild(textNode);
        cell.appendChild(a);

        if (hiveMembers[i+1]) {
            textNode = document.createTextNode('  ');
            cell.appendChild(textNode);            
        }
        no_members = false;
    }

    if (no_members) {
        textNode = document.createTextNode('no members');
        cell.appendChild(textNode);
    }
}

function displayHiveDetail (hiveDesc, idx) {
    var i, no_members = true;
    var ul = document.getElementById('ulHiveDetail');

    var li = document.createElement('h1');
    var textNode = document.createTextNode('Name');
    li.appendChild(textNode);
    ul.appendChild(li);

    li = document.createElement('p');
    textNode = document.createTextNode(hiveDesc[idx]);
    li.appendChild(textNode);
    ul.appendChild(li);
    
    li = document.createElement('h1');
    textNode = document.createTextNode('Description');
    li.appendChild(textNode);
    ul.appendChild(li);

    li = document.createElement('p');
    displayText(li, hiveDesc[idx+1]);
    ul.appendChild(li);

    li = document.createElement('h1');
    var textNode = document.createTextNode('Investment Goal');
    li.appendChild(textNode);
    ul.appendChild(li);

    li = document.createElement('p');
    var textNode = document.createTextNode(hiveDesc[idx+2]);
    li.appendChild(textNode);
    ul.appendChild(li);

    li = document.createElement('h1');
    var textNode = document.createTextNode('Hive Leader');
    li.appendChild(textNode);
    ul.appendChild(li);

    li = document.createElement('p');
    var a = document.createElement('a');
    var href_val = 'usr_profile.php?usrid=' + hiveDesc[idx+3];
    a.setAttribute('href', href_val);
    textNode = document.createTextNode(hiveDesc[idx+3]);
    a.appendChild(textNode);
    li.appendChild(a);
    ul.appendChild(li);

    li = document.createElement('h1');
    var textNode = document.createTextNode('Members');
    li.appendChild(textNode);
    ul.appendChild(li);

    li = document.createElement('p');
    
    for (var i=idx+4; hiveDesc[i]; i++) {
        a = document.createElement('a');
        href_val = 'usr_profile.php?usrid=' + hiveDesc[i];
        a.setAttribute('href', href_val);
        textNode = document.createTextNode(hiveDesc[i]);
        a.appendChild(textNode);
        li.appendChild(a);
        li.appendChild(document.createTextNode('  '));
        
        ul.appendChild(li);

        no_members = false;
    }

    if (no_members) {
        textNode = document.createTextNode('no members');
        li.appendChild(textNode);
    }

    ul.appendChild(li);        
}

