dojo.require("dojo._base.xhr");
dojo.require("dojox.timing._base");
var warnDiv = "usernametaken";
var inputField="user_login";
//var myTimer = new dojox.timing.Timer(3000);
var ajaxArmed = false;


function validateForm(){
    var msg = new Array();
    
    if (!dijit.byId("dijitPasswordNode1").isValid() ){
	msg.push(dijit.byId("dijitPasswordNode1").getErrorMessage());
    }

    if (!dijit.byId("dijitPasswordNode2").isValid() ){
	msg.push(dijit.byId("dijitPasswordNode2").getErrorMessage());
    }

    if (!dijit.byId("user_login").isValid() ){
	msg.push(dijit.byId("user_login").getErrorMessage());
    }

    if (!dijit.byId("user_email").isValid() ){
	msg.push(dijit.byId("user_email").getErrorMessage());
    }

    if (msg.length > 0){
	var myHtml = '<ul>';
	dojo.forEach(msg,function(myMsg){
			 myHtml += "<li>" + myMsg + "</li>";
		     });
	myHtml +='</ul>';
	dijit.byId('warndiag').setContent(myHtml);
	dijit.byId('warndiag').show();
	return(false);
    }else{
	return(true);
    }
	
}

function setValidator(){

    // initialize some stuff, this function should be called init()
    //myTimer.onTick = function(){allowAjax = true; };
    //myTimer.start();
    dojo.connect(dijit.byId("user_login"), 'onBlur', function(){ ajaxArmed = true; dijit.byId("user_login").validate(); ajaxArmed = true; });

    dijit.byId("dijitPasswordNode2").validator = function (value, constraints) {
	if (this.getValue() === dijit.byId("dijitPasswordNode1").getValue() ) {
	    return true;
	} else {
	    return false;
	}
    }

    dijit.byId("user_login").validator = function(e){
	if (!this.getValue().match(/\S/))
	    return(false);

	if (ajaxArmed){
	    ajaxArmed = false;
	    var xhrArgs = {sync: true, url: "/check_user_name", content: { username: this.getValue() }, handleAs: "json",load: xhrSuccess, error: function(error){ alert("Error checking username " + error); } };
	    var defer = dojo.xhrGet(xhrArgs);
	    //console.dir(defer.results);
	    return(defer.results[0]);
	}else{
	    return(true);
	}
    }
}


function xhrSuccess(data)
{
    return(data.result);    //console.dir(data);
}
