function trimString (str)
{
 while (str.substring(0,1) == ' ')
 {
  str= str.substring(1, str.length);
 }
 while (str.substring(str.length-1, str.length) == ' ')
 {
  str = str.substring(0,str.length-1);
 }
 return str;
}

function valid_email(theValue)
{
	if (theValue.length < 4)
    {
    	alert("Email is invalid.");
    	return false;
    }
    else if ((theValue.indexOf("@") != -1) && 
          (theValue.indexOf("@") < theValue.lastIndexOf(".")))
    {
    	return true;
    }
    else 
    {
    	alert("Use a proper email");
    }    
    return false;
}

function submitForm(id) {
	var form = document.getElementById(id);
//	for (var j=0; j < form.elements.length; j++) {
//		var elem = form.elements[j];
//		alert(elem.name + ' is ' + elem.value);
//	}
	form.submit();
}

function submitLogin() {
	
	var form = document.login;
	form.email.value = trimString(form.email.value);
	if (! valid_email(form.email.value)) {
		return;
	}
	
    form.pw.value = trimString(form.pw.value);
    if (form.pw.value.length < 4) {
		alert("Enter your password to login.");
		return;
	}	

	form.submit();
}

function submitLoginByKey() {
	
	var form = document.loginbykey;
	form.otp.value = trimString(form.otp.value);
    if (form.otp.value.length < 10) {
		alert("Click on your Umikey button to log in");
		return;
	} else {
		form.submit();
	}
}

function clearInput(id)
{
	document.getElementById(id).value='';
}

function popup (url, h)
{
  //Create a new window
  var newWin = window.open(url, "", 
   'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=600,height=' + h);
  newWin.focus();
}

function confirmRemove(formName) {
	var form = document.getElementById(formName);
	if (!confirm("Do you really want to remove it?")) {
		form.remove.value = 0;
		//form.submit();
		//window.location=history.go(-1);
	} else {
		form.submit();		
	}
}

function focusInput() {
    document.forms[0][0].focus();
}

function ismaxlength(obj){
	var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
	if (obj.getAttribute && obj.value.length>mlength)
	obj.value=obj.value.substring(0,mlength)
}

var addKeyShown = false;
var disablePWShown = false;

function submitKeyMgmtForm(act) {
	var form = document.keymgmt;
	form.act.value = act;
	form.submit();
}

function showAddKey() 
{
    if (addKeyShown) {
		document.getElementById('addkey').innerHTML = '';
    	addKeyShown = false;
    } else {
        document.getElementById('addkey').innerHTML = '<form method=post action=key_mgmt.php id=addyubikey name=addyubikey>\
<input name=act value=newkey type=hidden>\
<table border=0 width=80%>\
<tr><td colspan=2><b>First, make sure the admin Umikey you add here is owned by you already.</b></td></tr>\
<tr><td>&nbsp;&nbsp;&nbsp;Use a password to protect the account access:</td>\
<td align=left><input name=pin id=pin size=20 maxlength=80 type=password>\
</td></tr>\
<tr><td>&nbsp;&nbsp;&nbsp;Add a note about this Umikey:</td>\
<td align=left><input name=note id=note size=45 maxlength=45>\
</td></tr>\
<tr><td>&nbsp;&nbsp;&nbsp;Press the button on your Umikey:</td>\
<td align=left><input name=otp id=otp size=45 maxlength=100></td></tr>\
<tr><td align=center colspan=9>\
<br><input type=button class=buttonLinkO value=" Add Admin Key "\
onClick="submitForm(\'addyubikey\');">\
</td></tr></table></form>';
        addKeyShown = true;
    }
}

function showImpExpKey(opt, client) 
{
//	alert('addKeyShown = ' + addKeyShown);
   
    if (opt == 1) { // Import keys
	
		document.getElementById('impkey').innerHTML = 
        	document.getElementById('expkeys').innerHTML = '';
        document.getElementById('impkeys').innerHTML = '<form method=post action=import_keys.php id=add_keys name=add_keys enctype="multipart/form-data">\
<input name=act value=impkeys type=hidden>\
<table border=0 width=100%>\
<tr><td colspan=2>\
<h4>Upload a comma-separated text file with following fields like the example below:</h4>\
<font color=red><b>The "id" column in your import file will be ignored</b></font><p>\
<img src=images/csv_sample.jpg><br><br>\
<font color=red><b>*</b></font> Optional fields: serial, userID, note<br>\
<font color=red><b>*</b></font> tokenId and secret are in base64 format<br>\
</td></tr>\
<tr><td align=center>\
<input name=fname type=file size=40 class=button>\
</td>\
<td align=left>\
<input type=submit class=buttonLinkO value="Import">\
</td></tr></table></form>';

	} else if (opt == 2) { // Export keys
		
		document.getElementById('impkey').innerHTML=
			document.getElementById('impkeys').innerHTML='';
        document.getElementById('expkeys').innerHTML = '<form method=post action=import_keys.php id=add_keys name=add_keys enctype="multipart/form-data">\
<input name=act value=expkeys type=hidden>\
<table border=0 width=100%>\
<tr><td nowrap colspan=2>\
<b>Export key information from ID: <input name=from size=5> to:\
<input name=to size=5> &nbsp;\
<input type=submit class=buttonLinkO value="Export"> \
<a href=javascript:expandtab(\'maintab\',0)>&nbsp; <b>Find Umikey IDs »</a>\
</td></tr></table></form>';			
	
    } else { // Add a new key
    
        document.getElementById('impkeys').innerHTML = 
        	document.getElementById('expkeys').innerHTML = '';
        
        if (client > 1) { // Non-Root client
        
        document.getElementById('impkey').innerHTML = '<form method=post action=import_keys.php id=add_key name=add_key>\
<input name=act value=impkey type=hidden>\
<table border=0 width=100%>\
<tr><td>Client-ID:</td>\
<td align=left><input name=client readonly id=client size=8 maxlength=20 value=' + client + '>\
</td></tr>\
<tr><td>Key User ID:</td>\
<td align=left><input name=user_id id=user_id size=8 maxlength=19>\
</td></tr>\
<tr><td>Secret (b64 format):</td>\
<td align=left><input name=sec id=sec size=60 maxlength=200>\
 &nbsp;<font color=#888888>Eg. zdsWj3f7n3Ynx/BO5nU0BA==\
</td></tr>\
<tr><td>Life Cycle State:</td>\
<td align=left><select name=active>\
<option value="1">Active\
<option value="0">Inactive\
</select>\
</td></tr>\
<tr><td>Note About This Key:</td>\
<td align=left><input name=notes id=notes size=60 maxlength=99>\
</td></tr>\
<tr><td>Key ID or OTP (modhex format):</td>\
<td align=left><input name=otp id=otp size=60 maxlength=99>\
 &nbsp;<font color=#888888>Eg. ededbivllvkkjcvt</td></tr>\
<tr><td colspan=2 align=center><br><input type=submit class=buttonLinkO value="Add It">\
</td></tr></table></form>';

		} else { // Root client

		        document.getElementById('impkey').innerHTML = '<form method=post action=import_keys.php id=add_key name=add_key>\
<input name=act value=impkey type=hidden>\
<table border=0 width=100%>\
<tr><td>Client ID</td>\
<td align=left><input name=client id=client size=8 maxlength=19 value=' + client + '>\
</td></tr>\
<tr><td> Key User ID </td>\
<td align=left><input name=user_id id=user_id size=8 maxlength=19>\
</td></tr>\
<tr><td>Secret (b64 format):</td>\
<td align=left><input name=sec id=sec size=60 maxlength=200>\
 <font color=#888888>Eg. zdsWj3f7n3Ynx/BO5nU0BA==\
</td></tr>\
<tr><td>Life Cycle State:</td>\
<td align=left><select name=active>\
<option value="1">Active\
<option value="0">Inactive\
</select>\
</td></tr>\
<tr><td>Note About This Key:</td>\
<td align=left><input name=notes id=notes size=60 maxlength=99>\
</td></tr>\
<tr><td>Key ID or OTP (modhex format):</td>\
<td align=left><input name=otp id=otp size=60 maxlength=99>\
 <font color=#888888>Eg. bivllvkkjcvt</td></tr>\
<tr><td colspan=2 align=center><br><input type=submit class=buttonLinkO value="Add It">\
</td></tr></table></form>';
		}
    }
}

function ismaxlength(obj){
    var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
    if (obj.getAttribute && obj.value.length>mlength)
    obj.value=obj.value.substring(0,mlength)
}

function submitAddClient() {
	
	var form = document.add_client;
	
	form.email.value = trimString(form.email.value);
	if (form.email.value.length < 5) {
		alert("Enter the client's email");
		return;
	} else if (! valid_email(form.email.value)) {
		return;
	} else if (form.buyer.value.length < 5) {
		alert("Enter the client's name");
		return;
	} else if (form.addr.value.length < 5) {
		alert("Enter the client's address");
		return;
	}

	form.otp.value = trimString(form.otp.value);
	form.pin.value = trimString(form.pin.value);
	
	if (form.otp.value.length > 1 && form.pin.value.length < 4) {
		alert("Missing password");
		return;
	}
	
	form.submit();
}
//Tracy jiang Umi 
function submitAddadmin(){
	var form =document.sub_client;
	form.email.value = trimString(form.email.value);
	if(form.email.length < 5){
		alert("Enter the client's email");
		return;
	}else if(form.api_key.value == ""){
		alert("Enter the client's api");
		return;
	}else if(form.otp.value == ""){
		alert("Enter the client's otp");
		return;
	}else if(form.pin.value == ""){
		alert("Enter the client's pin");
		return;
	}
	form.submit();
}
//Tracy jiang Umi 

function submitAddAdminKey() {
	
	var form = document.add_admin_key;
	
	form.client_id.value = trimString(form.client_id.value);
	if (form.client_id.value.length < 1) {
		alert("Enter the client's ID");
		return;
	}

	form.otp.value = trimString(form.otp.value);
	if (form.otp.value.length < 10) {
		alert("Generte an OTP from the client's Umikey");
		return;
	}

	form.pin.value = trimString(form.pin.value);
	if (form.pin.value.length < 1) {
		alert("Missing password!");
		return;
	}
	
	form.submit();
}

function notImplemented() {
	alert('Not yet implemented, coming soon...');
}

function isNumeric(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
}

