registerNamespaces("Plaxo");

Plaxo.Util.Timer.setTimersEnabled(false);

Plaxo.byId=function(elem){
	if(typeof elem=='string'){
		elem=document.getElementById(elem)
	}
	return elem
};

Plaxo.Class={
	create:function(){
		return function(){
			this.initialize.apply(this,arguments)
		}
	}
};

Plaxo.ABLauncher=Plaxo.Class.create();

Plaxo.ABLauncher.prototype={
	initialize:function(){
		Plaxo.Debug.trace('initializing');
		this.name="Plaxo.ABLauncher 1.0";
		this.abWin=null;
		this.currentEmails={}
	}
	,dialogWidth:460,dialogHeight:480,toQueryString:function(options){
		var queryComponents=[];
		for(key in options){
			if(typeof options[key]=='function')continue;
			var queryComponent=encodeURIComponent(key)+'='+encodeURIComponent(options[key]);
			queryComponents.push(queryComponent)
		}
		return queryComponents.join('&')
	}
	,showABChooser:function(plaxoHost,callbackPage,extraOptions)
	{
		if(!this.abWin||this.abWin.closed)
		{
			if(callbackPage.length>0&&callbackPage.charAt(0)!='/')
			{
				callbackPage='/'+callbackPage
			}
			var cb=location.protocol+'//'+location.host+callbackPage;
			extraOptions.cb=cb;
			extraOptions.host=location.href;
			extraOptions.ts=new Date().getTime();
			var qs=this.toQueryString(extraOptions);
			var url='https://'+plaxoHost+'/ab_chooser?'+qs;
			if(extraOptions.plaxoMembersOnly)
			{
				url+='&direct=1'
			}else
			{
				var emails=this.getCurrentEmailList().join(',');
				url+='&t=import&emails='+escape(emails)
			}			
			this.abWin = popup(url,"PlaxoABC",this.dialogWidth,this.dialogHeight,'resizable=yes,scrollbars=no');
			
            if(!this.abWin || this.abWin.closed || typeof this.abWin.closed == 'undefined') 
            { 
                return false;
            }
            else
            {
                return true;
            }
		}
		if(this.abWin)
		{
			this.abWin.focus()
			return true;
		}
		return false;
	}
	,getCurrentEmailList:function(){
		var emails=[];
		for(email in this.currentEmails){
			emails.push(email)
		}
		return emails
	}
	,extractEmails:function(str){
		var index=0;
		while(true){
			index=str.indexOf('@',index);
			if(index==-1) break;
			var start=Plaxo.String.findBoundary(str,index-1,false);
			var end=Plaxo.String.findBoundary(str,index+1,true);
			var email=str.substring(start,end+1).toLowerCase();
			this.currentEmails[email]=1;
			index++
		}
	}
	,hasCurrentEmail:function(email){
		return this.currentEmails[email.toLowerCase()];
	}
	,addCheckedRecipients:function(text){
		onABCommComplete(text);
		return true;
	}
	,setTextAreaValue:function(str){
		return;
	}
};

Plaxo.abl = null;

function showPlaxoABChooser(callbackPage,plaxoHost,extraOptions)
{
	if(!Plaxo.abl) Plaxo.abl = new Plaxo.ABLauncher();
	if(!plaxoHost) plaxoHost = 'www.plaxo.com';
	if(!extraOptions) extraOptions = {};
	return Plaxo.abl.showABChooser(plaxoHost,callbackPage,extraOptions)
}