/* 
 * httpops.js -- JavaScript module for interacting with server side.
 * Author: Muhammad Abdulla. 
 * Copyleft 2005.
 */

var userid ;  
var count = 0 ;

var regreg ; // HTTPXML object for registration requests
var chkreq ; // HTTPXML object for checking username availability 
var logreq ; // HTTPXML object for login requests 
var mldreq ; // HTTPXML object for mainbody load 

function new_req ( )
{
   var newreq ;

   try {
      if (window.XMLHttpRequest) {
         newreq = new XMLHttpRequest();
      // branch for IE/Windows ActiveX version
      } else if (window.ActiveXObject) {
         newreq = new ActiveXObject("Microsoft.XMLHTTP");
      }
   } catch (e) {
      // do nothing here
   }

   return newreq ;
}

/********************* Check Username Availability **********************/

function validateuserid(suserid) {
   chkreq = new_req() ;

   userid = suserid ; 
   var url = "/cgi/checkuser?userid=" + userid;

   if ( userid == "" ) { // don't check blank usernames
      var d = document.getElementById ( "regstatus" ) ;
      d.innerHTML = "" ;
      d.style.display = "none" ;
      return ; 
   }
     
   // Execute the request
   try {
      if (chkreq) {
         chkreq.onreadystatechange = updateRegStatus ;
         chkreq.open("GET", url, true);
         chkreq.send(null);
      }
   } catch (e) {
      // do nothing
   }
}

function updateRegStatus () {
   var d = document.getElementById ( "regstatus" ) ;

   switch (chkreq.readyState) {
      case 1:
         break ;
      case 2:
         break;
      case 3:
         //d.style.display = "block" ;
         break;
      case 4:
         if (chkreq.status == 200) {
            if (chkreq.responseText == "exists") {
                stext = uly2uy ( 'bu isim bashqilargha birilip bolghan!' ) ;
                d.innerHTML = stext ;
                d.style.display = "block" ;
            } else {
                // don't distract user
                d.innerHTML = "" ;
                d.style.display = "none" ;
            }
         } else {
            // don't scare the user for not being able to validate at this time
         }
         break;
   }    
}

/************************ Process Login Request ****************************/

function request_login() {
   logreq = new_req() ;

   var d = document.getElementById ( "logstatus" ) ;
   var url = "/projects/authmail.php" ;

   var user = document.getElementById ( 'user' ).value ;
   var pwd  = document.getElementById ( 'pwd' ).value ;

   // general form of POST data: req.send('var1=data1&var2=data2');
   data = "user=" + user + "&pwd=" + pwd ;

   if ( user == "" || pwd == "" ) { // don't check blank usernames
      stext = uly2uy ( "uchurlarni toluq toldurung!" ) ;
      d.innerHTML = stext ;
      d.style.display = "block" ;
      return ; 
   } else {
      d.innerHTML = "" ;
      d.style.display = "none" ;
   }
     
   // Execute the request
   try {
      if (logreq) {
         logreq.onreadystatechange = checkLogin ;

         // GET method will be cached, not desirable authentication, so using POST
         logreq.open( 'POST', url, true );
         logreq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
         logreq.send( data );
      }
   } catch (e) {
      // do nothing
   }

   return false ;
}

function checkLogin () {
   var d = document.getElementById ( "logstatus" ) ;

   switch (logreq.readyState) {
      case 1:
         d.style.color = 'Blue' ;
         stext = uly2uy ( 'uchur ewetildi, saqlap turung ...' ) ;
         d.innerHTML = stext ;
         d.style.display = "block" ;
         break ;
      case 2:
         break;
      case 3:
         break;
      case 4:
         if (logreq.status == 200) {
            if (logreq.responseText == "fail") {
                d.style.color = 'Red' ;
                stext = uly2uy ( 'isim yaki parolda xataliq bar!' ) ;
                d.innerHTML = stext ;
                d.style.display = "block" ;
            } else {
                // don't distract user
                d.innerHTML = "" ;
                d.style.display = "none" ;
                updateUserUI ( logreq.responseText ) ;
            }
         } else {
            // don't scare the user for not being able to validate at this time
         }
         break;
   }    
}

function updateUserUI ( info )
{
   var msgarr = info.split ( '\n' ) ;
   var uyname = "" ;  // user's name in Uyghur
   var nonewmsg = 0 ; // number of new message in mailbox
   var winletOpsHtml = "" ;
   var line = "" ;
   var subarr ;

   var s = document.getElementById ( "sideDiv" ) ;
   var d = document.getElementById ( "winlet-operations" ) ;

   var duser = document.getElementById ( 'user' ) ;
   var dpwd  = document.getElementById ( 'pwd' ) ;

   var dlogin = document.getElementById ( 'login' ) ;

   var user = duser.value ;
   var pwd = dpwd.value ;

   // parse lines of information returned by authenticator
   for ( i = 1 ; i < msgarr.length ; i++ ) { // first line is 'success' message, skip
      line = msgarr[i] ;

      if ( line.indexOf ( "uyname:" ) == 0 ) {
         subarr = line.split ( ':' ) ;
         uyname = subarr[1] ;
      } else if ( line.indexOf ( "nomsg:" ) == 0 ) {
         subarr = line.split ( ':' ) ;
         nonewmsg = subarr[1] ;
      } else if ( line.indexOf ( "sidediv:" ) == 0 ) { 
         // the rest is sidediv content
         for ( j = i + 1 ; j < msgarr.length ; j++ ) {
            line = msgarr[j] ;
            winletOpsHtml += line + "\n" ;
         }
         break ; // out of 
      }
   }

   // authentication is successful, set user and pwd cookies for future requests
   document.cookie = "user=" + user ;
   document.cookie = "pwd=" + pwd ;
   setCookie ( "uyname", uyname ) ;
   setCookie ( "winletOpsHtml", winletOpsHtml ) ;

   // clear password information in login form, and hide the form 
   dpwd.value = "" ;
   handle ( 'mainbody' ) ; // show main body of page

   d.innerHTML = winletOpsHtml ;

   s.style.display = "block" ;

   // this should come after setting uyname cookie
   displayGreeting() ;

   // hide login/register bar, and show user info bar
   handle_bar ( "authbar" ) ;
}

/***************** End of Process Login Request ****************************/


/******************** Process Mainbody Load Request ************************/

function mload ( which, id ) {
   mldreq = new_req() ;

   var url = "content.php?which=" + which ;

   if ( id ) {
      url += "&id=" + id ;
   }

   // Execute the request
   try {
      if (mldreq) {
         mldreq.onreadystatechange = updateMainBody ;
         mldreq.open("POST", url, true);
         mldreq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
         mldreq.send(null);
      }
   } catch (e) {
      // do nothing
   }
}

function updateMainBody () {
   var d = document.getElementById ( "mainbody" ) ;

   switch (mldreq.readyState) {
      case 1:
         break ;
      case 2:
         break;
      case 3:
         break;
      case 4:
         if (mldreq.status == 200) {
            d.innerHTML = mldreq.responseText ;
            d.style.display = "block" ;
         } else {
            // don't scare the user for not being able to validate at this time
         }
         break;
   }    
}

/******************** End of Process Mainbody Load Request *****************/
