﻿


var USERNAMEREGEX = /^([a-zA-Z0-9]{3,14})$/;
var PWDREGEX = /^([a-zA-Z0-9]{5,20})$/;




/**
*
*	send the create character request to the webservice
*
**/
function createCharacterRequest(callback, username, email, password, bodyType, skinType, gender, color, partnerID, betacode, lingu, ipaddress){ 	
	var uname = document.getElementById(username).value;
	var em = document.getElementById(email).value;
	var pwd = document.getElementById(password).value;
 	var body = getRadioValue(document.getElementsByName(bodyType));
 	var skin = getRadioValue(document.getElementsByName(skinType));
	var gen = getRadioValue(document.getElementsByName(gender));
	var col = getRadioValue(document.getElementsByName(color));
	var code = document.getElementById(betacode).value;
	var lingua = document.getElementById(lingu).value;
	var ip = document.getElementById(ipaddress).value;
	
	//alert( uname+" | "+em+" | "+pwd+" | "+body+" | "+skin+" | "+gen+" | "+col+" | "+code+" | "+lingua+" | "+ip );

	if (USERNAMEREGEX.exec(uname) && 
			PWDREGEX.exec(pwd) &&
			em.length > 0 ){
		
		var pl = new SOAPClientParameters(); 	
		pl.add("characterName", uname);
		pl.add("characterEmail", em);	 	 
		pl.add("characterPassword", pwd);	
		pl.add("bodyType", body);	 	 	 
		pl.add("skinType",skin);	 	 	 
		pl.add("gender", gen);	 	 	 
		pl.add("color", col);	 	 
		pl.add("partnerID", partnerID);	 	 	 
		pl.add("betacode", code);	 	 	 
		pl.add("language", lingua);	 	 	 
		pl.add("ipaddress", ip);
	 
  	SOAPClient.invoke(createCharacterRequestURL, "createCharacter", pl, true, callback);
  }else{
  	var returnval= new Object();
  	returnval.responseCode = new Object ();
  	returnval.responseCode = "fieldsmissing";
  	callback(returnval);
  }
}


function createCharacterRequestPlain(callback, username, email, password, bodyType, skinType, gender, color, partnerID, betacode, lingu, ipaddress, assets_outfit, assets_hair){ 
	
	var uname = document.getElementById(username).value;
	var em = document.getElementById(email).value;
	var pwd = document.getElementById(password).value;
 	var body = document.getElementById(bodyType).value;
 	var skin = document.getElementById(skinType).value;
	var gen = document.getElementById(gender).value;
	var col = document.getElementById(color).value;
	var pid = document.getElementById(partnerID).value;
	var code = document.getElementById(betacode).value;
	var lingua = document.getElementById(lingu).value;
	var ip = document.getElementById(ipaddress).value;
	
	var ao = document.getElementById(assets_outfit).value;
	var ah = document.getElementById(assets_hair).value;
	var assets;
	if ( ao.length > 0 && ah.length > 0 ){
		assets = ao + " " + ah;
	}else{
		assets = ao + ah;
	}
	
	//alert( uname+" | "+em+" | "+pwd+" | "+body+" | "+skin+" | "+gen+" | "+col+" | "+code+" | "+lingua+" | "+ip+" | "+pid +" | "+assets);
	

	if (USERNAMEREGEX.exec(uname) && 
			PWDREGEX.exec(pwd) &&
			document.getElementById("retypepassword").value == document.getElementById("password").value &&
			em.length > 0 &&
			document.getElementById("legalterms").checked ){
		
		var pl = new SOAPClientParameters(); 	
		pl.add("characterName", uname);
		pl.add("characterEmail", em);	 	 
		pl.add("characterPassword", pwd);	
		pl.add("bodyType", body);	 	 	 
		pl.add("skinType",skin);	 	 	 
		pl.add("gender", gen);	 	 	
		pl.add("color", col);	 	 
		pl.add("partnerID", pid);	 	 	 
		if ( assets.length > 0 ){
			pl.add("assets", assets); 		 	 	 
		}
		pl.add("mint", 0);
		pl.add("betacode", code);	 	 	 
		pl.add("language", lingua);	
		if ( ip.length > 0 ){
			pl.add("ipaddress", ip);
		} 		
	
	
	SOAPClient.invoke(createCharacterRequestURL+"?requestType=direct&service=CreateCharacterService", "createCharacter", pl, true, callback);
	//var returnval= new Object();
	//returnval.responseCode = new Object ();
	//returnval.responseCode = 0;
	//createCharacterCallback(null);
	
	 
  }else{
  	var returnval= new Object();
  	returnval.responseCode = new Object ();
  	
  	if ( em.length < 1 || uname.length < 1 ){
  		returnval.responseCode = "fieldsmissing";
  	}else if ( !USERNAMEREGEX.exec(uname) ){
  		returnval.responseCode = "usernameNotValid";
  	}else if ( !PWDREGEX.exec(pwd) || document.getElementById("retypepassword").value != document.getElementById("password").value){
  		returnval.responseCode = "passwordNotValid";
  	}else if ( !document.getElementById("legalterms").checked ){
  		returnval.responseCode = "legalterms";
  	}else {
  		returnval.responseCode = "fieldsmissing";
  	}
  	callback(returnval);
  }
}

function createCharacterRequestPOST(callback, username, email, password, bodyType, skinType, gender, color, partnerID, betacode, lingu, ipaddress){ 	
	var uname = document.getElementById(username).value;
	var em = document.getElementById(email).value;
	var pwd = document.getElementById(password).value;
 	var body = document.getElementById(bodyType).value;
 	var skin = document.getElementById(skinType).value;
	var gen = document.getElementById(gender).value;
	var col = document.getElementById(color).value;
	var code = document.getElementById(betacode).value;
	var lingua = document.getElementById(lingu).value;
	var ip = document.getElementById(ipaddress).value;
	
	var param = "?requestType=mapped&service=CreateCharacterService&method=createCharacter"	
	param+= "&characterName="+uname;
	param+=  "&characterPassword="+pwd;
	param+=  "&characterEmail="+em;
	param+=  "&bodyType="+body;
	param+=  "&skinType="+skin;
	param+=  "&color="+col;
	param+=  "&gender="+gen;
	param+=  "&betacode="+code;
	param+=  "&language="+lingua;
	param+=  "&ipaddress="+ip;
	param+=  "&assets=-1&mint=0";		
	param+=  "&partnerID=1";
	param+=  "&random=1";	

	
	if (USERNAMEREGEX.exec(uname) && 
			PWDREGEX.exec(pwd) &&
			em.length > 0 ){
				
				alert( createCharacterRequestURL + param );
				//http://intern.avaloop.com/servicerelay/servicerelay.php?requestType=mapped&service=CreateCharacterService&method=createCharacter&characterName=caludai28&characterEmail=alla@lala.at&characterPassword=test1223&bodyType=PYKNIC&skinType=CLEAN&color=WHITE&gender=FEMALE&betacode=7777&language=de&ipaddress=86.59.108.74&partnerID=1
				//document.location.href="http://intern.avaloop.com/servicerelay/servicerelay.php?requestType=mapped&service=CreateCharacterService&method=createCharacter&characterName=caludai  &characterPassword=test12   &characterEmail=t%40t.t    &betacode=7777  &bodyType=PYKNIC&gender=FEMALE&skinType=CLEAN&assets=&mint=0&color=GREEN&partnerID=1&language=de&ipaddress=0&random=1";
				document.location.href=createCharacterRequestURL + param;
		
//			http_request = false;
//      if (window.XMLHttpRequest) { // Mozilla, Safari,...
//         http_request = new XMLHttpRequest();
 //        if (http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
//            http_request.overrideMimeType('text/html');
//         }
//      } else if (window.ActiveXObject) { // IE
//         try {
//            http_request = new ActiveXObject("Msxml2.XMLHTTP");
//         } catch (e) {
//            try {
//               http_request = new ActiveXObject("Microsoft.XMLHTTP");
//            } catch (e) {}
 //        }
//      }
//      if (!http_request) {
//         alert('Cannot create XMLHTTP instance');
//         return false;
//      }
//      http_request.onreadystatechange = alertContents;
//      http_request.open('GET', createCharacterRequestURL + param, true);
//      http_request.send(null);
		
		
  }else{
  	var returnval= new Object();
  	returnval.responseCode = new Object ();
  	returnval.responseCode = "fieldsmissing";
  	callback(returnval);
  }
	

	
}

function alertContents() {
    if (http_request.readyState == 4) {
       if (http_request.status == 200) {
          //alert(http_request.responseText);
          result = http_request.responseText;
          document.getElementById('info').innerHTML = result;            
       } else {
          alert('There was a problem with the request.');
       }
    }
 }



/**
*
*	send the username request to the webservice
*
**/
function usernameRequest(idx, callback){ 
	var username = document.getElementById(idx).value;
	
	if (USERNAMEREGEX.exec(username)){
		var pl = new SOAPClientParameters(); 
		pl.add("userName", username);	
  	SOAPClient.invoke(usernameRequestURL, "requestUsername", pl, true, callback);
	}else{
		var returnval= new Object();
  	returnval.responseCode = new Object ();
  	returnval.responseCode = "usernameNotValid";
  	callback(returnval);
	}	
}


/**
*
*	should be called when the user types in the username field
*
**/
function validateUsername(idx, callback){	
	var username = document.getElementById(idx).value;
	if (!USERNAMEREGEX.exec(username)){
		callback(false);
	}	else {
		callback(true);
	}	
}

/**
*
*	should be called when the user types in the password field
*
**/
function validatePassword(idx, callback){	
	var password = document.getElementById(idx).value;
	
	if (!PWDREGEX.exec(password)){
		 callback(false);
	}	else {
		 callback(true);
	}	
}

function validateRetypePassword(idx, callback){
	var retypepassword = document.getElementById(idx).value;
 
	
	if( retypepassword != document.getElementById("password").value){
		callback(false);
	} else {
		callback(true);
	} 
}

/**
*
*	get the current browser language (is used to determine the error message language)
*
**/
function getBrowserLanguage(){
	if ((navigator.language == "en") || (navigator.language == "de")){
		return navigator.language;
	}else{
		return "en";
	}	
}

/**
*
*	get the checked value from a radio group
*
**/
function getRadioValue(group){
	for(i=0; i < group.length; i++){
    if (group[i].checked) {
			return group[i].value;
    }
	}
}





