
var userLogin = '';
var userPassword = '';
var boLoginUrl = '';

function Ajax()
{
  this.req = null;
  this.url = null;
  this.method = 'GET';
  this.async = true;
  this.status = null;
  this.statusText = '';
  this.postData = null;
  this.readyState = null;
  this.responseText = null;
  this.responseXML = null;
  this.handleResp = null;
  this.responseFormat = 'text'; // 'text', 'xml' or 'object'
  this.mimeType = null;


  this.init = function() 
  {
    if (!this.req) 
    {
      try 
      {
        //Try to create object for Firefox, Safari, IE7, etc.
        this.req = new XMLHttpRequest();
      }
      catch (e)
      {
        try
        {
          //Try to create object for later version of IE
          this.req = new ActiveXObject('MSXML2.XMLHTTP');
        }
        catch (e) 
        {
          try 
          {
            //Try to create object for early versions of IE.
            this.req = new ActiveXObject('Microsoft.XMLHTTP');
          }
          catch (e)
          {
            //Could not create an XLMHttpRequest object.
            return false;
          }
        }
      }
    }
    return this.req;
  };
  
  this.doReq = function() 
  {
    if(!this.init())
    {
      alert('Could not create XMLHttpRequest object.');
      return;
    }
    this.req.open(this.method, this.url, this.async);
    
    if(this.mimeType)
    {
      try
      {
        req.overrideMimeType(this.mimeType);
      }
      catch (e)
      {
        //could not override mime type -- IE6 or Opera?
      }
    }
    
    var self = this; // Fix loss-of-scope in inner function
    this.req.onreadystatechange = function() 
    {
var aaa = self.req.readyState;
	if(self.req.readyState == 4)
      { 
        switch (self.responseFormat) 
        {
          case 'text':
            resp = self.req.responseText;
            break;
          case 'xml':
            resp = self.req.responseXML;
            break;
          case 'object':
            resp = req;
            break;
        }
        if (self.req.status >= 199 && self.req.status <= 299)
        {
          self.handleResp(resp);
        }
        else
        {
          self.handleErr(resp);
        }
      }
    };
    this.req.send(this.postData);
  };
  
  this.setMimeType = function(mimeType)
  {
    this.mimeType = mimeType;
  }

  
  this.handleErr = function()
  {
    var errorWin;
    try
    {
      //errorWin = window.open('', 'errorWin');
      //errorWin.document.body.innerHTML = this.responseText;
      alert('error: ' + this.responseText);
    }
    catch (e)
    {
      alert('An error occurred, but the error message cannot be displayed... Status Code:' + this.req.status + '\n' + 'Status Description: ' + this.req.statusText);
    }
  }
  
/*  
  this.setHandlerBoth = function(funcRef)
  {
    this.handleResp = funcRef;
    this.handleErr = funcRef; 
  }
  */
  this.abort = function() 
  {
    if(this.req) 
    {
      this.req.onreadystatechange = function() { };
      this.req.abort();
      this.req = null;
    }  
  }
  
  this.doGet = function(url, hand, format) 
  {
    this.url = url;
    this.handleResp = hand;
  //  this.responseFormat = format || 'text';
    this.responseFormat = format;
    this.doReq();
  };
  
}

function getFormValues(fobj,valFunc) 
{ 

  var str = ""; 
  var valueArr = null; 
  var val = ""; 
  var cmd = ""; 
  
  for(var i = 0;i < fobj.elements.length;i++) 
  { 
    switch(fobj.elements[i].type) 
    { 
      case "text": 
      case "password": 
      case "hidden": 
      case "textarea": 
        if(valFunc) 
        { 
          //use single quotes for argument so that the value of 
          //fobj.elements[i].value is treated as a string not a literal 
          cmd = valFunc + "(" + 'fobj.elements[i].value' + ")"; 
          val = eval(cmd) 
        } 
        str += fobj.elements[i].name + 
        "=" + escape(fobj.elements[i].value) + "&"; 
        break; 
      case "select-one": 
        str += fobj.elements[i].name + 
        "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&"; 
        break; 
    } 
  } 
  str = str.substr(0,(str.length - 1)); 
  
  return str; 
}

var registerStatus = function(str) 
{
  var tmpObj = null;
  tmpObj = str.getElementsByTagName('login');
  var login = tmpObj[0];
  tmpObj = str.getElementsByTagName('password')
  var password = tmpObj[0];
  
  var loginStatus = login.getAttribute("status");
  var passwordStatus = password.getAttribute("status");
  
  reorganizeLoginPage();
  displayWaitingPage('false');
  
  if(loginStatus == 'faild')
  {
    var loginMessages = login.getElementsByTagName('errMessage');
    var errMsgLogin = document.getElementById('errMsgLogin');
    errMsgLogin.innerHTML = generateErrorMessageList(loginMessages);
  }
  else 
  {
    var errMsgLogin = document.getElementById('errMsgLogin');
    errMsgLogin.innerHTML = '';
    //alert('login ok');
  }
  
  if(passwordStatus == 'faild')
  {
    var passwordMessages = password.getElementsByTagName('errMessage');
    var errMsgLogin = document.getElementById('errMsgPassword');
    errMsgLogin.innerHTML = generateErrorMessageList(passwordMessages);
  }
  else 
  {
    //alert('pass ok');
    var errMsgLogin = document.getElementById('errMsgPassword');
    errMsgLogin.innerHTML = '';
  }
  ///uzytkownik został dodany, nastąpi przekierowanie
  if(loginStatus == 'ok' && passwordStatus == 'ok')
  {
    var registerBox = document.getElementById('registerBox');
    
    var redirectionStr = '<form action="'+boLoginUrl+'" method="get" name="DetailView" id="formLogin2" >';
    
    redirectionStr += '<h3>Konto utworzone.<br><br> Proszę czekać...</h3> Jeśli po chwili nie zostałeś przekierowany do nowej strony, naciśnij poniższy link: <a onClick="document.forms[\'DetailView\'].submit();" href="javascript://">dodawanie ogłoszenia</a>';
    
    redirectionStr += '<input type="hidden" name="module" value="Users">';
    redirectionStr += '<input type="hidden" name="action" value="Authenticate">';
    redirectionStr += '<input type="hidden" name="return_module" value="Users">';
    redirectionStr += '<input type="hidden" name="return_action" value="Login">';
    redirectionStr += '<input type="hidden" id="cant_login" name="cant_login" value="">';
    redirectionStr += '<input type="hidden" name="login_module" value="">';
    redirectionStr += '<input type="hidden" name="login_action" value="">';
    redirectionStr += '<input type="hidden" name="login_record" value="">';
    redirectionStr += '<input type="hidden" id="user_name" name="user_name"  value="'+userLogin+'"/>';
    redirectionStr += '<input type="hidden" id="user_password" name="user_password" value="'+userPassword+'"/>';
    //redirectionStr += '<input class="button" type="submit" id="login_button" name="Login" value="Zaloguj się">';
    redirectionStr += '</form>';
//     redirectionStr += '<script language="javascript"><!-- document.forms[\'DetailView\'].submit(); --></script>';
//     alert(redirectionStr);
    registerBox.innerHTML = redirectionStr; 
    document.getElementById('formLogin2').submit();
  }
  
}

function registerUser(formValues)
{
  var ajax = new Ajax();
  ajax.setMimeType('text/xml');
  
  userLogin = document.forms['form2'].elements['new_login'].value;
  userPassword = document.forms['form2'].elements['new_pass'].value;
  boLoginUrl = document.forms['form2'].elements['boLoginUrl'].value;
  
  var getData = getFormValues(formValues);
  ajax.doGet('/ajaxTest.php?'+getData, registerStatus, 'xml');
}

function reorganizeLoginPage()
{
  var loginBox = document.getElementById('loginBox');
  var registerBox = document.getElementById('registerBox');
  
  //hide loginBox
//  loginBox.style.width = "10px";
  loginBox.style.display = "none";
  //resize registerBox
  //registerBox.style.margin = "0px 0px 0px 0px";
  registerBox.style.float = "left";
  registerBox.style.width = "300px";
}

function generateErrorMessageList(messages)
{
  var strInnerHTML = '<ul>';
  for(i=0;i<messages.length;i++)
  {
    strInnerHTML += '<li>' + messages[i].firstChild.nodeValue + '</li>';
  }
  strInnerHTML += '</ul>';
  return strInnerHTML;
}


var submitContactForm = function(str) 
{
  var objTemp = null;
  var tempAttrHTMLElementName = null;
  var tempAttrHTMLValue = null;
  var errLen = 0;
  
  var errorElements = str.getElementsByTagName('errorElement');
  var confirmElements = str.getElementsByTagName('confirmElement');
  var confirmationMessage = str.getElementsByTagName('confirmationMessage');
  var a = 1;

  if(confirmElements.length > 0)
  {
    errLen = confirmElements.length;
    for(i=0; i<errLen; i++)
    {
      tempAttrHTMLElementName = confirmElements[i].getAttribute("name");
      objTemp = document.getElementById('errMsg_'+tempAttrHTMLElementName);
      if(objTemp != null)
      {
        objTemp.innerHTML = '';
      }
    }
  }


  if(errorElements.length > 0)
  {
    errLen = errorElements.length;
    for(i=0; i<errLen; i++)
    {
      tempAttrHTMLElementName = errorElements[i].getAttribute("name");
      tempAttrHTMLValue = errorElements[i].getAttribute("message");
      
      objTemp = document.getElementById('errMsg_'+tempAttrHTMLElementName);
      if(objTemp != null)
      {
        objTemp.innerHTML = tempAttrHTMLValue;
      }
    }
  }
  else
  {
    objTemp = document.getElementById('contact_form');
    if(objTemp != null)
    {
      objTemp.innerHTML = '<h4>'+confirmationMessage[0].getAttribute("message")+'</h4>';
    }
  
  }
  
  displayWaitingPage('false');

}

//submit Contact Form
function contactForm(formValues)
{
  var ajax = new Ajax();
  ajax.setMimeType('text/xml');
  
  var getData = getFormValues(formValues);
  ajax.doGet('/index.php?'+getData, submitContactForm, 'xml');
}



