// Removes leading whitespaces
function LTrim( value ) {

        var re = /\s*((\S+\s*)*)/;
        return value.replace(re, "$1");

}

// Removes ending whitespaces
function RTrim( value ) {

        var re = /((\s*\S+)*)\s*/;
        return value.replace(re, "$1");

}

// Removes leading and ending whitespaces
function trimStr( value ) {

        return LTrim(RTrim(value));

}

function get_elem_byid(id)
{

  var elem = (document.getElementById) ? document.getElementById(id) : ((document.all) ? document.all(id) : null);
  return elem;

}

var addressBook = new Array();
var preloadFlag = false;

//-----------------------------------------------
function newImage(arg)
{
  if (document.images)
  {
    rslt = new Image();
    rslt.src = arg;
    return rslt;
  }
}

//-----------------------------------------------
function changeImages()
{
  if (document.images && (preloadFlag == true))
  {
    for (var i=0; i<changeImages.arguments.length; i+=2)
    {
      document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
    }
  }
}

//-----------------------------------------------
function preloadImages()
{

}

//-----------------------------------------------
function MM_preloadImages()
{

var d=document;
if(d.images)
{
  if(!d.MM_p) d.MM_p=new Array();
  var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
  for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0)
    {
      d.MM_p[j]=new Image;
      d.MM_p[j++].src=a[i];
    }
}
}

//-----------------------------------------------
function trim_str(sz)
{

var iStart, iEnd;
var sTrimmed;
var cChar;

iEnd = sz.length - 1;
iStart = 0;
bLoop = true;

cChar = sz.charAt(iStart);
while ((iStart < iEnd) && ((cChar == "\t") || (cChar == " "))){
   iStart ++;
   cChar = sz.charAt(iStart);
}

cChar = sz.charAt(iEnd);
while ((iEnd >= 0) && ((cChar == "\t") || (cChar == " "))){
   iEnd --;
   cChar = sz.charAt(iEnd);
}

if (iStart <= iEnd){
   sTrimmed = sz.substring(iStart, iEnd + 1);
} else {
   sTrimmed = "";
}
return sTrimmed

}

//------------------------------------------------
function contactsToGuestList()
{

var i;
var opt;
var oOption;
        
document.invitForm.invitees.options.length = 0;
                
for (i=0; i<addressBook.length; i++)
{
        //deleted contacts get set to zero length
        if (addressBook[i].length > 0) 
        {
                opt = addressBook[i].split('|');
                if (opt[1] == "") opt[1] = opt[0];
                //oOption = new Option(opt[0], opt[1] + '|' + opt[2]);
                oOption = new Option(opt[1], addressBook[i]);
                //oOption = new Option(opt[0], opt[1] + '|' + opt[2]);
                document.invitForm.invitees.options[document.invitForm.invitees.options.length] = oOption;
        }
}
}

//------------------------------------------------
function addEmails()
{

//if (arguments.length==0) {batch = "1";}

var emails;
var names;

if (document.invitForm.manAddEmail.value != '')
{
	emails = document.invitForm.manAddEmail;
	names = document.invitForm.manAddName;
}
else
{
	if (document.invitForm.add_email)
	{
		emails = document.invitForm.add_email;
		names = document.invitForm.add_name;
	}
}
if (!emails) return;

var bAdded;
var vEmails = new String(emails.value); 
vEmails = vEmails.replace(/\s+/g,' ');
//var arrEmails = vEmails.split(/\s+|,;/);
//alert(vEmails);
var arrEmails = vEmails.split(/[;,\s+]/);
        
var vNames = new String(names.value);
//alert(vNames);
//var arrNames = vNames.split(/[,;\s+]/);
var arrNames = vNames.split(/[,;]/);

if (arrEmails.length > arrNames.length) arrNames.length = arrEmails.length;

var i=0;                        
var oOption;
var val;

for (i=0;i<arrEmails.length;i++)
{
        bAdded = false;
        arrNames[i] = trim_str((arrNames[i]) ? arrNames[i] : arrEmails[i]);
        val = trim_str(arrEmails[i]) + "|" + trim_str(arrNames[i])
        for (j=0;j<document.invitForm.invitees.length;j++)
        {
                if (document.invitForm.invitees.options[j].value == val)
                {
                        bAdded =true;
                        break;
                }
        }
	if (arrEmails[i] == '') {bAdded = true;}
        if(!bAdded)
        {
                oOption = new Option(arrNames[i], val);
                document.invitForm.invitees.options[document.invitForm.invitees.length] = oOption;
        }
}
        
for (i=0;i<document.invitForm.invitees.length;i++)
{
        val = document.invitForm.invitees.options[i].value;
        if (val == '' || val == '|' ||  val == 'default|default')
        {
                document.invitForm.invitees.options[i] = null;
                break;
        }
}
//document.invitForm.manAddEmail.value = '';
emails.value = '';
names.value = '';

return false;
}

//------------------------------------------------
function removeEmails()
{
var callagain = false;
for (i=0;i<document.invitForm.invitees.length;i++)
{
        if (document.invitForm.invitees.options[i].selected == true)
        {
                document.invitForm.invitees.options[i] = null;
                callagain = true;
                break;
        }
}       
if (callagain)
{
        removeEmails();
}
if(document.invitForm.invitees.length > 0)
{
        document.invitForm.invitees.options[0].selected = true;
        document.invitForm.invitees.focus();
}

}

//------------------------------------------------
function openContacts(sid)
{

var i;
var opt;
        
// RESET AddressBook Array
addressBook = new Array();
        
// Populate AddressBook array
for (i=0; i<document.invitForm.invitees.length; i++)
{
        opt = document.invitForm.invitees.options[i];
        if (opt.value != 'default|default')
        {
                //addressBook[i] = opt.text + '|' + opt.value;
                addressBook[i] = opt.value;
        }
}
        
window.open('guestlist.cgi?S='+sid+'&offset=0', 'GroupMembers', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=no,height=500,width=520');
}

//------------------------------------------------
function openContactsEmail(objEmails,objContacts,sid)
{

var i, opt, foundit;

// RESET AddressBook Array
addressBook = new Array();

var emails = objEmails.value.split(",");
var contacts = objContacts.value.split(",");

//var emails = document.invitForm.composeto.value.split(",");
//var contacts = document.invitForm.contacts.value.split(",");

//alert(emails.length+' '+ncontacts);

var ncontacts = contacts.length;
for (i=0; i<emails.length; i++)
{
	foundit = false;
	for (j=0; j<ncontacts; j++)
	{
		opt = contacts[j].split('|');
		if (emails[i] == opt[0]) {foundit = true;}
	}
	if (!foundit) {contacts[contacts.length] = emails[i]+'|'+emails[i];}
}

var nemails = emails.length;
for (i=0; i<contacts.length; i++)
{
	opt = contacts[i].split('|');
	foundit = false;
	for (j=0; j<nemails; j++)
	{
		if (emails[j] == opt[0]) {foundit = true;}
	}
	if (!foundit) {contacts[i] = '|';}
}

objContacts.value = contacts.join(",");
//document.invitForm.contacts.value = contacts.join(",");

// Populate AddressBook array
for (i=0; i<contacts.length; i++)
{
	//alert('contacts[i] = '+contacts[i]);
        //if (contacts[i] != 'default|default' && contacts[i] != '' && contacts[i] != '|')
        if (contacts[i] != 'default|default')
        {
                addressBook[i] = contacts[i];
        }
}

window.open('guestlist.cgi?S='+sid+'&offset=0', 'GroupMembers', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=no,height=500,width=520');

}

function getCheckedValue(radioObj)
{
	if(!radioObj) return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++)
	{
		if(radioObj[i].checked)
		{
			return radioObj[i].value;
		}
	}
	return "";
}

function stopSubmitOnReturn(myfield,e)
{

var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
{
  return false;
}
else
{
   return true;
}

}

//----------------------------------
function randomString(length)
{
  chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
  pass = "";
  for(x=0;x<length;x++)
  {
    i = Math.floor(Math.random() * 62);
    pass += chars.charAt(i);
  }
  return pass;
}

//----------------------------------
function randomKey(length)
{
  chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()';
  pass = "";
  for(x=0;x<length;x++)
  {
    i = Math.floor(Math.random() * 72);
    pass += chars.charAt(i);
  }
  return pass;
}

//----------------------------------
function strIsURL(url)
{
  var url_re = /^(http(s)?\:\/\/|ftp\:\/\/)?([\w_-]{2,}\.)+([\w_-]{2,})((\/)(\~)[\w_-]+)?((\/)[\w_-]+)*((\/)|(\/)[\w_-]+\.[\w]{2,})?((\?[\w_-]+\=([^\#]+)){0,1}(\&[\w_-]+\=([^\#]+))*)?(#[\w_-]+)?$/i;
  if (url_re.test(url)) return true;
  return false;

}


