var scrnshots_currentPos = [];
var register_status = new Object();
var creationtimer;
var register_busy = false;
var formparams = ''; //temporarily store the reg information, until we submit it with ajax
var have_a_team = false;
var uid = 0;
var sid = 0;
var max_rounds = 9; //Wait for max ~1.5 min
var curr_round = max_rounds;

function scrnshot_doAction(action)
{
  if(typeof(myShow)!="undefined" && typeof(myShow.doAction)=='function')
    myShow.doAction(action);
}
function scrnshot_openWindow()
{
  if(myShow.slideshow)
  {
    scrnshots_currentPos = myShow.getImagePosCurrent();
    scrnshot_lightbox(myShow.getCurrentImage(), scrnshots_currentPos[0], myShow.getImagePosMax());
    scrnshot_doAction('hold');
  }
}

function scrnshot_navigationPrev(showname)
{
  if(typeof(showname)!="undefined" && typeof(showname.navigationRight)=='function')
    showname.navigationRight(true);
}
function scrnshot_navigationNext(showname)
{
  if(typeof(showname)!="undefined" && typeof(showname.navigationLeft)=='function')
    showname.navigationLeft(true);
}

function scrnshot_lightbox(image, imageposCurrent, imageposMax)
{
  lightboxInit();
  scrnshot_IsActive = true;
  scrnshot_showContent(["","closebutton","notitle"], "<table width=512><tr><td align=center><img src=\"img/ajax_loader.gif\" alt=\"Loading\" width=\"16\" height=\"16\"></td></tr></table>");
  additional = "";
  if(!scrnshot_imageList)
    additional = "&getimagelist=true";
  ajaxCall('ajax_com/start.php','val=getScreenShotTemplate&defaultimg=' + image + '&current=' + imageposCurrent + '&max=' + imageposMax + additional, 'scrnshot_ajaxResponse', '');
}

function scrnshot_showContent(title, body)
{
  lightboxShow(512, title, body, "", "", "", "", "scrnshot_close();" );
  lightboxSetPosY(90);
}

function scrnshot_close()
{
  scrnshot_IsActive = false;
  myShowBig.stop();
  myShowBig = null;
  myShow.onhold = false;
  scrnshot_doAction('continue');
}

function scrnshot_ajaxResponse(readyState, response, responseParameter)
{
  if (readyState == 4 && scrnshot_IsActive) {
    eval(response);
    if (typeof scrnshot_Template == "object") {
      scrnshot_Title    = doTheReplace(scrnshot_Template["title"]);
      scrnshot_Body     = doTheReplace(scrnshot_Template["body"]);
      scrnshot_showContent([scrnshot_Title,"closebutton"], scrnshot_Body);
      myShowBig = new Slideshow('slideshowBig', { type: 'fade', resize: true, duration: [100000, 1000000], width: 400, height: 400, imgtype: 'jpg',  hu: 'img/start/', imageprogress: ['scrnshotimgstatus', 'current max'], captionarea: 'scrnshotcaption'});
      myShowBig.addimages(scrnshot_imageList);
      myShowBig.addtexts(scrnshot_textList);
      myShowBig.setImagePos(scrnshots_currentPos);
      myShowBig.start();
    }
    else {
      alert("internal error");
    }
  }
}

function scrnshot_ajaxStartResponse(readyState, response, responseParameter)
{
  if (readyState == 4) {
    eval(response);
    myShow = new Slideshow('slideshow', { type: 'fade',resize: true, duration: [2000, 4000], width: 150, height: 120, imgtype: 'gif',  hu: 'img/start/', onclick: true });
    myShow.addimages(scrnshot_imageList);
    myShow.start();
  }
}

function scrnShotSlideShow()
{
  ajaxCall('ajax_com/start.php','val=scrnshot_getJSImageList', 'scrnshot_ajaxStartResponse', '');
}


function getHelpClose()
{	
  getHelpedIsActive = false;
}

function prepareHelp(readyState, response, responseParameter)
{
  if(readyState==4)
  {
    eval(response);
    lightboxShow(460, [templates['help']['title'],"lefttitle", "closebutton"], templates['help']['body']);
    lightboxSetPosY(90);
    help_forgotpwd_Body        = doTheReplace(templates["help"]["forgotpwd_body"]);
    help_forgotpwd_Win         = doTheReplace(templates["help"]["forgotpwd_win"]);
    help_reghelp_Body          = doTheReplace(templates["help"]["reghelp_body"]);
    help_reghelp_Win           = doTheReplace(templates["help"]["reghelp_win"]);
    help_ipprobs_Body          = doTheReplace(templates["help"]["ipprobs_body"]);
    help_ipprobs_Win           = doTheReplace(templates["help"]["ipprobs_win"]);
    layer_write('divhelp_forgotpwd', help_forgotpwd_Body);
    layer_write('divhelp_reghelp', help_reghelp_Body);
    layer_write('divhelp_ipprobs', help_ipprobs_Body);
    reenableButton("helpsendemail");
    reenableButton("helpsendreghelp");
    reenableButton("helpsendproblem");
    if(templates["help"]["panel"])
      help_swaplayer(templates["help"]["panel"]);
  }
}

function help_swaplayer(type)
{
  if (type == "forgotpwd") {
    if (help_forgotpwd_Body != help_forgotpwd_Win)
      help_forgotpwd_Body = help_forgotpwd_Win;
    layer_write("divhelp_forgotpwd",help_forgotpwd_Body);
    divsShowOnly('help_forgotpwd', 'help_');
  }
  else if (type == "reghelp") {
    if (help_reghelp_Body != help_reghelp_Win)
      help_reghelp_Body = help_reghelp_Win;
    layer_write("divhelp_reghelp",help_reghelp_Body);
    divsShowOnly('help_reghelp', 'help_');
  }
  else if (type == "ipprobs") {
    if (help_ipprobs_Body != help_ipprobs_Win)
      help_ipprobs_Body = help_ipprobs_Win;
    layer_write("divhelp_ipprobs",help_ipprobs_Body);
    divsShowOnly('help_ipprobs', 'help_');
  }
}

function help_response(readyState, response, responseParameter)
{
  if(readyState==4)
  {
    if(response.indexOf("templates")==0)
    {
      eval(response);
      if(templates && templates['help'] && templates['help']['response'])
      {
        layer_write(templates['help']['target'], templates['help']['response']);
      }
    }

    if(templates['help']['panel'])
    {
      help_swaplayer(templates['help']['openpanel']);
    }

    reenableButton("helpsendemail");
    reenableButton("helpsendreghelp");
    reenableButton("helpsendproblem");
  }
}

function help_submit(type)
{
  params = "";
  if(type=="forgotpwd")
  {
    layer_write('responseemail', '');
    email = document.getElementById("forgotemail").value;
    params = "type=password&sender=responseemail&email=" + email;
  }
  else if(type=="reghelp")
  {
    layer_write('responsereghelp', '');
    reginfo = document.getElementById("reginfo").value;
    params = "type=reghelp&sender=responsereghelp&reginfo=" + reginfo;
  }
  else if(type=="ipproblem")
  {
    layer_write('responseipproblem', '');
    email = document.getElementById("email").value;
    apply_country = document.getElementById("apply_country").value;
    freetext = document.getElementById("freetext").value;
    params = "type=ipproblem&sender=responseipproblem&email=" + email + "&apply_country=" + apply_country + "&freetext=" + escape(freetext);
  }
  ajaxCall('ajax_com/start.php','val=submitHelp&' + params, 'help_response', '');
}

function showhelppanel(panelname)
{
  lightboxHide();
  layer_hide('helpLayer');
  ajaxCallLightboxLoading('ajax_com/start.php', 'val=getHelpTemplates&panel=' + panelname, 'prepareHelp', '');
}


function sendRegisterForm(sportname)
{
  if(sportname == undefined)
    if(sport != undefined)
        sportname = sport;
    else
        sportname = 'soccer'; //protection against late faults

  var othersport = '';
  if(sportname == 'soccer')
    othersport = 'hockey';
  else
    othersport = 'soccer';

  var other_class_name = 'choosesport_'+ othersport +'disabled';
  var other_id_name = 'choosesport_'+ othersport;
  var this_id_name = 'choosesport_'+ sportname;

  var osport = document.getElementById(other_id_name);
  osport.className = other_class_name;
  osport.onclick = '';
  document.getElementById(this_id_name).onclick = '';

  //We want to show loading, as it can sometimes take some time before the response appears
  if(document.getElementById('waiting_info_marker') != undefined) {
    document.getElementById('waiting_info_marker').innerHTML = "<table width=435><tr><td align=center><img src=\"img/ajax_loader.gif\" alt=\"Loading\" width=\"16\" height=\"16\"></td></tr></table>";
    document.getElementById('wait_message').innerHTML = str_wait_loading;
  }
  document.forms['logindata']['sport'].value = sportname; //we store the sport for the login
  //We show info before committing
  ajaxCall("ajax_com/start.php", 'val=registerUser' + formparams + sportname, 'registerReturn', "");
}

function storeRegisterForm() {
    if(curr_round < 1)
  		curr_round = max_rounds;

	ajaxLoaderControl("regform","block");
	formparams = getRegformParams(true);
    if (templates['regselectsport']) {
      lightboxShow(590, [templates['regselectsport'][0], "closebutton"], templates['regselectsport'][1]); 
      lightboxSetPosY(130);
    }
    return false;
}


function getRegformParams(register)
{
  var sport = register_status.sport;
  var lf = document.forms["login"];
  var lf2 = document.forms["logindata"];
  md5c = lf['md5c'].value;
  var usr = document.forms["reg_form"]["username"].value;
  document.forms['logindata']['username'].value = usr; //We store the loginname in the login form too, for the auto login
  var pwd = document.forms["reg_form"]["password"].value;
  document.forms['logindata']['password'].value = pwd;  //We store the passowrd in the login form too, for the auto login
  var email = document.forms["reg_form"]["email"].value.toLowerCase();
  var year = document.forms["reg_form"]["y"].value;
  var month = document.forms["reg_form"]["m"].value;
  var day = document.forms["reg_form"]["d"].value;
  var zipcode = document.forms["reg_form"]["zipcode"].value;
  var extraparam = "";
  if(document.getElementById("subcountry") != undefined)
    extraparam += "&subcountry="+document.forms["reg_form"]["subcountry"].value;
  if (document.forms["reg_form"]["raf_code"])
    extraparam += "&raf_code="+document.forms["reg_form"]["raf_code"].value;
  if (document.forms["reg_form"]["secrecy"])
    extraparam += "&secrecy="+document.forms["reg_form"]["secrecy"].value;
  if (document.forms["reg_form"]["blipuser"])
    extraparam += "&blipuser="+document.forms["reg_form"]["blipuser"].value;
  if (register)
  {
    extraparam += "&password="+pwd;
    extraparam += "&rules=";
    if (document.forms["reg_form"]["rules"].checked)
      extraparam += document.forms["reg_form"]["rules"].value;
  }
  else {
    //We tell what js thinks about the password.
    if(jsCheckAttribute('password',pwd) && pwd.length >= 6 && pwd.length <= 20) {
      var pwdchk = 1;
    } else {
      var pwdchk = 0;
    }
    extraparam += "&pwdchk="+pwdchk;
  }
  var md5 = hex_hmac_md5(md5c, pwd.toLowerCase());
  if (usr == "" && (pwd.length < 6 || pwd.length >= 20))
    md5 = "";
  var params = "&username="+ usr +"&md5="+ md5 +"&md5c="+ md5c +"&email="+ email +"&y="+ year +"&m="+ month +"&d="+ day +"&zipcode="+ zipcode + extraparam +"&sport=";
  if(sport != undefined && sport.length>1)
  	params = params + sport;
  return params;
}


function formDisableEnable(theForm,status)
{

  if(theForm == undefined)
  	return;
  	
  var statuses = new Object();
  statuses["true"] = "";
  statuses["false"] = "true";
  var inputs = theForm.getElementsByTagName("input");
  for(i=0;i<inputs.length; i++) {
    if (status != undefined)
      inputs[i].disabled = status;
    else
      inputs[i].disabled = statuses[inputs[i].disabled];
  }
}


function regformChecked(readyState, response, responseParameter)
{
  if (readyState == 4) {
    eval(response);

    if (typeof regstatus == "object") {
      showFormStatus(regstatus, true, responseParameter);
    }
    ajaxLoaderControl("regform","none");
    formDisableEnable(document.getElementById("reg_form"),"");
    focusToNext(document.getElementById("reg_form"),responseParameter);
  }
}


function registerReturn(readyState, response, responseParameter)
{
  if (readyState == 4) {
    eval(response);
    ajaxLoaderControl("regform","none");
    formDisableEnable(document.getElementById("reg_form"),"");
    if (typeof regstatus == "object") {
      if (regstatus[0] == "ok_finished") {
       //call function that checks if we have a team
        var uidL = regstatus[2].length;
        uid = regstatus[2].substr(0, uidL - 4);
        var sidL = regstatus[3].length;
        sid = regstatus[3].substr(0, sidL - 4);
       	checkTeam(); //We start checking for teams
	  } else if(regstatus[0] == "error") {
	  	if(document.getElementById('waiting_info_marker') != undefined)
		  	document.getElementById('waiting_info_marker').innerHTML = "";
		alert("Something went wrong, please reload the page and try again or contact support@managerzone.com  Error: ".regstatus[1]);
		return false;
      } else {
      	document.getElementById('wait_message').innerHTML = regstatus[1].substr(0, regstatus[1].lenght - 4);
        document.getElementById('waiting_info_marker').innerHTML = "";
      }
    }
  }
}

function autoLogin() {
	if(setMd5(document.forms["login"],document.forms["logindata"]) == false)
		return false;
	loginSport(document.forms['logindata']['sport'].value);
	return true;
}

function checkTeam() {
	if(curr_round-- < 1) {
		document.getElementById('waiting_info_marker').innerHTML = "";
		document.getElementById('wait_message').innerHTML = str_team_error_msg;
		clearTimeout();
		return;
	}
	if(have_a_team == false)	
		ajaxCall("ajax_com/start.php", 'val=haveIaTeam&uid='+ uid +'&sportId='+ sid, 'setTeamStatus', "");
	
	if(have_a_team == true) {
		clearTimeout();
		autoLogin();
	} else {
		window.setTimeout("checkTeam()", 10000);
	}
}

function setTeamStatus(readyState, response, responseParameter) {
	//check if we have got a yes response
  if (readyState == 4) {
    eval(response);
    if (typeof regstatus == "object")
		if (regstatus[0] == "yes_team")
			have_a_team = true;
  }
}

function focusToNext(theForm,lastobj_id)
{
  var obj = document.getElementById(lastobj_id);
  obj.focus();
  var inputs = theForm.getElementsByTagName("input");
  for(i=0;i<inputs.length; i++) {
    if (inputs[i].id == lastobj_id) {
      if ((i+1) < inputs.length)
        inputs[i+1].focus();
    }
  }
}


function verifyRegFormAjax(lastobj_id)
{
  ajaxLoaderControl("regform","block");
  formDisableEnable(document.getElementById("reg_form"), "true");
  var params = getRegformParams(false);
  ajaxCall("ajax_com/start.php", 'val=verifyRegform' + params, 'regformChecked', lastobj_id);
  return true;
}


function verifyRegForm(obj)
{
  var shall_ajax_check = true;
  var lastobj_id = obj.id;
  if (register_status.username == undefined)
    register_status.username = false;
  if (register_status.password == undefined)
    register_status.password = false;
  if (register_status.email == undefined)
    register_status.email = false;
  if (register_status.rules == undefined)
    register_status.rules = false;
  if (register_status.secrecy == undefined)
    register_status.secrecy = false;
  if (register_status.zipcode == undefined)
    register_status.zipcode = false;

  disableButton("savebutton");


  if (obj.id == "password" || obj.id == "confirm_password") {
    shall_ajax_check = verifyRegFormPassword();
  }
  else if (obj.id == "email") {
    verifyRegFormEmail(obj.value);
  }
  else if (obj.id == "rules") {
    if (obj.checked) {
      showFormStatus("ok_rules", true);
      register_status.rules = true;
    } else {
      showFormStatus("invalid_rules", true);
      register_status.rules = false;
    }
  }
  else if (obj.id == "secrecy") {
    if (obj.value.length == 5) {
		verifyRegFormAjax(lastobj_id);
    } else {
		register_status.secrecy = false;
    }
  }  

  if(obj.id == "raf_code" && obj.value.length==0) //An empty raf_code is OK!
    showFormStatus("ok_raf_code", true);

  if (obj.id != "rules" && obj.id != "secrecy" && obj.value.length>0 && shall_ajax_check) {
    verifyRegFormAjax( lastobj_id );
  }
  
}


function verifyRegFormEmail(email)
{
  if (email.length > 0) {
    if (verifyContact("mail", email) )
      showFormStatus("ok_email");
    else
      showFormStatus("invalid_email");
  }
}

function verifyRegFormPassword()
{
  var reg_form  = document.forms["reg_form"];
  var usr       = trim(reg_form["username"].value);
  var pwd       = reg_form["password"].value;
  var cfm_pwd   = reg_form["confirm_password"].value;

  //Check password is between 6 and 20, no spaces
  if (pwd.length < 6 || pwd.length >= 20 || !jsCheckAttribute('password',pwd) || 
      (usr.length && (pwd.indexOf(usr) != -1 || usr.indexOf(pwd) != -1)) ) {
    showFormStatus("invalid_password", true);
    return false; //no need to ajax, invalid password
  }

  if (pwd == cfm_pwd) {
    showFormStatus("ok_confirm_password");
  } else if (cfm_pwd.length > 0) {
    showFormStatus("invalid_confirm_password", true);
    return false; //no need to ajax, missmatched password
  }
  //OK to make a ajax check
  return true;
}


function showFormStatus(feedback, updbtn, lastobj_id)
{
  var divobj;

  var retest = false;
  if (typeof feedback == "object")
  {
    for (var m=0 ; m<feedback.length ; m++)
    {
      if (processFieldStatus(feedback[m]))
        retest = true;
    }
  }
  else
    if(processFieldStatus(feedback))
      retest = true;

  if (retest && lastobj_id != undefined)
    verifyRegFormAjax( lastobj_id );
  else
  {
    // Activate the send button when form is validated.
    if (updbtn &&
        register_status.username && register_status.email &&
        register_status.secrecy && register_status.password &&
        register_status.confirm_password && register_status.rules )
      reenableButton("savebutton");
    else if (updbtn != undefined && updbtn === false)
      disableButton("savebutton");
  }
}


function processFieldStatus(msg)
{
  var res = msg.split("_");
  if (res.length > 2)
    res[1] = res.slice(1).join("_");

  if (msg.substr(0,3) == "ok_") {
    eval("register_status."+res[1]+" = true;");
    if(document.getElementById(res[1]) != undefined) {
    	document.getElementById(res[1]).style.color = "#000000";
    	document.getElementById(res[1]).style.borderColor = "#333333 #999999 #999999 #333333";
    	showFeedback(res[1], "", false);
    	if(res[1] == "username")
    		showFeedback("internal", str_block_allsports, false);
    }
  }
  else if (msg.substr(0,8) == "invalid_" || msg.substr(0,6) == "taken_") {
    eval("register_status."+res[1]+" = false;");
    if (document.getElementById(res[1]).value != "" || res[1] == "raf_code")
    {
      document.getElementById(res[1]).style.color = "#cc0000";
      document.getElementById(res[1]).style.borderColor = "#cc0000 #ff9999 #ff9999 #cc0000";
      showFeedback(res[1], eval("str_"+res[0]+"_"+res[1]), true);
    }
  }
  else if (msg.substr(0,7) == "change_") {
    if (eval("register_status."+res[1]) != undefined) {
      eval("register_status."+res[1]+" = false;");
      showFeedback(res[1], eval("str_"+res[0]+"_"+res[1]), true);
    }
    else {
      // Got team in sport, option to change sport to register in.
      if ( confirm( str_change_sport.replace("%s",res[1])) ) {
        return sendRegisterForm(res[1]);
      }
      else
        lightboxHide();
    }
  }
  else if (msg.substr(0,6) == "block_"){
    if (register_status.username != undefined) {
      register_status.username = false;
      showFeedback("internal", eval("str_"+res[0]+"_"+res[1]), true);
    }
  }
  else if (msg.substr(0,4) == "key_") {
    document.forms["login"]["md5c"].value = res[1];
    return true;
  }
  return false;
}


function showFeedback(field, msg, show)
{
  divobj = document.getElementById("reg_feedback_"+field);
  divobjBody = document.getElementById("reg_feedback_"+field+"_body");
  if (divobj && divobjBody)
    if (show) {
      divobjBody.innerHTML = msg +"<br><br>";
      divobj.style.display = "block";
    }
    else {
      divobjBody.innerHTML = "";
      divobj.style.display = "none";
    }
}


function prepareRegistration(readyState, response, responseParameter)
{
  if (readyState == 4) {
    eval(response);
    if (templates['regselectsport']) {
      lightboxShow(590, [templates['regform'][0], "lefttitle", "closebutton"], templates['regform'][1]); //regform
      lightboxSetPosY(130);
      setTimeout( "document.reg_form.username.focus()", 100);
      disableButton("savebutton");
    }
  }
}


function showRegForm(sport, email)
{
  if (sport != undefined)
    register_status.sport = sport;
  else
    register_status.sport = ajaxSport;
  lightboxShow(590, [templates['regform'][0], "lefttitle", "closebutton"], templates['regform'][1]);
  lightboxSetPosY(130);
  setRegFormSport(sport);
  setTimeout( "document.reg_form.username.focus()", 100);
  disableButton("savebutton");
  if (email != undefined) {
    populateRegForm(email);
  }
}


function setRegFormSport(sport)
{
  if (document.getElementById("regformsportimg") && templates['regformtitle_'+sport] != undefined) {
    document.getElementById("regformsportimg").src = templates['regformtitle_'+sport];
    return true;
  }
  return false;
}


function populateRegForm(email)
{
  var logindata = document.forms["logindata"];
  var reg_form  = document.forms["reg_form"];
  if (logindata && reg_form) {
    reg_form["username"].value = logindata["username"].value;
    reg_form["password"].value = logindata["password"].value;
    reg_form["email"].value = email;
    verifyRegForm(reg_form["username"]);
  }
}


function validateTeamStatus(readyState, response, responseParameter)
{
  if(readyState==4)
  {
    if(response.indexOf("templates")==0)
    {
      eval(response);
      if(templates['creationstatus'] && templates['creationstatus']['body']!="")
      {
        lightboxShow(450, ["", "closebutton"], templates['creationstatus']['body']);
        lightboxSetPosY(130);
        if(templates['creationstatus']['continue'])
        {
          startcreationcheck();
        }
      }
    }
    else if(response.indexOf("window")==0)
    {
      eval(response);
    }
  }
}

function checkCreationStatus()
{
  ajaxCall('ajax_com/start.php', 'val=getTeamCreationStatus&act=' + templates['creationstatus']['act'], 'validateTeamStatus', '');
}

function stopcreationcheck()
{
  clearTimeout(creationtimer);
}

function startcreationcheck()
{
  creationtimer = setTimeout("checkCreationStatus()",15000);
}
