
function register() {
 var names = trim(document.getElementById("names").value);
 var username = trim(document.getElementById("username").value);
 var phone = document.getElementById("phone").value;
 var email = trim(document.getElementById("email").value);
 //var senderid = trim(document.getElementById("senderid").value);
 var senderid = phone;
 if(names.length < 2) {
  showmsg("Names not valid/too short", "red");
  setTimeout("clrmsg()", 3000); 
  document.getElementById("names").focus(); return;
 }
 if(username.length < 3) {
  showmsg("Username not valid/too short", "red");
  setTimeout("clrmsg()", 3000); 
  document.getElementById("username").focus(); return;
 }
 if(phone.length < 10) {
  showmsg("Phone number not valid", "red");
  setTimeout("clrmsg()", 3000); 
  document.getElementById("phone").focus(); return;
 }
 var regex = /^[A-z0-9][\w.-]*@[A-z0-9][\w\-\.]+\.[A-z0-9]{2,6}$/;
 if(!email.match(regex)) {
  showmsg("Email address not valid", "red");
  setTimeout("clrmsg()", 3000); 
  document.getElementById("email").focus(); return;
 }
 var args = "action=register&names=" + encode(names) + "&username=" + encode(username) + "&phone=" + 
 encode(phone) + "&email=" + encode(email) + "&senderid=" + encode (senderid) + "&rand=" + new Date().getTime();
 if(!confirm("Your password will be sent to the address " + email + "\nAre you sure its correct?")) return;
 var request = createHttpRequest(); 
 request.open("POST", "action.php", true);
 request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 request.onreadystatechange = function() {
  if(request.readyState < 4 && request.readyState !=2)
   showmsg("Registering...", "blue");
  if (request.readyState == 4) {
	if(request.responseText == "0")
	 showmsg("Registration failed. Please try again", "red");
	else if(request.responseText == "1") {
	 showmsg("Registration successful", "green");
	 alert("Registration successful. Please check your email for your password");
	 setTimeout("window.self.close()", 3000);
	}
	else {
	 document.getElementById("notice").innerHTML = "&nbsp;";
	 alert(request.responseText);
	}
  }
 }
 request.send(args); 
}

function setgroups(){
 var request = createHttpRequest();
 if(request == null) return;
 var url = "action.php?action=setgroups&cache=" + new Date().getTime();
 request.open("GET", url, true);
 request.onreadystatechange = function(){
  if (request.readyState == 4){
   //var addgname = document.getElementById("addgname");
   //var editgname = document.getElementById("editgname");
   //var grps = document.getElementById("groups");
   var gname = document.getElementById("gname");
   var groups = request.responseText.split("|");
   for(var i=0; i<groups.length; i++){
    if(inlist(groups[i], gname) == false && groups[i] != "") {
     gname.options[gname.options.length] = new Option(groups[i]);
	 //addgname.options[addgname.options.length].value = groups[i];
	}
    //if(inlist(groups[i], editgname) == false && groups[i] != "") {
     //editgname.options[editgname.options.length] = new Option(groups[i]);
	 //editgname.options[editgname.options.length].value = groups[i];
	//}
   }
  }
 }
 request.send(null);
}

function creategroup() {
 var gname = trim(document.getElementById("gname").value);
 var gdesc = trim(document.getElementById("gdesc").value);
 if(gname.length == 0) {
  showmsg("Specify a group name", "red");
  return;
 }
 var request = createHttpRequest();
 var url = "action.php?action=creategroup&gname=" + encode(gname) + "&gdesc=" + encode(gdesc) + "&cache=" + new Date().getTime();
 request.open("GET", url, true); 
 request.onreadystatechange = function() {
 if(request.readyState < 4 && request.readyState !=2)
   showmsg("Creating group...", "blue");
  if (request.readyState == 4) {
   if(request.responseText == "1") {
    showmsg("Group has been created", "green");
    document.getElementById("gname").value = "";
    document.getElementById("gdesc").value = "";
	window.opener.location.replace("phonebk.php");
    //setTimeout("window.self.close()", 2000);
   }
   else if(request.responseText == "0") 
    showmsg("Failed to create group. Please try again", "red");
   else if(request.responseText == "-1")
    showmsg("This group exists aleady", "red");
  }
 }
 request.send(null);
}

function addcontact() {
 var names = trim(document.getElementById("names").value);
 var phone = document.getElementById("phone").value;
 var indx = document.getElementById("gname").selectedIndex;
 var gname = indx >=0 ? document.getElementById("gname").options[indx].text : "";
 if(names.length < 2){
  showmsg("Contact names please", "red"); return;
 }
 if(phone.length == 0 || phone.length < 10){
  showmsg("Specify a valid phone number", "red"); return;
 }
 var request = createHttpRequest();
 var url = "action.php?action=addcontact&names=" + encode(names) + "&gname=" +
           encode(gname) + "&phone=" + encode(phone) + "&cache=" + new Date().getTime();
 request.open("GET", url, true);
 request.onreadystatechange = function() {
  if(request.readyState < 4 && request.readyState !=2)
   showmsg("Adding contact...", "blue");
  if (request.readyState == 4) {
   if(request.responseText == 1) {
    showmsg("Contact has been added", "green");
    document.getElementById("phone").value = "";
    document.getElementById("names").value = "";
   }
   else if(request.responseText == 0)
    showmsg("Failed to add contact. Contact exists", "red");
   else if(request.responseText == -1)
    showmsg("Unknown group <font color=blue>" + gname
			+"</font>. Create this group first", "red");
  }
 }
 request.send(null);
}

function loadentries(){
 var grps = document.getElementById("groups"); 
 var gname = grps.options[grps.options.selectedIndex].text;
 var request = createHttpRequest();
 var url = "action.php?action=loadentries&gname="+ encode(gname)+ "&cache=" + new Date().getTime();
 request.open("GET", url, true);
 request.onreadystatechange = function() {
  if(request.readyState < 4 && request.readyState !=2)
   document.getElementById("phonebook").innerHTML = "<font color='blue'>Loading...</font>";
  if (request.readyState == 4){
   document.getElementById("phonebook").innerHTML = request.responseText; 
   groupname = gname;
  }
 }
 request.send(null);
}

function loadgroups(){
 var request = createHttpRequest();
 var url = "action.php?action=loadgroups&cache=" + new Date().getTime();
 request.open("GET", url, true);
 request.onreadystatechange = function() {
  if(request.readyState < 4 && request.readyState !=2)
   document.getElementById("phgroups").innerHTML = "<font color='blue'>Loading...</font>";
  if (request.readyState == 4){
   document.getElementById("phgroups").innerHTML = request.responseText; 
  }
 }
 request.send(null);
}

function deletecontact(phone) {
 var request = createHttpRequest();
 var url = "action.php?action=deletecontact&phone="+ encode(phone)+ "&cache=" + new Date().getTime();
 request.open("GET", url, true);
 request.onreadystatechange = function() {
  if(request.readyState < 4 && request.readyState !=2)
   showmsg("Deleting...", "blue");
  if (request.readyState == 4){
   showmsg("Deleted contact detail <font color=blue>" + phone + "</font>", "green");
   loadentries();
  }
 }
 request.send(null);
}

function savegrp() { 
 if(!confirm("Are you sure?")) return;
 var request = createHttpRequest(); 
 var ogname = document.getElementById("ogname").value; 
 var gname = document.getElementById("gname").value; //alert(gname);
 var gdesc = document.getElementById("gdesc").value; //alert(gdesc);
 var url = "action.php?action=savegrp&ogname="+ encode(ogname) + "&gname=" + encode(gname) + 
 "&gdesc=" + encode(gdesc) + "&cache=" + new Date().getTime();
 //alert(url); return;
 request.open("GET", url, true);
 request.onreadystatechange = function() {
  if(request.readyState < 4 && request.readyState !=2)
   showmsg("Saving...", "blue");
  if (request.readyState == 4){
   showmsg("Details saved", "green");
   window.opener.location.replace("phonebk.php");
   setTimeout("window.self.close()", 2000);
  }
 }
 request.send(null);
}

function update() {
 var phone = document.getElementById("phone").value;
 var newno = document.getElementById("newphone").value;
 var newnames = document.getElementById("names").value;
 var indx = document.getElementById("gname").selectedIndex;
 var gname = document.getElementById("gname").options[indx].text;
 if(phone.length == 0) {
  showmsg("Select a contact to edit", "red"); 
  setTimeout("window.self.close()", 2000);
  return;
 }
 if(phone.length < 10) {
  showmsg("New phone number not valid", "red"); 
  document.getElementById("newphone").focus();
  return;
 }
 if(!confirm("Are you sure?")) return;
 var request = createHttpRequest(); 
 var url = "action.php?action=updatedetails&names=" + encode(newnames)+ "&gname="+ encode(gname) +
            "&phone="+encode(phone)+"&newno=" + encode(newno) + "&rand=" + new Date().getTime();;
 request.open("GET", url, true); 
 request.onreadystatechange = function() {
  if(request.readyState < 4 && request.readyState !=2)
  showmsg("Saving...", "blue");
  if (request.readyState == 4) {
   var phone = document.getElementById("phone").value = "";
   var newno = document.getElementById("newphone").value = "";
   var newnames = document.getElementById("names").value = "";
   showmsg("Contact has been updated", "green");
   setTimeout("window.self.close()", 2000);
  }
 }
 request.send(null);
}
/*
function send() {
 var msg = trim(document.getElementById("message").value);
 var sender = trim(document.getElementById("sender").value);
 var phone = document.getElementById("phone").value;
 if(msg.length == 0) {
  showmsg("Please compose a message", "red"); 
  document.getElementById("message").focus(); 
  setTimeout("clrmsg()", 3000); return;
 }
 if(sender.length == 0) {
  showmsg("Sender not set", "red"); 
  document.getElementById("sender").focus(); 
  setTimeout("clrmsg()", 3000); return;
 }
 
 if(phone.length < 10) {
    showmsg("Phone number not valid <font color=blue>" + phone +"</font>", "red"); 
    document.getElementById("phone").focus(); 
	setTimeout("clrmsg()", 3000); return;
  }
 args = "action=send&msg=" + encode(msg) + "&rec=" + encode(phone) + "&from=" + 
 encode(sender) + "&rand=" + new Date().getTime();
 var request = createHttpRequest(); 
 request.open("POST", "action.php", true);
 request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 request.onreadystatechange = function() {
  if(request.readyState < 4 && request.readyState !=2) {
   showmsg("Sending message...", "blue");
   document.getElementById("sendbtn").disabled = true;
  }
  if (request.readyState == 4) {
   if(request.responseText == "1") {
    showmsg("Message sent", "#0000ff");
	document.getElementById("message").value = "";
    document.getElementById("phone").value = "";
	document.getElementById("chars").value = "145";
	document.getElementById("message").focus();
	document.getElementById("sendbtn").disabled = false;
	//setTimeout("clrmsg()", 5000);
   }
   else {
	showmsg("Message not sent", "red");
	document.getElementById("sendbtn").disabled = false;
	if(request.responseText.match(/^you only/i))
	 alert(request.responseText);
	else alert("error");
	setTimeout("clrmsg()", 5000);
   }
  }
 }
 request.send(args);
}

function send2() {
 var msg = trim(window.opener.document.getElementById("message").value);
 var sender = trim(window.opener.document.getElementById("sender").value);

 if(msg.length == 0) {
  showmsg("No message found", "red"); 
  setTimeout("clrmsg()", 3000); return;
 }
 
 if(sender.length == 0) {
  showmsg("Sender not set", "red"); 
  setTimeout("clrmsg()", 3000); return;
 }
 
 var list = document.getElementById("list");
 if(list.options.length == 0) {
  showmsg("Input some numbers", "red");
  setTimeout("clrmsg()", 3000); return;
 }
 
 var rec = list.options[0].text + ",";
 for(var i=0; i < list.options.length; i++) rec += list.options[i].text + ",";
 rec = rec.substring(0, rec.length-1);
 var args = "action=send&msg=" + encode(msg) + "&rec=" + encode(rec)  + "&from=" + 
 encode(sender) + "&rand=" + new Date().getTime();
 var request = createHttpRequest(); 
 request.open("POST", "action.php", true);
 request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 request.onreadystatechange = function() {
  if(request.readyState < 4 && request.readyState !=2)
   showmsg("Sending message...", "blue");
  if (request.readyState == 4) {
   if(request.responseText == "1") {
    showmsg("Message sent", "green");
	window.opener.document.getElementById("message").value = "";
    window.opener.document.getElementById("phone").value = "";
	window.opener.document.getElementById("chars").value = "145";
	setTimeout("window.self.close()", 3000);
   }
   else {
	showmsg("Message not sent", "red");
	alert(request.responseText);
	setTimeout("clrmsg()", 4000);
   }
  }
 }
 request.send(args);
}
*/
function send3() {
 var msg = trim(document.getElementById("message").value);
 var sender = trim(document.getElementById("sender").value);
 if(msg.length == 0) {
  showmsg("Please compose a message", "red"); 
  document.getElementById("message").focus(); 
  setTimeout("clrmsg()", 3000); return;
 }
 if(sender.length == 0) {
  showmsg("Sender not set", "red"); 
  document.getElementById("sender").focus(); 
  setTimeout("clrmsg()", 3000); return;
 }
 var rec = "";
 var field = document.getElementById("phone");
 if(!field.disabled) {
  if(field.value.length == 0) {
   showmsg("No recpient(s) specified", "#ff0000"); 
   setTimeout("clrmsg()", 3000); return;
  }
  var str = trim(field.value);
  if(str.charAt(str.length -1) == ',')
   str = str.substr(0, str.length-1);
  var arr = str.split(",");
  for(var i=0; i<arr.length; i++) {
   if(trim(arr[i]).length < 10 || trim(arr[i]).length > 15) {
    alert("Number not valid: " + arr[i] + "\nPlease correct it"); return;
   }
   else rec += trim(arr[i]) + ",";
  }
  rec = rec.substr(0, rec.length -1);
 }
 else {
  var list = document.getElementById("list");
  if(list.options.length == 0) {
   showmsg("Input some numbers", "red");
   document.getElementById('numbers').focus();
   setTimeout("clrmsg()", 3000); return;
  }  
  list.options[0].text + ",";
  for(var i=0; i < list.options.length; i++) rec += list.options[i].text + ",";
  rec = rec.substring(0, rec.length-1);
 }
 //alert(rec); return;
 var args = "action=send&msg=" + encode(msg) + "&rec=" + encode(rec) + "&from=" + 
 encode(sender) + "&rand=" + new Date().getTime();
 var request = createHttpRequest(); 
 request.open("POST", "action.php", true);
 request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 request.onreadystatechange = function() {
  if(request.readyState < 4 && request.readyState !=2) {
   showmsg("Sending message...", "blue");
   document.getElementById("sendbtn").disabled = true;
  }
  if (request.readyState == 4) {
   if(request.responseText == "1") {
    showmsg("Message sent", "green");
	document.getElementById("message").value = "";
    document.getElementById("phone").value = "";
	document.getElementById("chars").value = "145";
	document.getElementById("message").focus();
	document.getElementById("sendbtn").disabled = false;
	document.getElementById("phone").disabled = false;
	document.getElementById("phone").className = "line";
	document.getElementById("bulk").innerHTML = '';
	//setTimeout("clrmsg()", 5000);
   }
   else {
	showmsg("Message not sent", "red");
	document.getElementById("sendbtn").disabled = false;
	if(request.responseText.match(/^you only/i))
	 alert(request.responseText);
	else alert("error");
	setTimeout("clrmsg()", 5000);
   }
  }
 }
 request.send(args);
}

function sh_bulk_var() {
 var request = createHttpRequest();
 request.open("GET", "action.php?action=shbulkvar&rand=" + new Date().getTime(), true);
 request.onreadystatechange = function() {
  if(request.readyState < 4 && request.readyState !=2)
   showmsg("Please wait...", "#000000");
  if (request.readyState == 4) {
   showmsg('');
   document.getElementById('bulk').innerHTML = request.responseText;
   add2();
  }
 }
 request.send(null); 
}

function createHttpRequest(){
  var request;
  try{request = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch(e){
   try{request = new ActiveXObject("Microsoft.XMLHTTP");}
   catch(e){request = new XMLHttpRequest(); }
 }
 return request; 
}

function encode(s) {
 return encodeURIComponent(s);
}