



function checkNickname(synchronousCall){
 //    alert("1");
    var elementId = "nickname";
   
 //    alert("2");
setMessage("warn", "prüfen...", elementId);
//    setStyleTextMsg(elementId+"_message", "prüfen...","warn");
//     alert("3");
 
    var nickname = el(elementId).value;
  //   alert("4");

    var parameters="nickname="+escape(nickname);
    
    var current_time = "&time="+escape(new Date().getTime()); 
    parameters+=current_time;
//    parameters= parameters;
    
    
//     alert("parameters='"+parameters+"'");
    
    //var destinationURL = "checknickname.php";
    //postAjaxRequest(destinationURL, parameters,responseCheckNickname );
    
    var destinationURL = "/site/user/register/check_my_nick.php?"+parameters;
    
    
    var returnValue = true;
    if(synchronousCall && synchronousCall!="undefined" && synchronousCall!=null && synchronousCall!="" ){
      returnValue = getSnychronRequest(destinationURL,responseCheckNickname );
    }else{
       getAjaxRequest(destinationURL,responseCheckNickname );
    }
    
   // alert("returnValue: '"+returnValue+"'");
   // var response2 = responseCheckNickname();
//    alert("response code: '"+response1+"'");
    return returnValue;
}

function responseCheckNickname(responseXML) {
  // alert(responseXML);
  var elementId = "nickname";
 // var message_div = "nickname_message";
// alert("1b responseXML:'"+responseXML+"'");
  var responseCode = getTolerantXml(responseXML, "response_code");
//   alert("2b");
  var responseText = getTolerantXml(responseXML, "response_text");
//   alert("3b");
  var displayType = (responseCode>0)?"ok":"error";

 //  alert("4b displayType='"+displayType+"', responseCode='"+responseCode+"', responseText='"+responseText+"', responseXML='"+responseXML+"'");
  
//  setStyleTextMsg(message_div, responseText, displayType);
  setMessage(displayType, responseText, elementId);
  
  var returnValue = (responseCode>0)?true:false;
//  alert("returnValue:'"+returnValue+"'");
  return returnValue;
}

//------------------------------GENERAL FUNCTIONS-------------------------------//


function setStyleTextMsg(elementId, newText, messageType){
//	 alert("1122");
   var elementObject = el(elementId); // in firefox, please use name='' not just id=.. !!!!
//	 alert("elementObject:"+elementObject);
   if(newText!=null && elementObject!=null && elementObject!="undefined"){
     elementObject.innerHTML = newText;
     if(messageType && messageType!=null && messageType!="undefined"){
        var cssClassName = "";
        if(messageType=="error"){
          cssClassName = "checkError"
        }else if(messageType=="warn"){
          cssClassName ="checkWarn";
        }else if(messageType=="ok"){
          cssClassName ="checkOk";
        }
        elementObject.className = cssClassName;
       // alert(elementId+".className='"+elementObject.className+"'");
     }
   }
}

// -------------- PURE AJAX STUFF -------------------------//
function showServerError(req){
//  setText("hellomsg", "ERROR: "+ req.status);
  setStyleTextMsg("nickname_message", "Server Error!", "error");

}

function setXml2Div(xmlResponse, xmlElement, divElement){
 /*
  var xmlChild =  xmlResponse.getElementsByTagName(xmlElement)[0].firstChild;
  // xmlChild is null is the xml element is empty - VERY STRANGE
  var xmlValue=(xmlChild==null)?"":xmlChild.nodeValue;
  */
  var xmlValue = getTolerantXml(xmlResponse, xmlElement);
  el(divElement).innerHTML = xmlValue;
}

function postAjaxRequest(destinationURL, postParameters,responseHandler){
    var req = newXMLHttpRequest();
    req.onreadystatechange = getReadyStateHandler(req, responseHandler);
    req.open("POST", destinationURL, true);
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    req.send(postParameters);
}

function getAjaxRequest(destinationURL, responseHandler){
//	 alert("1");
    var req = newXMLHttpRequest();
//	 alert("2");
    req.onreadystatechange = getReadyStateHandler(req, responseHandler);
    req.open("GET", destinationURL, true);
    req.send(null);
    
//    alert("300");
}

function getSnychronRequest(destinationURL, responseHandler){
    var req = newXMLHttpRequest();
//    req.onreadystatechange = getReadyStateHandler(req, responseHandler);
    req.open("GET", destinationURL, false);
    req.send(null);
    
 //   alert("Response Text:'"+req.responseText+"'")
    
   return responseHandler( req.responseText);
}

function newXMLHttpRequest() {
  var xmlreq = false;
  if (window.XMLHttpRequest) {
    xmlreq = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
        // Try ActiveX
    try { 
      xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e1) { 
      // first method failed 
      try {
        xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e2) {
         // both methods failed 
      } 
    }
  }
    return xmlreq;
} 

function getReadyStateHandler(req, responseXmlHandler) {
  return function () {
    if (req.readyState == 4) {
      if (req.status == 200) {
         //responseXmlHandler(req.responseXML);
         responseXmlHandler(req.responseText);
      } else {
         showServerError(req);
      }
    }
  }
}


// i'm using this function, because Firefox browser doen't like (thinks it's not XML)
// otherwise correct server response if i include user_mgt.php leading 
// to a "dead" response
function getTolerantXml(xmlResponse, xmlElement){

// alert("11");
if(xmlResponse==null||xmlResponse==""||xmlElement==null||xmlElement==""){
  return "";
}
// alert("22");

var startKey= "<"+xmlElement+">";
var endKey= "</"+xmlElement+">";
// alert("33");

var startIx= xmlResponse.indexOf(startKey);
// alert("startIx="+startIx);
startIx+= startKey.length;
// alert("startIx="+startIx);

// alert("4");

var endIx= xmlResponse.indexOf(endKey);

// alert("endIx="+endIx);

var returnValue="";
if(endIx>startIx){
  returnValue=xmlResponse.substr(startIx,endIx- startIx) ;
}
returnValue=unescape(returnValue);

// alert("returnValue='"+returnValue+"'");

return returnValue;


}