var br = "<br />";
var endp = "</p>";

// global variables
var userlogin;
var errors;
var fnarea;
var pwarea;
var username;
var userpw;
var confirmpw;
var gedfile;
var flickrarea;
var newusermodule;
var oldusermodule;
var newuseropt;
var gedconfirm;

// tools to support the boarding pass application

function initAll() {
    userlogin = document.getElementById('userlogin');
    errors = document.getElementById('errors');
    fnarea = document.getElementById('familyname');
    pwarea = document.getElementById('familypw');
    username = document.getElementById('username');
    userpw = document.getElementById('userpw');
    confirmpw = document.getElementById('confirmpw');
    gedfile = document.getElementById('gedfile');
    gedconfirm = document.getElementById('gedconfirm');
    flickrarea = document.getElementById('flickrconfirm');

    newuseropt = document.getElementById("newuseropt");
    newuseropt.onclick = toggleNewUser;
    newuseropt.checked = false;

    // create a module to hide new user area
    newusermodule = new YAHOO.widget.Module("newuserform", { visible: false });
    newusermodule.hide();
    newusermodule.cfg.visible = false;

    oldusermodule = new YAHOO.widget.Module("userlogin", { visible: true });
    oldusermodule.show();
    oldusermodule.cfg.visible = true;

    var flickrtest = document.getElementById('flickrtest');
    var submitid = document.getElementById('mysubmit');
    var resetid = document.getElementById('myreset');
    
    if (flickrtest) {
        flickrtest.onclick = doTestFlickr;
    }
    
    submitid.onclick = registerUser;
    resetid.onclick = resetUser;

    // gedfile.onchange = doGEDcheck;

    // start by setting the focus
    fnarea.focus();
}

var show_hide = function () {
    var obj = this;
    var myHidden = !obj.cfg.visible;
    if (myHidden) {
        // for (var i=0; i<collapseObjects.length; i++) {
        //     collapseObjects[i].hide();
        //     collapseObjects[i].cfg.visible = false;
        // }
        obj.show();
    } else {
        obj.hide();
    }
    obj.cfg.visible = myHidden;
}

var setup_collapse = function() {
    var clickElements = YAHOO.util.Dom.getElementsByClassName("anime");
    for (var i=0; i<clickElements.length; i++) {
      var clickelem = clickElements[i];
      var clickid = clickelem.getAttribute("id");
      // alert(clickelem.firstChild.nodeValue.length);
      // var dotwidth = clickelem.firstChild.nodeValue.length * 12;
      if (clickid == null || clickid=="") {
        clickid = "id_click_" + (i+1);
        clickelem.setAttribute("id",clickid);
        // clickelem.setAttribute("width", dotwidth);
      }
      // alert(clickid);
      
      // get the node element and id of the next div or p
      var hidenode = clickelem.nextSibling;
      while ( hidenode.nodeType != 1 ) { // && hidenode.nodeName.toUpperCase() != "DIV" ) {
         hidenode = hidenode.nextSibling;
      }

      // alert("node name = " + hidenode.nodeName);

      if (hidenode) {
          hideid = hidenode.getAttribute("id"); 

          // set the id for the hideable portion if it is blank
          if (hideid == null || hideid=="") {
            hideid = "p_"+clickid;
            hidenode.setAttribute("id",hideid);
          }
          // alert(hideid);
          // create a module and a listener to toggle its display
          // initially hidden
          var hidemodule = new YAHOO.widget.Module(hideid, { visible: false });
          n = collapseObjects.length;
          collapseObjects[n] = hidemodule;
          hidemodule.hide();
          hidemodule.cfg.visible = false;
          YAHOO.util.Event.addListener(clickid, "click", show_hide, hidemodule, true);
      }
    }
}

var registerUser = function() {

var ausername = username.value;
var auserpw = userpw.value;
var aconfirmpw = confirmpw.value;
var familyname = fnarea.value;
var familypw = pwarea.value;

    // var re = /^\s*([a-zA-Z'-])([a-zA-Z'-]\S+)\s*$/;

    // check cases for new user being entered
    if (newuseropt.checked) {

        // if new user set the login parameters
        familyname = ausername;
        familypw = auserpw;
        fnarea.value = ausername;
        pwarea.value = familypw;

        if ( familyname.length < 3 ) {
            alert("You must enter at least a 3 character username");
            return false;
        }
    
        if ( familypw.length < 6 ) {
            alert("You must enter at least a 6 character password");
            return false;
        }
    
        if (aconfirmpw != auserpw ) {
            alert("Password verification failed\nYou must enter exactly the same password twice\nPasswords are case sensitive");
            confirmpw.value = "";
            userpw.value = "";
            pwarea.value = "";
            return false;
        }
    
        var re = /^(\w+)$/;
        if ( !re.test(familyname) ) {
            alert("Invalid username entered: "+familyname);
            return false;
        }

        // doGEDCheck();
    } else {
        username.value = familyname;
        userpw.value = familypw;
    }
    // alert("User = "+username);

    // signal okay to submit the form
    myform = document.getElementById("treeForm");
    // alert("Everything checked out okay");
    myform.submit();

    return false;
};

var resetUser = function(o){
    fnarea.value = "";
    pwarea.value = "";    
    username.value = "";
    userpw.value = "";
    confirmpw.value = "";
    gedfile.value = "";
    gedconfirm.innerHTML = "";
    flickrarea.value = "";
    flickrconfirm.innerHTML = "";
    errors.innerHTML = "Please log into the family tree viewer below or select the box and register as a New User.";

    newuseropt.checked = false;
    newusermodule.hide();
    oldusermodule.show();
    newusermodule.cfg.visible = false;
    oldusermodule.cfg.visible = true;
    fnarea.focus();
};

var toggleNewUser = function () {
    var obj = newusermodule;
    var oldobj = oldusermodule;
    var myHidden = !obj.cfg.visible;
    errors.innerHTML = "Please log into the family tree viewer below or select the box and register as a New User.";
    if (myHidden) {
        obj.show();
        oldobj.hide();
        username.focus();
    } else {
        obj.hide();
        oldobj.show();
        fnarea.focus();
    }
    obj.cfg.visible = myHidden;
}

var doTestFlickr = function(o){
    flickrconfirm.innerHTML = "<h2>flickR check not yet implemented...</h2>";
};

YAHOO.util.Event.addListener(window, "load", initAll);
YAHOO.util.Event.addListener(window, "load", setup_collapse);
