// www.NicolaZordan.com 20:44 5/3/2007
//-- Users

//var UsersFile='Data/Users.txt';
var UsersFile='Users.txt';
var UserInvalidLogin='Invalid data';
var UserLoginPage='indexBeta.htm';
var UserCancelPage='http://www.NicolaZordan.net';
var UserDomain='';

var Users=[];
var indexUserName=0; 		// email
var indexUserPassword=1;	// password
var indexUserDomain=2;		// site domain
var indexUserType=3;		// User type (Admin, superuser, ...)

function ReadUsers(fileIn) {
  var data=ReadUsersFile(fileIn);
  Users=[];
  var linesCR=data.replace(/\r/g,'');
  var linesU=linesCR.toUpperCase();
  var lines=linesU.split('\n');
  var userData
  for (i=1;i<lines.length;i++) {
    userData=lines[i].split('\t');
    //user=[trimBlanks(userData[0]),trimBlanks(userData[1])]
    user=userData;
    Users[Users.length]=user;
  };
  return Users;
};

var CryptedFileFlag=true;  
function ReadUsersFile(fileIn) {
  var file=fileIn;
  if (file==null) file=UsersFile;
  var txt=TEXTload(file);
  //-var txt=TEXTloadNoCache(file);
  //alert(txt);
  //var txtD=DeCryptNZ(txt);
  var txtD=txt;  
  //if (CryptedFileFlag) txtD=DeCryptNZ(txt);
  if (CryptedFileFlag) txtD=DecryptNZ(txt,CryptNZkey);
  //if (CryptedFileFlag) txtD=DecryptNZ(txt,CryptCERTkey);
  //alert(txtD);
  //return txt;
  return txtD;
};


// override TEXTload from EMSsendReceive.js
function TEXTloadNoCache (url) {
//alert('no cache');
  //var xmlObj=new ActiveXObject('Microsoft.XMLHTTP');
  var xmlObj=GetXMLHTTP();
  //xmlObj.load(url);
  //xmlObj.open('GET',url,true); // async
  //xmlObj.open('GET',url,false); // sync: OK
  xmlObj.open('POST',url,false); // sync: OK, no cache
  var txt,xml;
/*
  xmlObj.onreadystatechange=function () {
//alert(xmlObj.readyState);
    if (xmlObj.readyState==HTTPdataReceived) {
      txt=xmlObj.responseText;
      xml=xmlObj.responseXML;
    };
  };
*/
//alert('retrieve file: ['+url+']');
  xmlObj.send(null);
  var result=xmlObj.responseText;
alert(url+'\n\n'+'result:\n\n'+result);
  //alert(url+'\nxml:'+xmlObj.responseXML+'\ntext:'+xmlObj.responseText);
  return result;
};




function ValidateUser(userIn,passwordIn,domainIn) {
  var user=userIn.toUpperCase();
  //user=trimBlanks(user);
  var password=passwordIn.toUpperCase();
  password=trimBlanks(password);
  var domain=domainIn;
  //domain=trimBlanks(domain);
  if (domain==null) domain='';
  domain=domain.toUpperCase();
  var u,p,d;
  var found=false;
  var valid=false;
  for (i=0;i<Users.length;i++) {
    u=Users[i][0];
    p=Users[i][1];
    d=Users[i][2];
    if (d==null) d='';
    //d=trimBlanks(d);    
//alert('['+user+']['+user+']\n['+password+']['+p+']\n['+domain+']['+d+']');
    if (d!=domain) continue;
    //u=trimBlanks(u);
    if (user==u) {
      found=true;
      //p=trimBlanks(p);
      if (password==p) {
        valid=true;
      };
      break;
    };
  };
  var ok=(found && valid);
  return ok;
};


function UserType (userIn, domainIn) {
  var type=null;
  var user=userIn.toUpperCase();
  var domain=domainIn;
  //domain=trimBlanks(domain);
  if (domain==null) domain='';
  //var valid=ValidateUser(user,password,domain);
  //if (!valid) return type;
  var u,p,d,t;
  for (i=0;i<Users.length;i++) {
    u=Users[i][0];
    p=Users[i][1];
    d=Users[i][2];
    t=Users[i][3];
    if (d==null) d='';
    //d=trimBlanks(d);    
    if (d!=domain) continue;
    //u=trimBlanks(u);
    if (user==u) {
      //found=true;
      //p=trimBlanks(p);
      //if (password==p) {
        //valid=true;
        type=t;
      //};
      break;
    };
  };
  //var ok=(found && valid);
  //alert(user+'\n['+type+']');
  return type;
};

function UserIsAdmin(user,domain) {
  var isAdmin=false;
  var t=UserType(user,domain);
  if (t==null || t=='') return isAdmin;
  t=trimBlanks(t.toUpperCase());
  isAdmin=(t=='ADMIN');
  return isAdmin;
};

function UserLogIn0(eMail, password, domain) {
  if (Users==null || Users.length<1) {
    ReadUsers();
  };
//alert(user+'\n'+password+'\n'+domain);
  var ok=ValidateUser(eMail,password,domain);
  if (ok) {
    var admin=UserIsAdmin(eMail,domain);
    var loginMessage='LogIn '+eMail;
    if (admin) loginMessage=loginMessage+' ADMIN';
    window.status=loginMessage;
    //alert(loginMessage);
    document.location=UserLoginPage;
   } else {
    alert(UserInvalidLogin);
  };
};

function UserLogIn(eMail, password, domain) {
  if (Users==null || Users.length<1) {
    ReadUsers();
  };
//alert(user+'\n'+password+'\n'+domain);
  var ok=ValidateUser(eMail,password,domain);
  if (ok) {
    var admin=UserIsAdmin(eMail,domain);
    var loginMessage='Login '+eMail;
    if (admin) loginMessage=loginMessage+' ADMIN';
    window.status=loginMessage;
    //alert(loginMessage);
    LoggedInOK(eMail);
    document.location=UserLoginPage;
   } else {
    LoggedOutOK();
    alert(UserInvalidLogin);
  };
};

function UserLogOut() {
    LoggedOutOK();
    //document.location=UserLoginPage;
    //document.location='/';
    //document.location='index.htm';
    document.location=RedirectLocation;    
};

function UserLoggedIn() {
  return LoggedIn;
};

var LeggedInInfoText='LogIn';
function LoggedInInfo() {
  var userLogin=UserLoggedIn();
  if (userLogin==null) {
    return LoggedOutInfo();
  };
  var html='';
  //html=html+'LogIn ';
  html+=LeggedInInfoText+' ';
  html=html+'<a href="mailto:'+userLogin+'">'+userLogin+'</a>';
  html=html+' - ';
  html=html+'<a href="javascript:UserLogOut()">LogOut</a>';
  return html;
};

//var LoggedOutInfoText='NOT LoggedIn';
var LoggedOutInfoText='<font style="color:red">NOT LoggedIn</font>';
function LoggedOutInfo() {
  //var userLogin=UserLoggedIn();
  //if (userLogin==null) {
  //  return LoggedOutInfo();
  //};
  var html='';
  //html=html+'NOT LoggedIn ';
  html+=LoggedOutInfoText+' ';
  //html=html+'<a href="mailto:'+userLogin+'">'+userLogin+'</a>';
  html=html+' - ';
  html=html+'<a href="login.htm">LogIn</a>';
  return html;
};


function trimBlanks(s) {
  if (s==null) return '';
  //var r=s.split(/\s/).join(' '); 
  var r=s.replace(/^\s+|\s+$/g,"");
  //alert('['+s+']\n['+r+']');
  return r;
};

function WriteLoginForm(focus) {
  document.write(LoginFormHTML());
  if (focus!=null) document.getElementById('User').focus();
};

function LoginFormHTML(domainIn) {
  var domain=domainIn;
  if (domain==null) domain=UserDomain;
  if (domain==null) domain='';
  var html='';
  html=html+'<form name="Login" action="javascript:UserLogIn(document.getElementById(\'User\').value,document.getElementById(\'Password\').value,document.getElementById(\'Domain\').value)">';
  html=html+'<table>';
  html=html+'<tr>';
  html=html+'<td colspan="2" align="center">';
  html=html+'<b>Access Control</b>';
  html=html+'</tr>';
  html=html+'<tr>';
  html=html+'<td align="right">';
  html=html+'eMail<!--User-->';
  html=html+'</td><td align="left">';
  html=html+' <input type="hidden" id="Domain" value="'+domain+'" />';
  html=html+' <input type="text" id="User" value="" size="20"/>';
  html=html+'</tr>';
  html=html+'<tr>';
  html=html+'<td align="right">';
  html=html+'Password';
  html=html+'</td><td align="left">';
  html=html+' <input type="password" id="Password" value="" size="20"/>';
  html=html+'</tr>';
  html=html+'<tr>';
  html=html+'<td colspan="2" align="center">';
  html=html+' <input type="submit" value="LogIn"  />';
  html=html+' <input type="button" value="Cancel" onClick="document.location=\''+UserCancelPage+'\'" />';
  html=html+' <!--<input type="button" value="Login" onClick="UserLogIn(document.getElementById(\'User\').value,document.getElementById(\'Password\').value)" />-->';
  html=html+'</tr>';
  html=html+'<tr>';
  html=html+'<td>';
  html=html+'</td><td>';
  html=html+'</tr>';
  html=html+'</table>';
  html=html+'</form>';
  html=html+'';
  return html;
};

// Check Prompt override

//- overrride AskQuestion
function AskQuestion() {
  document.write('<script language="javascript" src="XMLsendReceive.js"></script>');
  WriteLoginForm(true);
};


//-- /Users
