/*

    Remember The Milk(tm) (M10) - Copyright (c) 2004-2006 Emily Boyd
                                  Copyright (c) 2004-2006 Omar Kilani
                                  All Rights Reserved. Don't steal, please.

    Non vi sed virtute, non armis sed arte paritur victoria.

*/


var isBrowser=(typeof navigator!=="undefined");var is_ie=isBrowser&&(/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent));var is_ie5=isBrowser&&(is_ie&&/msie 5\.0/i.test(navigator.userAgent));var is_opera=isBrowser&&(/opera/i.test(navigator.userAgent));var is_mac_opera=isBrowser&&(/Mac/i.test(navigator.userAgent));var is_khtml=isBrowser&&(/Konqueror|Safari|KHTML/i.test(navigator.userAgent));var is_gecko=isBrowser&&(/Gecko/i.test(navigator.userAgent));var is_gecko18=isBrowser&&(is_gecko&&/rv:1.8/i.test(navigator.userAgent));var is_safari=isBrowser&&(/Safari/i.test(navigator.userAgent));function cloneObj(obj){var c={};for(var i in obj){c[i]=obj[i];}
return c;}
function cloneArr(inArr){var arr=[];for(var i=0;i<inArr.length;i++){arr[i]=inArr[i];}
return arr;}
Array.prototype.spliceAll=function(i){for(var x in this){if(i==this[x]){this.splice(x,1);}}
return this;};Array.prototype.toHash=function(i){var keys={};for(var i=0;i<this.length;i++){keys[this[i]]=true;}
return keys;};function isHashEmpty(hash){var empty=true;for(var key in hash){if(is(hash[key])){empty=false;break;}}
return empty;}
if(isBrowser&&!window.XMLHttpRequest){window.XMLHttpRequest=function(){var xmlHttp=null;var ex;try{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP.4.0");}
catch(ex){try{xmlHttp=new ActiveXObject("MSXML2.XMLHTTP");}
catch(ex){try{xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}
catch(ex){}}}
return xmlHttp;};}
function Utility(){}
Utility.prototype.escape_utf8=function(data){if(data==""||data==null){return"";}
data=data.toString();var buffer="";for(var i=0;i<data.length;i++){var c=data.charCodeAt(i);var bs=new Array();if(c>65536){bs[0]=240|((c&1835008)>>>18);bs[1]=128|((c&258048)>>>12);bs[2]=128|((c&4032)>>>6);bs[3]=128|(c&63);}else{if(c>2048){bs[0]=224|((c&61440)>>>12);bs[1]=128|((c&4032)>>>6);bs[2]=128|(c&63);}else{if(c>128){bs[0]=192|((c&1984)>>>6);bs[1]=128|(c&63);}else{bs[0]=c;}}}
for(var j=0;j<bs.length;j++){var b=bs[j];var hex=this.nibble_to_hex((b&240)>>>4)+this.nibble_to_hex(b&15);buffer+="%"+hex;}}
return buffer;};Utility.prototype.nibble_to_hex=function(nibble){var chars="0123456789ABCDEF";return chars.charAt(nibble);};Utility.prototype.stopEvent=function(ev){ev||(ev=window.event);if(is_ie){ev.cancelBubble=true;ev.returnValue=false;}else{ev.preventDefault();ev.stopPropagation();}
return false;};Utility.prototype.escapeText=function(t){t=t.replace(/\</g,"&lt;");t=t.replace(/\>/g,"&gt;");t=t.replace(/\&/g,"&amp;");t=t.replace(/\"/g,"&quot;");t=t.replace(/\'/g,"&39#;");t=t.replace(/\*/g,"&42#;");return t;};Utility.prototype.encodeJavaScript=function(arg){var i,o,u,v;switch(typeof arg){case"object":if(arg){if(arg.constructor==Array){o="";for(i=0;i<arg.length;++i){v=this.encodeJavaScript(arg[i]);if(o){o+=",";}
if(v!==u){o+=v;}else{o+="null,";}}
return"["+o+"]";}else{if(typeof arg.toString!="undefined"){o="";for(i in arg){v=this.encodeJavaScript(arg[i]);if(v!==u){if(o){o+=",";}
o+=this.encodeJavaScript(i)+":"+v;}}
return"{"+o+"}";}else{return;}}}
return"null";case"unknown":case"undefined":case"function":return u;case"string":return"\""+arg.replace(/(["\\])/g,"\\$1")+"\"";default:return String(arg);}};Utility.prototype.getEventTarget=function(ev){var targ=null;if(ev.target){targ=ev.target;}else{if(ev.srcElement){targ=ev.srcElement;}}
if(targ.nodeType==3){targ=targ.parentNode;}
return targ;};Utility.prototype.getRandomInt=function(x){return Math.floor(x*Math.random());};Utility.prototype.suffixize=function(iNumber){var sNumber=(""+iNumber);var iLastDigit=parseInt(sNumber[sNumber.length-1],10);if(iLastDigit==1){return iNumber+"st";}else{if(iLastDigit==2){return iNumber+"nd";}else{if(iLastDigit==3){return iNumber+"rd";}else{return iNumber+"th";}}}};Utility.prototype.pluralize=function(n,t){if(rtmLanguage=="en_US"){if(n==1){return n+" "+t;}else{return n+" "+t+"s";}}
return n+" "+fmt(t);};function el(id){if(document.getElementById){return document.getElementById(id);}else{if(window[id]){return window[id];}}
return null;}
function quoted(t){return t?"\""+t+"\"":"\"\"";}
function padded(value){return(value<10?("0"+value):value.toString());}
function addLoadEvent(func){var oldonload=window.onload;if(typeof window.onload!="function"){window.onload=func;}else{window.onload=function(){oldonload();func();};}}
function setCookie(name,value,expires,path,domain,secure){document.cookie=name+"="+escape(value)+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+path:"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");}
function getCookie(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0){return null;}}else{begin+=2;}
var end=document.cookie.indexOf(";",begin);if(end==-1){end=dc.length;}
return unescape(dc.substring(begin+prefix.length,end));}
function deleteCookie(name,path,domain){if(getCookie(name)){document.cookie=name+"="+((path)?"; path="+path:"")+((domain)?"; domain="+domain:"")+"; expires=Thu, 01-Jan-70 00:00:01 GMT";}}
function extendObject(me,them){for(var proto in them.prototype){me.prototype[proto]=them.prototype[proto];}}
function getfmt(s){return typeof STRING_TABLE!=="undefined"&&is(STRING_TABLE[s])?STRING_TABLE[s]:s;}
function fmt(s,args){s=typeof STRING_TABLE!=="undefined"&&is(STRING_TABLE[s])?STRING_TABLE[s]:s;if(args instanceof Array){for(var i=0;i<args.length;i++){s=s.replace("%"+(i+1),args[i]);}
return s;}else{return s.replace("%1",args);}}
function qtd(t){return t?"\""+t+"\"":"\"\"";}
function quoteSearchTerm(str){if(str.charAt(0)!=="\""&&str.indexOf(" ")>-1&&str.charAt(str.length-1)!=="\""){return"\""+str+"\"";}
return str;}
function debracket(str){if(str&&str.charAt(0)==="("&&str.charAt(str.length-1)==")"){return str.substring(1,str.length-1);}
return str;}
function normalizeSearchEntry(s){var x=s.split(/[\s;,]+/);var len=x.length;var output={};var inQuote=false;var words;for(var i=0;i<len;i++){if(x[i].charAt(0)=="\""){words=[];while(i<len&&x[i].charAt(x[i].length-1)!=="\""){words.push(x[i]);i++;}
if(i<len){words.push(x[i]);}
output[words.join(" ")]=true;}else{output[x[i]]=true;}}
var out=[];for(var x in output){out.push(x);}
return out;}
function Label(labelId,inputId){this.labelId=labelId;this.label=el(labelId);this.inputId=inputId;this.input=el(inputId);if(is_safari){var self=this;this.label.onclick=function(){if(self.input.type=="radio"||self.input.type=="checkbox"){self.input.checked=!self.input.checked;if(self.input.onclick){self.input.onclick();}}else{if(self.input.type=="text"||self.input.type=="password"){self.input.focus();}}};}}
var rtmp="/rtm.rtm?";var r=null;var signupform;var firstname;var firstnameStatus;var lastname;var lastnameStatus;var username;var usernameStatus;var email;var emailStatus;var dateformatAm,dateformatEu,dateformatStatus;var password;var firstPasswordStatus;var passwordConfirm;var passwordStatus;var termsStatus;var terms;var submitButton;var uF=false;var uE=false;var cache={};String.prototype.trim=new Function("return this.replace(/^\\s+|\\s+$/g,'')");String.prototype.isEmpty=new Function("var x = this.trim(); if (x.length == 0) { return true; } else { return false; }");function checkUsername(username){var filter=/^([a-zA-Z0-9_\.])+$/;if(filter.test(username)){return true;}else{return false;}}
function checkName(name){return true;}
function checkAlnumName(name){var filter=/^([a-zA-Z0-9_\.\-])+\s?$/;if(filter.test(name)){return true;}else{return false;}}
function checkMail(email){var filter=/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;if(filter.test(email)){return true;}else{return false;}}
function encodeJavaScript(arg){var i,o,u,v;switch(typeof arg){case"object":if(arg){if(arg.constructor==Array){o="";for(i=0;i<arg.length;++i){v=encodeJavaScript(arg[i]);if(o){o+=",";}
if(v!==u){o+=v;}else{o+="null,";}}
return"["+o+"]";}else{if(typeof arg.toString!="undefined"){o="";for(i in arg){v=encodeJavaScript(arg[i]);if(v!==u){if(o){o+=",";}
o+=encodeJavaScript(i)+":"+v;}}
return"{"+o+"}";}else{return;}}}
return"null";case"unknown":case"undefined":case"function":return u;case"string":return"\""+arg.replace(/(["\\])/g,"\\$1")+"\"";default:return String(arg);}}
function cxo(){var xhttp=null;try{xhttp=new ActiveXObject("Msxml2.XMLHTTP");}
catch(e){try{xhttp=new ActiveXObject("Microsoft.XMLHTTP");}
catch(x){xhttp=null;}}
if(!xhttp&&typeof XMLHttpRequest!="undefined"){xhttp=new XMLHttpRequest();}
return xhttp;}
function rtmreq(ac,ar){if(r&&r.readyState!=0){r.abort();}
r=cxo();if(r){q=rtmp+"&format=js&ac="+ac+"&ar="+ar;r.open("GET",q,true);r.onreadystatechange=function(){if(r.readyState==4){if(r.responseText){if(r.responseText.charAt(0)=="<"){uE=true;setSuccess(usernameStatus);}else{uE=false;eval(r.responseText);}}}};r.send(null);}}
function de(n){return document.getElementById(n);}
function cacheDom(){signupform=de("signupform");firstname=de("firstname");firstnameStatus=de("firstnameStatus");lastname=de("lastname");lastnameStatus=de("lastnameStatus");username=de("username");usernameStatus=de("usernameStatus");email=de("email");emailStatus=de("emailStatus");password=de("password");firstPasswordStatus=de("firstPasswordStatus");passwordConfirm=de("password_confirm");passwordStatus=de("passwordStatus");dateformatAm=de("dateformat_am");dateformatEu=de("dateformat_eu");dateformatStatus=de("dateformatStatus");terms=de("terms");termsStatus=de("termsStatus");submitButton=de("signupsubmit");}
function cacheImages(){var errorImage=new Image();var successImage=new Image();errorImage.src="/signup/cross.png";successImage.src="/signup/tick_small.png";}
function setSuccess(o,m){o.innerHTML="<span class=\"success_msg\">"+(m==null?"&nbsp;":m)+"</span>";o.className="success";}
function setError(o,m){o.innerHTML="<span class=\"error_msg\">"+(m==null?"&nbsp;":m)+"</span>";o.className="error";}
function doActions(){firstname.onkeyup();lastname.onkeyup();username.onkeyup();password.onkeyup();passwordConfirm.onkeyup();email.onkeyup();dateformatAm.onclick();dateformatEu.onclick();terms.onclick();}
function armSafariLabels(){if(typeof is_safari!=="undefined"&&is_safari){new Label("lfirstname","firstname");new Label("llastname","lastname");new Label("lusername","username");new Label("lpassword","password");new Label("lpassword_confirm","password_confirm");new Label("lemail","email");new Label("ldateformat_eu","dateformat_eu");new Label("ldateformat_am","dateformat_am");new Label("lterms","terms");}}
function init(){
	if(de("firstname")===null){
		return false;
	}
	armSafariLabels();
	cacheDom();
	cacheImages();
	firstname.onkeyup=checkFirstname;
//	lastname.onkeyup=checkLastname;
	username.onkeyup=checkUser;
	password.onkeyup=checkFirstPassword;
	passwordConfirm.onkeyup=checkPassword;
	signupform.onsubmit=checkForm;
	email.onkeyup=function(){
		if(checkMail(email.value)){
			if(typeof emailInUse==="undefined"||emailInUse===null){
				setSuccess(emailStatus);
			}else{
				if(email.value.trim()!==emailInUse.trim()){
					setSuccess(emailStatus);
				}else{
					setError(emailStatus,"");
				}
			}
		}else{
			setError(emailStatus,"");
		}
	};
	username.onkeyup=function(){
		if(username.value.trim().length < 3){
			setError(usernameStatus,"");
		}else{
			setSuccess(usernameStatus);
		}
	}
//		if(!uF){
//			var fullName=firstname.value.toLowerCase()+"."+lastname.value.toLowerCase();
//			if(checkAlnumName(fullName)){
//				username.value=fullName;
//				username.select();
//				uF=true;
//				checkUser();
//				return false;
//			}else{
//				return false;
//			}
//		}
//	};
/*	terms.onclick=function(){
		if(checkTerms()){
			setSuccess(termsStatus);
		}else{
			setError(termsStatus);
		}
	};
	dfs=function(){
		if(checkDateformat()){
			setSuccess(dateformatStatus);
		}else{
			setError(dateformatStatus);
		}
	};
	dateformatAm.onclick=dfs;
	dateformatEu.onclick=dfs;
	if(typeof errorField==="undefined"||errorField===null){
		firstname.focus();
	}*/
}
function R(c){cache[c.person]=c.available;}
function checkNames(){return(!(firstname.value.trim().length==0&&!checkName(firstname.value)&&!checkName(lastname.value)&&lastname.value.trim().length==0));}
function checkDateformat(){return dateformatAm.checked==true||dateformatEu.checked==true;}
function checkTerms(){return terms.checked==true;}
function checkForm(){doActions();if(checkPassword()&&checkUser(true)&&checkMail(email.value)&&checkNames()&&checkDateformat()&&checkTerms()){return true;}
return false;}
function checkFirstPassword(){if(password.value.trim().length==0){setError(firstPasswordStatus,"");return false;}else{if(password.value.trim().length<5){setError(firstPasswordStatus,"");return false;}else{setSuccess(firstPasswordStatus);return false;}}}
function checkPassword(){checkFirstPassword();if(passwordConfirm.value.trim().length==0){setError(passwordStatus,"");return false;}else{if(passwordConfirm.value.trim().length<4){setError(passwordStatus,"");return false;}}
if(password.value==passwordConfirm.value){setSuccess(firstPasswordStatus);setSuccess(passwordStatus);return true;}else{setError(passwordStatus,"");return false;}}
function stripPeriods(u){if(u!==null){return u.replace(/\./g,"");}
return null;}
function checkUser(finalCheck){if(checkUsername(username.value)==false){setError(usernameStatus,"");return false;}else{if(stripPeriods(username.value).trim().length<2){setError(usernameStatus,"");return false;}}
if(uE&&finalCheck){return true;}
var user=stripPeriods(username.value);if(cache[user]==null){rtmreq("auth.checkUser",encodeJavaScript([user,username.value]));return false;}else{if(cache[user]){setSuccess(usernameStatus,username.value+" is available!");return true;}else{setError(usernameStatus,username.value+" is not available");return false;}}}
function checkFirstname(){if(!firstname.value.isEmpty()&&checkName(firstname.value)){setSuccess(firstnameStatus);return true;}else{if(firstname.value.isEmpty()){setError(firstnameStatus,"");}else{setError(firstnameStatus,"");}
return false;}}
function checkLastname(){if(!lastname.value.isEmpty()&&checkName(lastname.value)){setSuccess(lastnameStatus);return true;}else{if(lastname.value.isEmpty()){setError(lastnameStatus,"");}else{setError(lastnameStatus,"Invalid characters in last name");}
return false;}}
// Build 6 -- Generated Thu Jan 26 04:25:15 2006 UTC
