var signup = {
    setTemplateID: function(id) { setStyleID(id); return false; }
}

function setStyleID(ID) {
    if(ID == "blank") { 
        document.getElementById('styleID').value = ""; 
    } else {
        document.getElementById('styleID').value = ID;
    }
}

function checkStyleID() {
   isAdvanced = document.getElementById('advanced').value;

   if(isAdvanced != 1) {
      if(document.getElementById('styleID').value) {
         return true;
      } else {
        message("Please choose a template for your site.");
    }
   } else { 
      return true; 
   }
} 

function scrollToElement(theElement) {
   var selectedPosX = 0;
   var selectedPosY = 0;
              
   while(theElement != null) {
      selectedPosX += theElement.offsetLeft;
      selectedPosY += theElement.offsetTop;
      theElement = theElement.offsetParent;
   }
                        		      
   window.scrollTo(selectedPosX,selectedPosY);
}

var creatingAccount = false;

function resetCreate() { creatingAccount = false; }

function message(error) {
    var messages = document.getElementById("error_messages");
    var messages_spans = messages.getElementsByTagName("SPAN");

    if(messages.style.display != "block") {
        messages.style.display = "block";
    }

    for(i = 0; i < messages_spans.length; i++) {
        if(messages_spans[i].innerHTML == error) {
            return;
        } 
    }

    document.getElementById("error_messages").innerHTML += "<span>" + error + "</span>";
}

function polarize(classType, message) {
    document.getElementById("message_notice").className = classType;
    document.getElementById("message_notice").innerHTML = message;
}

function messageDissapear() {
    document.getElementById("message_box").style.display = "none";
}

function userChat(classType, title, message) {
    document.getElementById("message_box").className = classType;
    if(document.getElementById("message_box").style.display != "block") document.getElementById("message_box").style.display = "block";
    document.getElementById("message_title").innerHTML = title;
    document.getElementById("message_message").innerHTML = message;
    document.getElementById("message_notice").className = "";
    document.getElementById("message_notice").innerHTML = "";
}

function createAccount2Z() {
    if (creatingAccount == false) {
        var na = checkUserName(true);

        var pc = checkPassword('password', 4, true);

        var ti = checkTitle('title', true);

        var em = isValidEmail('fwemail', true);

        var bc = checkEmpty('birthdate');

        var cc = checkEmpty('country');

        var gc = checkRadio('gender');      

        var styID = checkStyleID();

        var tc = checkCheck('agree');

        if (na && pc && em && gc && bc && ti && cc && tc && styID) {

            $('accountForm').cval.value = 'fcval';
            creatingAccount = true;

            document.getElementById("loadingGraphic").style.visibility = "visible";

            new ajax($('accountForm').action+'?'+$('accountForm').toQueryString(), {onComplete: function(resp) {
                eval(resp);
            }}).request();
        } else {
            document.getElementById("message_box").style.display = "none";
            scrollToElement(document.getElementById("tree_top"));
        }
    } 
}

function createAccount2D() {
    if (creatingAccount == false) {
        var na = checkUserName(true);

        var pc = checkPassword('password', 4, true);

        var ti = checkTitle('title', true);

        var em = isValidEmail('fwemail', true);

        var bc = checkEmpty('birthdate');

        var cc = checkEmpty('country');

        var gc = checkRadio('gender');      

        var styID = checkStyleID();

        var tc = checkCheck('agree');

        if (na && pc && em && gc && bc && ti && cc && tc && styID) {

            $('accountForm').cval.value = 'fcval';
            creatingAccount = true;

            document.getElementById("loadingGraphic").style.visibility = "visible";

            new ajax("/Signup/createAccountWebsID.jsp" + '? '+ $('accountForm').toQueryString(), {onComplete: function(resp) {
                eval(resp);
            }}).request();
        } else {
            document.getElementById("message_box").style.display = "none";
            scrollToElement(document.getElementById("tree_top"));
        }
    } 
}

function signupError(message) {
    alert(message);
    resetCreate(); // Reset it so they can keep going, validation will stop them if they don't fix it
}    

function showCaptcha() { $('captchaDiv').style.display = 'block'; }
function hideCaptcha() { $('captchaDiv').style.display='none'; }

function titleTimeTravel() {
   setTimeout("checkTitle('title', false)", 1200);
}

function passwordTimeTravel() {
   setTimeout("checkPassword('password', 4, false)", 1200);
}

function emailTimeTravel() {
   setTimeout("isValidEmail('fwemail', false)", 1200);
}

function doCheckName(checkingSignup) {
   cn = "";
   var uname = $('accountForm').username.value;

   if (uname.length < 4) {
      if(!checkingSignup) polarize("error", "Username must be at least 4 characters");
      else message("Please enter a username longer than 4 characters.");
   } else {
      new ajax('/checkUsername.jsp?username='+escape(uname), {onComplete: function(flag) {
         flag = flag.trim();
         if (flag=='-1') {
            return
         } else if (flag == '0') {
            if(!checkingSignup) polarize("positive", "This username is available!");
         } else if (flag == '1') {
            if(!checkingSignup) polarize("error", "This username is unavailable. Try again!"); 
            else message("Your desired username is unavailable. Please try again.");
         } else if (flag == '2') {
            if(!checkingSignup) polarize("error", "Usernames can only include letters, numbers, and dashes. Please try again.");
            else message("Usernames can only include letters, numbers, and dashes. Please try again.");
         } else if (flag == '3') {
            if(!checkingSignup) polarize("error", "Please enter a username longer than 4 characters.");
            else message("Please enter a username longer than 4 characters.");
         } else {
            return;
         }
      }}).request();
   }
}

function checkName() {
   if (cn != "") {
      clearTimeout(cn);
      cn = "";
   }

   if ($('accountForm').username.value.length > 2) {
      cn = setTimeout('doCheckName();', 300);
   }
}

function checkUserName(isCheckingSignup) {
   doCheckName(isCheckingSignup);
   var username = $('accountForm').username.value;
   var re = /^[a-z0-9][a-z0-9_-]*$/
   var ret = re.test(username.toLowerCase());
   if (!ret) {
      $('username_error').innerHTML = 'contains invalid characters';
   } else {
      return checkLength('username', 4);
   }
   return ret;
}

function checkEmpty(ele) {
   var frm = $('accountForm');

   if (frm[ele].value == '') {
      if (ele == 'birthdate') {
         message("Please select a birth year.");
      } else if(ele == 'country') {
         message("Please select your country.");
      } else {
         message("Please check all fields and try again.");
      }
      return false;
   } else {
     return true;
   }
}

function checkTitle(ele, isCheckingSignup) {
    var frm = $('accountForm');

    if(frm[ele].value == '') {
        if(!isCheckingSignup) polarize("error", "Please enter a Site Title");
        else message("Please enter a Site Title.");
    } else {
        if(!isCheckingSignup) polarize("positive", "Great title! This will help people find your site.");
        return true;
    }
}

function checkPassword(ele, len, isCheckingSignup) {
   var username = $('accountForm').username.value;
   var frm = $('accountForm');
      
   if (frm[ele].value == '' || frm[ele].value.length < len ) {
      if(!isCheckingSignup) polarize("error", "Your password must be at least " + len + " characters.");
      else message("Your password must be at least " + len + " characters.");
       return false;
   } else if (frm[ele].value == username 
	|| frm[ele].value == '1234'
	|| frm[ele].value == '12345'
	|| frm[ele].value == '123456'
	|| frm[ele].value == 'qwerty'){
        if(!isCheckingSignup) polarize("error", "Your password is too weak. Try again!");
        else message("Your password is too weak. Please enter a new one and try again.");
        return false;	
   } else if (!isPasswordSafeAscii(frm[ele].value)) {
      if(!isCheckingSignup) polarize("error", "Your password contains invalid characters, please try again!");
      else message("Your password contains invalid characters, please try again!");
      return false;
   } else {
      if(!isCheckingSignup) polarize("positive", "Thanks!");
      return true;
   }
}

function isPasswordSafeAscii(pw) {
    for(var i = 0; i < pw.length; i++) {
        if(pw.charCodeAt(i) < 32 || pw.charCodeAt(i) > 127) { return false; }
    }
    return true;
}

function checkCheck(ele) {
   var frm = $('accountForm');
   if (frm[ele].checked != true) {
        message("Please accept the Terms of Service.");
      return false;
   } else {
      return true;
   }
}       

function checkRadio(ele) {
   var frm = $('accountForm');

   var radios = frm[ele];
   for (i=0;i < radios.length;i++) {
      if (radios[i].checked == true) {
         if(errorStatus = "Errors") {  
            return true; 
         }
      }
   }       
                        
   message("Please specify " + ele + ".");
   return false;   
}
                    
function isValidEmail(ele, isCheckingSignup) {
   var frm = $('accountForm');

   emailAddress = frm[ele].value;
   var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
   /*\'"*/
   if (re.test(emailAddress)) {
        if(!isCheckingSignup) polarize("positive", "Thanks!");
      return true;
   } else {
      if(!isCheckingSignup) polarize("error", "Please enter a valid email address!");
      else message("Please enter a valid email address!");
      return false;
   }
}

function knowHTML() {
   document.getElementById('advanced').value = "1";
}

function noHTML() {   // ;)  LOL
   document.getElementById('advanced').value = "0";
}

function useAdvanced(advanced_message, templatePicka){
   if(document.getElementById("advanced_message").style.display == 'none'){
      knowHTML(); 
      $('next').value='/MembersA/index.jsp';
      document.getElementById("advanced_message").style.display = 'block';
      document.getElementById("templatePicka").style.display = 'none';
      document.getElementById("regular_mode").style.display = 'none';
      showCaptcha();
   } else {
      noHTML(); 
      $('next').value='/MembersB/EditPage/index.jsp?prefab=1';
      document.getElementById("advanced_message").style.display = 'none';
      document.getElementById("templatePicka").style.display = 'block';
      document.getElementById("regular_mode").style.display = 'block';
      hideCaptcha();
   }
}
