
if( !invite) var invite = {
	
	addressesToAdd: new Array(),
	connectLock: false,
	emailOrNetwork: false,
	error5000: "unknown error",
	error5001: "unknown error",
	error5002: "unknown error",
	error5003: "mail error",
	error5004: "invalid email",
	error5005: "Login failed. Check your email/password and try again",
	error5006: "social netowrk problem",
	THANKS_STEP: "thanks",
	SERVICE_STEP: "service",
	EMAILS_STEP: "emails",
	SEND_INVITATION_STEP: "send_invitation",
	DEFAULT_MESSAGE: "Enter emails separated by commas"
	
	
	
};

invite.getError = function( errorString )
{
	if( errorString.indexOf("5000") > -1)
		return eval("invite.error" + 5000);
	if( errorString.indexOf("5001") > -1)
		return eval("invite.error" + 5001);
	if( errorString.indexOf("5002") > -1)
		return eval("invite.error" + 5002);
	if( errorString.indexOf("5003") > -1)
		return eval("invite.error" + 5003);
	if( errorString.indexOf("5004") > -1)
		return eval("invite.error" + 5004);
	if( errorString.indexOf("5005") > -1)
		return eval("invite.error" + 5005);
	if( errorString.indexOf("5006") > -1)
		return eval("invite.error" + 5006);

	
	return eval("invite.error" + 5000);
}

invite.checkClick = function( event )
{
	var element = utils.whichElement( event );
	if( element && element.name && element.name == 'adrs')
	{
		if( element.checked )
			invite.addAddress( element.value );
		else
			invite.removeAddress( element.value );
	}
	if( element && element.id && element.id == 'se')
	{
		var checkboxes = document.getElementsByName('adrs');
		
		for(var index=0; index<checkboxes.length; index++) {
		
			checkboxes[index].checked = element.checked;
			if( checkboxes[index].checked )
				invite.addAddress( checkboxes[index].value );
			else
			{
				invite.removeAddress( checkboxes[index].value );
			}
		}
	}
}
invite.addAddress = function( address )
{
	invite.addressesToAdd.push( address )	
}
invite.removeAddress = function( address )
{
	for(var index=0; index<invite.addressesToAdd.length; index++) {
		
		if( invite.addressesToAdd[index] == address  )
		{
			invite.addressesToAdd.splice(index,1);
		}
	}
}

invite.populateAddresses = function(serverList, emailOrNetwork)
{
	var addresses = "";
	invite.emailOrNetwork  = emailOrNetwork;
	invite.addressesToAdd = new Array();
	
	document.getElementById('se').checked = true;
	
	if( emailOrNetwork )
	{
		for(var index=0; index<serverList.length; index++) {
			var name = serverList[index][0];
			var email = serverList[index][1];
			
			if (name == email){
			//	alert (name);
				email= "";
			}else{
				email =  ' (' + email + ')';
			}
			addresses+= '<input checked type="checkbox" id="' + index + '" name="adrs" value="' + serverList[index][1] + '"/><label for="' + index + '">' + name  + email + '</label>'
		}
	}
	else
	{
		for(var index=0; index<serverList.length; index++) {
			
			addresses+= '<input checked type="checkbox" id="' + index + '" name="adrs" value="' + serverList[index][1] + '"/><label for="' + index + '">' + serverList[index][0] + '</label>'
		}
	}
	
	
	document.getElementById('logginButton').className = document.getElementById('logginButton').className.replace(/ajaxTransCommandButton/,'');
	document.getElementById('logginButton').value = "Continue";
	document.getElementById('socialDataLoading').className = document.getElementById('socialDataLoading').className.replace(/\bvisible/,'invisible');
	document.getElementById('mySimpleScroll').innerHTML = addresses;
	serverList = null;

}
invite.sendAnonymous = function()
{
	var to = document.getElementById('anonymousTo').value;
	var email = document.getElementById('anonymousEmail').value;
	var inviterName =	document.getElementById('anonymousName').value;
	var message = document.getElementById('anonymousMessage').value;
	
	//validates emails
	function CheckMail1(anonymousTo){  
		var reg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
		var address = to;
			if (address.search(reg) == -1 ){
				return true;  
			}
	}
	function CheckMail2(anonymousEmail){  
		var reg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
		var address = email;
			if (address.search(reg) == -1 ){
				return true;  
			}
	}
	//validates username is of alpha numeric value
	function CheckAlphaNum(Str){
		var AlphaNum = Str;
		for(var j=0; j<AlphaNum.length; j++){
			var Char1 = AlphaNum.charAt(j);
			if( !( (Char1 >='0'&& Char1<='9') || (Char1 >= 'a' && Char1 <= 'z') || (Char1 >= 'A' &&	Char1<='Z') ) ){
				return false;
			}
		}
		return true;
	}
	function CheckUserName(){
		UserName = inviterName.length;
		if ( !CheckAlphaNum(document.getElementById('anonymousName').value) ){
			return true;
		}		
	}	
	
	if( to.isEmpty() || email.isEmpty() || inviterName.isEmpty() ){
		document.getElementById('anonymous_loginErrorMessage').innerHTML = "One field or more is empty";
	}
	
	else if (CheckMail1()){
		document.getElementById('anonymous_loginErrorMessage').innerHTML = "None of the recipients' emails are valid";
	}
	else if (CheckMail2()){
		document.getElementById('anonymous_loginErrorMessage').innerHTML = "Your email address is not valid";
	}
	else if (CheckUserName()){
		document.getElementById('anonymous_loginErrorMessage').innerHTML = "Please enter your name. Use letters only";
	}
	else if( !invite.connectLock )
	{
		document.getElementById('anonymousInvitationButton').className = "commandButton ajaxTransCommandButton";
		document.getElementById('anonymousInvitationButton').value = "Sending..."
		document.getElementById('anonymous_loginErrorMessage').innerHTML = "";
		document.getElementById('anonymousInvitationLoading').className = document.getElementById('anonymousInvitationLoading').className.replace(/\binvisible/,'visible');
		
		invite.connectLock = true;			
		
		UserInvitationBean.sendInvitations(to, message, inviterName, email, true, {
			
			//callback: function(errorList){
			callback: function(){
				
				document.getElementById('anonymousInvitationButton').className = document.getElementById('anonymousInvitationButton').className.replace(/ajaxTransCommandButton/,'');
				document.getElementById('anonymousInvitationButton').value = "Invite them in!";
				document.getElementById('anonymousInvitationLoading').className = document.getElementById('anonymousInvitationLoading').className.replace(/\bvisible/,'invisible');
				invite.connectLock = false;
				invite.goToStep( invite.THANKS_STEP );
				
			},
			errorHandler: function(error){
				
				document.getElementById('anonymousInvitationButton').className = document.getElementById('anonymousInvitationButton').className.replace(/ajaxTransCommandButton/,'');
				document.getElementById('anonymousInvitationButton').value = "Invite them in!";
				document.getElementById('anonymousInvitationLoading').className = document.getElementById('anonymousInvitationLoading').className.replace(/\bvisible/,'invisible');
				invite.connectLock = false;
				
			}
			
		})
		
	}
	
}
invite.sendLoggedInInvitation = function()
{
	if( invite.connectLock ) return;
	var addresses = invite.addressesToAdd.join() + "," + document.getElementById('loggedInTo').value;
	var message = document.getElementById('message').value;
	invite.connectLock =true;

	if( invite.emailOrNetwork )
	{
		
		UserInvitationBean.sendInvitations(addresses,message, null, null, false,{
		
			callback: function(data) { 
				
				document.getElementById('sendInvitationButton').className = document.getElementById('sendInvitationButton').className.replace(/ajaxTransCommandButton/,'');
				document.getElementById('sendInvitationButton').value = "Invite them in!";
				document.getElementById('invitationLoading').className = document.getElementById('invitationLoading').className.replace(/\bvisible/,'invisible');
				invite.connectLock = false;
				invite.goToStep( invite.THANKS_STEP );
			},
			
			errorHandler: function(error) {
				
				invite.connectLock = false;
			}
		
		});	
		
		
		
	}
	
	else
	{
		
		var username = document.getElementById('username').value;
		var password = document.getElementById('password').value;
		var networkBox = document.getElementById('networkOptions');
		var network = networkBox.options[networkBox.selectedIndex].value;
		
		UserInvitationBean.sendInivtationToSocialNetwork(username, password, invite.addressesToAdd,message,network, {
		
			callback: function(){ 
				
				invite.connectLock = false;
				document.getElementById('sendInvitationButton').className = document.getElementById('sendInvitationButton').className.replace(/ajaxTransCommandButton/,'');
				document.getElementById('sendInvitationButton').value = "Invite them in!";
				document.getElementById('invitationLoading').className = document.getElementById('invitationLoading').className.replace(/\bvisible/,'invisible');
				invite.goToStep( invite.THANKS_STEP );
			},
			errorHandler: function(error){
				
				invite.connectLock = false;
				
			}
		
		})
	}
	
	document.getElementById('sendInvitationButton').className = "commandButton ajaxTransCommandButton";
	document.getElementById('sendInvitationButton').value = "Sending..."
	document.getElementById('loggedIn_loginErrorMessage').innerHTML = "";
	document.getElementById('invitationLoading').className = document.getElementById('invitationLoading').className.replace(/\binvisible/,'visible');
		
}
invite.loginToService = function()
{
	if( invite.connectLock ) return;
	
	var service = 		null;
	var emailOrNetwork = false;
	var getContacts = false;
	var simpleSend = false;
	var emailList = 	document.getElementById('emailOptions');
	var networkList = 	document.getElementById('networkOptions');
	var username = 		document.getElementById('username').value;
	var password = 		document.getElementById('password').value; 
	var simpleAddresses= document.getElementById('loggedInTo').value;
	
	
	var mailValidator = function(email2Validate) {
		var reg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
		if (email2Validate.search(reg) == -1 ){
			return false;  
		} else {
			return true;
		}
	}
			
	document.getElementById('loginErrorMessage').innerHTML = "";
	
	if( ( !username.isEmpty() && !password.isEmpty() ) ){
		getContacts = true;
	
	    var username= document.getElementById('username').value;
		var at=/@/;
		var emailOptions = document.getElementById('emailOptions');
		var whichEmail = emailOptions.selectedIndex;
		if( !username.match(at) ){
			switch (whichEmail){
				case 1:
				  username = document.getElementById('username').value + '@gmail.com';
				  break;
				case 2:
					username = document.getElementById('username').value + '@yahoo.com';
				  break;
				case 3:
					username = document.getElementById('username').value + '@aol.com';
				  break;
				case 4:
					username = document.getElementById('username').value + '@hotmail.com';
				  break;
				case 6:
					username = document.getElementById('username').value + '@gmx.com';
				  break;
				case 10:
					username = document.getElementById('username').value + '@lycos.com';
				  break;
				case 14:
					username = document.getElementById('username').value + '@rediffmail.com';
				  break;
				default:
					document.getElementById('loginErrorMessage').innerHTML = "Login failed. Check your email/password and try again";
					return false;
			}
		}
	}

	if( !simpleAddresses.isEmpty() && (trim(simpleAddresses) != invite.DEFAULT_MESSAGE ))
	{
		if (mailValidator(simpleAddresses)) {
			simpleSend = true;
			invite.emailOrNetwork = true;
		} else {
			document.getElementById('loggedIn_loginErrorMessage').innerHTML = "The recipient's email is invalid";
			return;
		}
	}
		
	if( !simpleSend && !getContacts ) return;
	
	
	if( emailList.selectedIndex > 0)
	{
		service = emailList.options[emailList.selectedIndex].value;
		emailOrNetwork = true;
	}
	if( networkList.selectedIndex > 0)
	{
		service = networkList.options[networkList.selectedIndex].value;
		emailOrNetwork = false;
	}
	if( service == null) return;
	
	if( getContacts )
	{
			invite.connectLock = true;
		
			UserInvitationBean._path = utils.getSecuredPagesURL() + "dwr/"
			
			UserInvitationBean.getContacts(username, password, service, emailOrNetwork,{
				
				callback: function(serverList){ 
				
					invite.connectLock = false;
					invite.populateAddresses(serverList,emailOrNetwork);
					invite.goToStep( invite.EMAILS_STEP );
					UserInvitationBean._path = "/dwr";
					
				},
				rpcType: dwr.engine.ScriptTag,
				httpVerb:"POST",
				
				errorHandler: function( error ){
					
					var errorCause = invite.getError(error);
					document.getElementById('loginErrorMessage').innerHTML = errorCause;
					document.getElementById('logginButton').className = "commandButton";
					document.getElementById('logginButton').value = "Continue"
					document.getElementById('socialDataLoading').className = document.getElementById('socialDataLoading').className.replace(/\bvisible/,'invisible');
					UserInvitationBean._path = "/dwr";
					invite.connectLock = false;	
				}
				
			});
			
			document.getElementById('logginButton').className = "commandButton ajaxTransCommandButton";
			document.getElementById('logginButton').value = "Connecting..."
			document.getElementById('loggedIn_loginErrorMessage').innerHTML = "";
			document.getElementById('socialDataLoading').className = document.getElementById('socialDataLoading').className.replace(/\binvisible/,'visible');
	
			
	}
	
	else if( simpleSend )
	{
		invite.goToStep(invite.SEND_INVITATION_STEP);
	}	
}
invite.goToStep = function( step )
{
	if( step == invite.THANKS_STEP)
	{
		if(document.location.href.indexOf("invite.html") < 0)
			invite.openThanks();
		else
		
			document.location.href = "/thanks.html";
	}
	else if(step == invite.EMAILS_STEP)
	{
		document.getElementById('socialNetsStep').className = document.getElementById('socialNetsStep').className.replace(/\bvisible/,'invisible');
		document.getElementById('contactsStep').style.position = 'relative';
		document.getElementById('contactsStep').style.visibility= 'visible';
		
		document.getElementById('contactsStep').style.zIndex = 0;		
	}
	else if( step == invite.SERVICE_STEP)
	{
		document.getElementById('socialNetsStep').style.display = "block";
	}
	else if( step == invite.SEND_INVITATION_STEP)
	{
		document.getElementById('socialNetsStep').className = document.getElementById('socialNetsStep').className.replace(/\bvisible/,'invisible');
		document.getElementById('contactsStep').className = document.getElementById('contactsStep').className.replace(/\bvisible/,'invisible');
		
		document.getElementById('invitationMessageStep').className = document.getElementById('invitationMessageStep').className.replace(/\binvisible/,'visible');
	}
}
invite.openInvitation = function()
{
	if( document.getElementById('mpl'))
	{
		document.getElementById('mpl').style.display = "none";
	}

	document.getElementById('inlineInvitationDiv').className = document.getElementById('inlineInvitationDiv').className.replace(/invisible/,'visible');

	
	if( document.location.href.indexOf("invite.html") > -1 || 
		//document.location.href.indexOf("join.html") > -1 || 
		document.location.href.indexOf("thanks.html") > -1 || 
		document.location.href.indexOf("create-profile.html") > -1 )
		return;
	
	utils.dimThePage();
	document.getElementById('inlineInvitationDiv').style.zIndex = "200";
	if( globalVariables.isUserSignIn && generalFunctions.isSignedIn() )	
	{
		invite.openLoggedIn();
	}
	else
	{
		invite.openAnonymous();
	}
}
invite.openAnonymous = function()
{
	document.getElementById('anonymousTo').value = invite.DEFAULT_MESSAGE;
	document.getElementById('anonymousInviteStep').className = document.getElementById('anonymousInviteStep').className.replace(/\binvisible/,'visible');
	
}
invite.openLoggedIn = function()
{
	document.getElementById('socialNetsStep').className = document.getElementById('socialNetsStep').className.replace(/\binvisible/,' visible ');
}
invite.openWebMail = function()
{
	invite.closeInvitation('anonymousInviteStep');
	
	generalFunctions.showLoginBox( true );
	globalVariables.wantedToInvite = true;
}
invite.openMailClient = function()
{
	var to = document.getElementById('anonymousTo').value;
	var email = document.getElementById('anonymousEmail').value;
	var name =	document.getElementById('anonymousName').value;
	var message = document.getElementById('anonymousMessage').value;
	
	utils.unDimThePage();
	invite.closeInvitation('anonymousInviteStep');
	
	document.location.href = "mailto:" + to;
}

invite.closeInvitation = function( step )
{
	if( document.getElementById('mpl') )
		document.getElementById('mpl').style.display = "block";
	
	document.getElementById('inlineInvitationDiv').className = document.getElementById('inlineInvitationDiv').className.replace(/visible/,'invisible');
	
	if( step != 'contactsStep')
		document.getElementById(step).className = document.getElementById(step).className.replace(/visible/,'invisible');
	else
	{
		document.getElementById('contactsStep').style.position = "absolute";
		document.getElementById('contactsStep').style.visibility = "hidden";
		document.getElementById('contactsStep').style.top = "0px";
		document.getElementById('contactsStep').style.left = "0px";
		
	}
	
	if( step == 'anonymousInviteStep')
	{
		
		invite.resetAnonymous();
	}
	
	utils.unDimThePage();
		
}
invite.openThanks = function()
{
	document.getElementById('anonymousInviteStep').className = document.getElementById('anonymousInviteStep').className.replace(/\bvisible/,'invisible');
	document.getElementById('invitationMessageStep').className = document.getElementById('invitationMessageStep').className.replace(/\bvisible/,'invisible');
	
	document.getElementById('thanksBox').innerHTML = "Success! Invites sent."
	document.getElementById('thanksBox').className = document.getElementById('thanksBox').className.replace(/\binvisible/,'visible');
	
	window.setTimeout(function(){invite.closeInvitation('thanksBox')},3000);
	invite.resetloggedIn();
}

invite.validate = function(){
/*	if( input.id == 'anonymousTo') invite.anonymousBlur();
	
	var button = document.getElementById('anonymousInvitationButton')
	if( !invite.isValidAnonymousTo()  								 || 
		trim(document.getElementById('anonymousEmail').value) == ""  || 
		trim(document.getElementById('anonymousName').value) == "" ) 
		{
			if( button.className == "commandButton")
				button.className  = "disabledCommandButton";
		}
		else
		{
			 button.className = "commandButton"
		} */
}
invite.anonymousFocus = function()
{
	var val = document.getElementById('anonymousTo');
	if( trim(val.value) == invite.DEFAULT_MESSAGE)
	{
		val.value = "";
	}
	
}
invite.anonymousBlur = function()
{
	var val = document.getElementById('anonymousTo');
	if( trim(val.value) == "")
	{
		val.value = invite.DEFAULT_MESSAGE;
	}	
}
invite.loggedInFocus = function()
{
	var val = document.getElementById('loggedInTo');
	if( trim(val.value) == invite.DEFAULT_MESSAGE)
	{
		val.value = "";
	}
}
invite.loggedInBlur = function()
{
	var val = document.getElementById('loggedInTo');
	if( trim(val.value) == "")
	{
		val.value = invite.DEFAULT_MESSAGE;
	}	
}
invite.isValidAnonymousTo = function()
{
	var val = trim(document.getElementById('anonymousTo').value);
	if( val == "" || val == invite.DEFAULT_MESSAGE )
		return false;
	
	return true;	
}

invite.resetAnonymous = function()
{
	document.getElementById('anonymousTo').value = invite.DEFAULT_MESSAGE;
	document.getElementById('anonymousInvitationLoading').style.display = "none";
}

invite.resetloggedIn = function()
{
	document.getElementById('loggedInTo').value = invite.DEFAULT_MESSAGE;
	document.getElementById('username').value = '';
	document.getElementById('password').value = '';
}

document.onclick = invite.checkClick;
invite.resetsocialNetsStep = function()
{
	document.getElementById('loggedInTo').value = invite.DEFAULT_MESSAGE;
	
}















