﻿var _contacts = 0;
var _checkboxes = 0;

function AddFriend() {
var objInput = document.getElementById(tbFriendEmailID);
var objEmailsCombo = document.getElementById(lbEmailsID);
var objInvalidEmail = document.getElementById("InvalidEmail");
var objEmailExists = document.getElementById("EmailAlreadyExists");
var strEmail = objInput.value;

objInvalidEmail.style.display = "none";
objEmailExists.style.display = "none";

if (strEmail.length == 0)
    return false;

if (!IsValidEmail(strEmail)) {
    objInvalidEmail.style.display = "";
    return false;
}

if (GetEmailIndex(objEmailsCombo, strEmail) >= 0) {
    objEmailExists.style.display = "";    
    return false;
}

objEmailsCombo.options.add(new Option(strEmail, strEmail));
objEmailsCombo.selectedIndex = -1;
EmailSelectionChanged();

if ((_checkboxes) && (_checkboxes[strEmail]))
    _checkboxes[strEmail].checked = true;

RebuildEmails();
objInput.value = "";
return true;
}

function RemoveFriendEmail(objButton) {
var objEmailsCombo = document.getElementById(lbEmailsID);
var arrSelectedEmails = GetSelectedEmails();
var arrToRemove = new Array();
for (var i = 0; i < objEmailsCombo.options.length; i++)
    if (objEmailsCombo.options[i].selected)
        arrToRemove[arrToRemove.length] = objEmailsCombo.options[i];
for (var i = 0; i < arrToRemove.length; i++) {
    objEmailsCombo.removeChild(arrToRemove[i]);
    if ((_checkboxes) && (_checkboxes[arrToRemove[i].value]))
        _checkboxes[arrToRemove[i].value].checked = false;
}
RebuildEmails();
objButton.style.display = "none";
}

function RebuildEmails() {
var objEmailsCombo = document.getElementById(lbEmailsID);
var objEmailsTextBox = document.getElementById(tbEmailsID);
var strEmails = "";
for (var i = 0; i < objEmailsCombo.options.length; i++) {
    strEmails += objEmailsCombo.options[i].value;
    if (i < (objEmailsCombo.options.length-1))
        strEmails += ",";
}
objEmailsTextBox.value = strEmails;
}

function IsValidEmail(s) {
var arrTemp = s.split("@");
if (arrTemp.length != 2)
    return false;
if (arrTemp[0].length == 0)
    return false;
if (arrTemp[1].length == 0)
    return false;
var arrTemp2 = arrTemp[1].split(".");
if (arrTemp2.length < 2)
    return false;
for (var i = 0; i < arrTemp2.length; i++)
    if (arrTemp2[i].length == 0)
        return false;  
return true;
}

function EmailSelectionChanged() {
var objEmailsCombo = document.getElementById(lbEmailsID);
var objButton = document.getElementById("btnRemoveEmail");
var arrSelectedEmails = GetSelectedEmails();
objButton.style.display = (arrSelectedEmails.length > 0) ? "" : "none";
objButton.innerHTML = (arrSelectedEmails.length > 1) ? "Remove selected emails" : "Remove selected email";
}

function GetSelectedEmails() {
var result = new Array();
var objEmailsCombo = document.getElementById(lbEmailsID);
for (var i = 0; i < objEmailsCombo.options.length; i++)
    if (objEmailsCombo.options[i].selected)
        result[result.length] = objEmailsCombo.options[i].value;
return result;
}

function FriendEmailKeyDown(event) {
if (typeof event == "undefined")
    event = window.event;

if (event.keyCode == 13) {
    AddFriend();
    return false;
}

return true;
}

function ImportDetailsKeyDown(event) {
if (typeof event == "undefined")
    event = window.event;

if (event.keyCode == 13) {
    ImportContacts(_ge("btnImportContacts"));
    return false;
}

return true;
}

function GetEmailIndex(objEmailsCombo, strEmail) {
strEmail = strEmail.toLowerCase();
for (var i = 0; i < objEmailsCombo.options.length; i++)
    if (strEmail == objEmailsCombo.options[i].value.toLowerCase())
        return i;
return -1;
}

function ImportContacts(objButton) {
var strEmail = _ge("ImportEmail").value;
var strPassword = _ge("ImportPassword").value;
if (strEmail.length == 0) {
    alert("Please provide your email address from which to import contacts");
    _ge("ImportEmail").focus();
    return false;}
if (!IsValidEmail(strEmail)) {
    alert("Email address is not valid");
    _ge("ImportEmail").focus();
    return false;}
if (strPassword.length == 0) {
    alert("Please provide your password");
    _ge("ImportPassword").focus();
    return false;}
_ge("pImport").style.display = 'none';
_ge("sErrorContainer").innerHTML = "";
objButton.innerHTML = "Please wait...";
objButton.disabled = true;

window.setTimeout("DoImportContacts();", 5);
return true;
}

function DoImportContacts() {
var strEmail = _ge("ImportEmail").value;
var strPassword = _ge("ImportPassword").value;
var objErrorContainer = _ge("sErrorContainer");
objErrorContainer.innerHTML = "";
var response = invitefriend_aspx.ImportContactList(strEmail, strPassword, ImportContacts_CallBack);
}

function ImportContacts_CallBack(response) {
var strResponse = response.value;
var objButton = _ge("btnImportContacts");
var objErrorContainer = _ge("sErrorContainer");
var strERROR = "ERROR: ";
var blnError = false;
if (strResponse.substr(0, strERROR.length) == strERROR) {
    objErrorContainer.innerHTML = "<br />" + strResponse.substr(strERROR.length, strResponse.length);
    blnError = true;
} else {
    var arrContacts = strResponse.split(contactListSecondSeperator);
    var objEmailsCombo = _ge(lbEmailsID);
    _contacts = new Array();
    
    for (var i = 0; i < arrContacts.length; i++) {
        var arrTemp = arrContacts[i].split(contactListFirstSeperator);
        var strName = arrTemp[0];
        var strEmail = arrTemp[1];
        _contacts[_contacts.length] = new Array();
        _contacts[_contacts.length-1][0] = strName;
        _contacts[_contacts.length-1][1] = strEmail;
        _contacts[_contacts.length-1][2] = (GetEmailIndex(objEmailsCombo, strEmail) >= 0);
        if (_contacts[_contacts.length-1][2] == false)
            objEmailsCombo.options.add(new Option(strEmail, strEmail));
    }
    
    objEmailsCombo.selectedIndex = -1;
    EmailSelectionChanged();
    RebuildEmails();
}

objButton.disabled = false;
objButton.innerHTML = "Import";

if (!blnError)
    window.setTimeout("BuildContactList();", 5);    
}

function BuildContactList() {
var objContactList = _ge("ContactList");

while (objContactList.childNodes.length > 0)
    objContactList.removeChild(objContactList.childNodes[0]);

_checkboxes = new Array();

for (var i = 0; i < _contacts.length; i++) {
    var strName   = _contacts[i][0];
    var strEmail  = _contacts[i][1];
    var blnExists = _contacts[i][2];
    var objCheckBox = document.createElement("input");
    var strText = strName;
    if (strText.length == 0)
        strText = strEmail;
    objCheckBox.type = "checkbox";
    objCheckBox.name = "Contact_" + (i+1);
    if ((strName.length > 0) && (strName != strEmail))
        strText += " &lt;" + strEmail + "&gt;";
    objCheckBox.value = strEmail;
    objCheckBox.onclick = new Function("ContactClick(this);");
    objContactList.appendChild(objCheckBox);
    objCheckBox.checked = true; //blnExists;
    _checkboxes[strEmail] = objCheckBox;
    
    var objSpan = document.createElement("span");
    objSpan.innerHTML = strText + "<br />";
    objContactList.appendChild(objSpan);
}

_ge("ImportDetails").style.display = "none";
_ge("ImportEmails").style.display = "";
}

function ContactClick(objCheckbox) {
var strEmail = objCheckbox.value;
var objEmailsCombo = document.getElementById(lbEmailsID);
var index = GetEmailIndex(objEmailsCombo, strEmail);
if (objCheckbox.checked) {
    if (index < 0)
        objEmailsCombo.options.add(new Option(strEmail, strEmail));
} else {
    if (index >= 0)
        objEmailsCombo.removeChild(objEmailsCombo.options[index]);
}
RebuildEmails();
}

function ImportAnother() {
_ge("ImportEmail").value = "";
_ge("ImportPassword").value = "";

_ge("ImportEmails").style.display = "none";
_ge("ImportDetails").style.display = "";
}