function selectAllOptions(obj) {
	for (var i=0; i < obj.options.length; i++) {
	    obj.options[i].selected = true;
        }
}

function moveSelectedOptions(from,to) {
	// Move them over
	for (var i=0; i < from.options.length; i++) {
	    var o = from.options[i];
	    if (o.selected) {
	      to.options[to.options.length] = new Option( o.text, o.value, false, false);
	    }
	}

	// Delete them from original
	for (var i=(from.options.length-1); i>=0; i--) {
	    var o = from.options[i];
	    if (o.selected) {
	       from.options[i] = null;
	    }
	}

	if ((arguments.length<3) || (arguments[2]==true)) {
	   sortSelect(from);
	   sortSelect(to);
	}

	from.selectedIndex = -1;
	to.selectedIndex = -1;
}


function findItem(select, value){
        // Delete them from original
        var result = false;
        for (var i=0; i < select.options.length; i++) {
            if (select.options[i].text == value) {
              result = true;
              break;
            }
       }
      return result;
}


function sortSelect(obj) {
	var o = new Array();
	if (obj.options==null) { return; }
	for (var i=0; i < obj.options.length; i++) {
	    o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;
	}

	if (o.length==0) { return; }
	o = o.sort(
		function(a,b) {
			if ((a.text+"") < (b.text+"")) { return -1; }
			if ((a.text+"") > (b.text+"")) { return 1; }
			return 0;
			}
		);

	for (var i=0; i < o.length; i++) {
	    obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
	}
}


function addOption(op, name){
         op.options[op.options.length] = new Option( name, name, false, false);
}


function deleteOption(op){
	op.options[op.selectedIndex] = null;
}
// Selection options -- End


// Valid Characters -- Start
function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}


function inValidCharSet(str,charset)
{
	var result = true;

	for (var i=0;i < str.length;i++)
	     if (charset.indexOf(str.substr(i,1))<0)
	     {
		result = false;
		break;
	     }

	return result;
}


// Valid Characters -- End
function addItem(from, to){
         if( from.selectedIndex >= 0 && ( allDigits(from.options[from.selectedIndex].text) || from.options[from.selectedIndex].text.charAt(0) == '+') ){
	    deleteOption(from);
         } else {
            moveSelectedOptions(from, to);
         }
}


function addSingle(opTxt, name){
         if( findItem(opTxt, name) ){
            alert("Phone number is already in the list.");
         } else if( allDigits(name) && name.length > 0 ){
	    addOption(opTxt, name);
         } else {
            alert("'Recipient mobile number should not contain any spaces or symbols.");
         }
}

function addCaller(opCaller, opPhoneBook, opNumber ){

	if(opNumber.value.length > 0){
	   addSingle(opCaller, opNumber.value);
	} else {
	   addItem(opPhoneBook, opCaller)
	}
}


function addCallerSms(opCaller, opPhoneBook, opNumber ){

	if(opNumber.value.length > 0){
             
          if(opNumber.value.charAt(0) == '0'){
             alert("Recipient mobile number cannot start with 0. ");
             return false;
           } else if(opNumber.value.length > 50 || opNumber.value.length < 5){
             alert("The length of recipient mobile number should be between 5 and 50. ");
             return false;
           } 

	   addSingle(opCaller, opNumber.value);
	} else {
	   addItem(opPhoneBook, opCaller)
	}
}

