// Class Stuff	

	Akordion = function( div ) {
		this.wrapper = div;
		this.expanded = false;
	}
	Akordion.prototype.observe = function( node ) {
		var images = this.wrapper.getElementsByTagName('img');
		for ( var i = 0; i < images.length; i++ ) {
			images[i].order = i + 1;
			Event.observe( images[i], 'click', this.handleClick.bindAsEventListener(this) );
		}	
		
				
		if ( typeof( node ) != 'undefined' ) {
			Event.observe( node, 'click', this.handleClick.bindAsEventListener(this) );
		}
	}
	Akordion.prototype.handleClick = function( event ) {

		
		var images = this.wrapper.getElementsByTagName('img');
		var pargs = this.wrapper.getElementsByTagName('div'); 
		var order;
		
		try {
		  if( this.effect.state == 'running' ) return;
		}
		catch (e) {}
		
		try {
			order = Event.element(event).order;
		}
		catch(e) {
			order = undefined;
		}
		
		if ( typeof( order ) == 'undefined' && !this.expanded ) {
			Event.stop( event );
		}
		
		
		
		if ( this.expanded ) {
			//$('tourImage').style.visibility  = 'hidden';
			new Effect.Fade('tourImage', {duration: 0.2, delay: 0});
			
			
			for ( var i = 0; i < images.length; i++ ) {
				//images[i].style.display = "block";
				pargs[i].style.display = "none";
				//new Effect.Fade(pargs[i]);
				new Effect.Appear(images[i], {duration: 0.5});
			}
			window.setTimeout( function() {$('tourImage').src = 'images/tour' + 1 + '.jpg'}, 100 );
			new Effect.Appear('tourImage', {duration: 0.7, delay: 0.3});
			
		}
		else {
			new Effect.Fade('tourImage', {duration: 0.2, delay: 0});
			//$('tourImage').style.display  = 'none';
			
			new Effect.BlindDown('tourImage', {duration: 0.6, delay: 0, queue: 'end'});
			for ( var i = 0; i < images.length; i++ ) {
				if ( i + 1 != order ) {
					//images[i].style.display = "none";
					//pargs[i].style.display = "none";
					this.effect = new Effect.Shrink(images[i], {duration: 0.9});
				}
				else {
					//pargs[i].style.display = "block";
					
				}
				
			}
			
			//window.setTimeout( "$('tourImage').style.visibility  = 'visible';", 900 );
			new Effect.BlindDown(pargs[order-1], {duration: 0, delay: 0.7});
			window.setTimeout( function() {$('tourImage').src = 'images/tour' + order + '.jpg'}, 100 );
		}
		this.expanded = ! this.expanded;
		Event.stop( event );
	} 

	Tabs = function( count ) {
 		this.count = count > 0 ? count : 0;
 		this.current = 0;
 		this.next();
 	}
 	Tabs.prototype.next = function() {
 		if ( this.current < this.count ) {
 			if ( this.current > 0 ) $('tab' + this.current).style.display = "none";
 			this.current += 1;
 			$('tab' + this.current).style.display = "block";
 		}
 	}
 	Tabs.prototype.prev = function() {
 		if ( this.current > 1 ) {
 			$('tab' + this.current).style.display = "none";
 			this.current -= 1;
 			$('tab' + this.current).style.display = "block";
 		}
 	}
 	
// Util Stuff	
 	
	function copy(inElement) {
	  if (inElement.createTextRange) {
	    var range = inElement.createTextRange();
	    if (range)
	      range.execCommand('Copy');
	  } else {
	    var flashcopier = 'flashcopier';
	    if(!document.getElementById(flashcopier)) {
	      var divholder = document.createElement('div');
	      divholder.id = flashcopier;
	      document.body.appendChild(divholder);
	    }
	    document.getElementById(flashcopier).innerHTML = '';
	    var divinfo = '<embed src="swf/_clipboard.swf" FlashVars="clipboard='+encodeURIComponent(inElement.value)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
	    document.getElementById(flashcopier).innerHTML = divinfo;
	  }
	}
	
// Inputs Stuff

	function observeInputFields() {
		for ( var i in inputsDef ) {
			inputs = document.getElementsByName( i );
			for ( var j = 0; j < inputs.length; j++ ) {
			  if( i == 'project_name' || i == 'dream_project_name' ) continue;
				if( inputs.item(j).value == inputsDef[i] ) Element.addClassName( inputs.item(j), 'placeholder' );
				Event.observe( inputs.item(j), 'focus', handleInputClick2.bindAsEventListener(this) );
				Event.observe( inputs.item(j), 'blur', handleInputBlur.bindAsEventListener(this) );
			}
		}
	}
	
	function revertInputFields() {
		for ( var i in inputsDef ) {
		  if( i == 'project_name' || i == 'dream_project_name' ) continue;
			inputs = document.getElementsByName( i );
			for ( var j = 0; j < inputs.length; j++ ) {
			  Element.addClassName( inputs.item(j), 'placeholder' );
			  Element.removeClassName( inputs.item(j), 'error' );
				try {
				  Element.removeClassName( $(inputs.item(j).name + '_label'), 'error' );
    	  }
        catch (e) {}
				inputs.item(j).value = inputsDef[i];
			}
		}
		revertAutocomplete( stateID );
		revertAutocomplete( countryID );
		
		var elements = document.getElementsByClassName('plMns');
		for ( var j = 0; j < elements.length; j++ ) {
			var func = elements[j].onclick.bind(elements[j]);
			try {
			  func();
			} catch (e) {}
		}
	}
	
	function protectInputFields( Id ) {
		inputs = $(Id).getElementsByTagName( 'textarea' );
		for ( var j = 0; j < inputs.length; j++ ) {
			inputs.item(j).readOnly = true;
		}
		inputs = $(Id).getElementsByTagName( 'input' );
		for ( var j = 0; j < inputs.length; j++ ) {
			inputs.item(j).readOnly = true;
		}
	}
	
// Handler Stuff	

  function handleKeyDown(event) {
    if(event && event.keyCode == Event.KEY_ESC){
        // if the key pressed is the escape key, dismiss the dialog
        if( typeof( modalBox.cancel ) == 'function' ) modalBox.cancel();
    }
    else if ( event && event.keyCode == Event.KEY_RETURN ) {
        if( typeof( modalBox.submit ) == 'function' ) modalBox.submit();
    }
    
    return false;
  }

  
	function handleLogInClick() {
	  
	  if( !canShowModal() ) return false;
	  
	  modalBox.box = $('loginFormBox');
	  modalBox.submit = handleLogInFormSubmit;
	  modalBox.cancel = handleLogInFormCancel;
	  
		new Effect.Appear('loginFormBox', {duration:0.7});
		//$('loginFormBox').style.display = 'block';
		hideLoader( '', 'loginIndicator' ); 
		
    window.setTimeout("$('loginFocused').focus()",250);
		return false;
	}
	function handleLogInFormCancel() {
	  clearModalBox();
		new Effect.Fade('loginFormBox', {duration:0.7});
		//$('loginFormBox').style.display = 'none';
		return false;
	}

	function handleForgotFormCancel() {
	  clearModalBox();
		new Effect.Fade('forgotFormBox', {duration:0.7});
		//$('forgotFormBox').style.display = 'none';
		return false;
	}
	
	function handleForgotClick() {
	  
	  if( !canShowModal() ) return false;
	  
	  modalBox.box = $('forgotFormBox');
	  modalBox.submit = handleForgotFormSubmit;
	  modalBox.cancel = handleForgotFormCancel;
	  
		new Effect.Appear('forgotFormBox', {duration:0.7});
		window.setTimeout("$('forgotFocused').focus()",250);
		//$('forgotFormBox').style.display = 'block';
		return false; 
	}

	function handleInputClick2( event ) {

		var obj = Event.element(event);
 	
 		if ( typeof( obj ) == "undefined" || !( obj.name in inputsDef ) ) return;
 		
 		Element.removeClassName( obj, 'error' );	
 		Element.removeClassName( obj, 'placeholder' );	
 		obj.parentNode.className += ' inputH';

	  try {
	    Element.removeClassName( $(obj.name + '_label'), 'error' );
	  }
    catch (e) {}
 		
 		if( obj.value == inputsDef[obj.name] ) {
			obj.focus();
 			obj.select();
 		}
 	}
 	function handleInputBlur( event ) {

		var obj = Event.element(event);
 	
 		if ( typeof( obj ) == "undefined" || !( obj.name in inputsDef ) ) return;
 		
 		Element.removeClassName( obj.parentNode, 'inputH' );	
 		
 		if( obj.value == '' ) {
			obj.value = inputsDef[obj.name];
 		}
 		if( obj.value == inputsDef[obj.name] ) {
 		  Element.addClassName( obj, 'placeholder' );	
 		}
 	}

	function handleInputClick( obj, text ) {
 	
 		if ( typeof( obj ) == "undefined" ) return;
 		
 		if( obj.value == text ) {
			obj.focus();
 			obj.select();
 		}
 	}
 
 	

// Hover Stuff	 	
 	var rightLogoTimeout, rightLogoEffect1, rightLogoEffect2;
	function handleLogoIn() {
		try {
		  if( rightLogoEffect1.state == 'running' || rightLogoEffect2.state == 'running' ) return;
		}
		catch (e) {}
		rightLogoEffect1 = new Effect.BlindDown('logoOver', {duration:0.7, delay: 0, queue: 'parallel'});
		//new Effect.Appear('logoOver', {duration:0.7, delay: 0, queue: 'parallel'});
		try {window.clearTimeout(rightLogoTimeout);}catch (e) {}
		rightLogoTimeout = window.setTimeout('rightLogoEffect2 = new Effect.BlindUp(\'logoOver\', {duration:0.7})', 1500 );
		//$('logoOver').style.display = "block";
	}
	function handleLogoOut() {
		//$('logoOver').style.display = "none";
	}
	function handleLogoutIn() {
		$('logoutOver').style.display = "block";
	}
	function handleLogoutOut() {
		$('logoutOver').style.display = "none";
	}
	
// Ajax Stuff		
	
	function handleUploadChange( form ) {
		if( AIM.submit(form, {'onStart' : startUpload, 'onComplete' : completeUpload}) ) { form.submit(); }
	}
	
	function showLoader( Id ) {
		Id = ( typeof( Id ) == 'string' ? Id : 'indicator' );
		$(Id).style.visibility = 'visible';
	}
	function hideLoader( text, Id ) {

		var Id = ( typeof( Id ) == 'string' ? Id : 'indicator' );
		
		if ( typeof( text ) == "string" ) {
			$(Id).innerHTML = text;
		}
		else {
			$(Id).style.visibility = 'hidden';
		}
		
	}	
	

	
	function startUpload() {
        // make something useful before submit (onStart)
        showLoader();
        return true;
    }

    function completeUpload(response) {
        // make something useful after (onComplete)
		//alert(response);
        document.getElementById('photoPath').value = response;
        document.getElementById('photo').src = 
        	'/userdata/picture.php?width=80&height=120&source=' + response;
        hideLoader();
    }
    
    
	function handlePageLinkClick( page ) {
		var pars = { page: page };
		
		var myAjax = new Ajax.Updater('wrapper', gateway, {method: 'get', parameters: pars});
	}
	
	function handleNewsClick( newsId ) {
		if ( typeof( newsId ) == "undefined" ) return;
		
		var pars = { action: 'newsDetail', id: newsId, type: newsType };
		
		var myAjax = new Ajax.Updater('newsDetail', gateway, {method: 'get', onLoading:function() { showLoader() }, onComplete:function(request){ hideLoader( null ); }, parameters: pars});
	}
	
	function handleFriendClick( friendId, userId ) {
		if ( typeof( friendId ) == "undefined" ) return;
		if ( typeof( userId ) == "undefined" ) return;
		
		//UserId = friendId;
		
		var pars = { action: 'friendDetail', id: friendId, user: userId };
		
		var myAjax = new Ajax.Updater('friendDetail', gateway, {method: 'get', evalScripts: true, onLoading:showLoader, onComplete:function(request){ hideLoader( null ); }, parameters: pars});
	}
	
	function handleInvitationClick( friendId ) {
		if ( typeof( friendId ) == "undefined" ) return;
		
		//UserId = friendId;
		
		var pars = { action: 'invitationDetail', id: friendId };
		
		var myAjax = new Ajax.Updater('friendDetail', gateway, {method: 'get', evalScripts: true, onLoading:showLoader, onComplete:function(request){ hideLoader( null ); }, parameters: pars});
	}
	
	
	
	function handleFeedbackClick( form ) {
		
		if ( isLogged() ) {
			feedBackSubmit();
		}
		else {
			if( canShowModal() ) {
			  modalBox.box = $('feedBackModalBox');
		    modalBox.submit =  $('feedbackModalBoxSubmit').onclick;
		    modalBox.cancel =  $('feedbackModalBoxCancel').onclick;
			  new Effect.Appear('feedBackModalBox', {duration:0.7, to:0.95});
			  
			}
		}
	}
	
	function feedBackSubmit( form ) {
		
		var pars = {};

		if ( typeof( form ) == 'object' ) {
			pars['name'] = form['name'];
			pars['email'] = form['email'];
		}
		pars['msg'] = $('feedbackMsg').value;
		pars['action'] = 'feedback';
		
		var myAjax = new Ajax.Request(gateway, {method: 'get', parameters: pars, onComplete: function(req){}});
		
		showModalBox( '<p>Your feedback has been sent.</p><p>Thank you for sharing your thoughts.</p>' );
	}
	
	function handleFeedBackModalBoxClose() {
	  clearModalBox();
		new Effect.Fade('feedBackModalBox', {duration:0.7});
		
		//$('feedBackModalBox').style.display = 'none';
	}
	
	function handleFeedBackModalBoxSubmit() {
		var form = $('feedbackModalForm').serialize(true);
		
		if ( form['name'] == '' || form['name'] == inputsDef['name'] || form['name'] == '' || form['email'] == inputsDef['email'] || !validateEmail( form['email'] )) {
				new Effect.Shake('feedBackModalBox', {duration:0.7});
				return;
			}
		
		handleFeedBackModalBoxClose();
		feedBackSubmit( form );
	}
	
	function handleSearchClick( form ) {
		if ( typeof( form ) != "object" ) return;
		
		var pars = form.serialize(true);
		pars['action'] = 'search';
		
		var myAjax = new Ajax.Updater('searchResults', gateway, {method: 'get', onLoading:showLoader, onFailure: function(request) {alert('fail')}, onComplete:function(request){ hideLoader( null ); }, asynchronous:true, parameters: pars});
	}
	
	function handleLogInFormSubmit() {
		
		var pars = $('loginForm').serialize(true);
		pars['action'] = 'login';
		
		var myAjax = new Ajax.Request(gateway, {method: 'get', onLoading:function(req){ showLoader( 'loginIndicator' ) }, onFailure: function(request) {alert('fail')}, onComplete:completeLogin, asynchronous:true, parameters: pars});
		
		return false;
	}
	
	function handleForgotFormSubmit() {
		
		var pars = $('forgotForm').serialize(true);
		
		if ( !pars['username'] ) {
			new Effect.Shake('forgotFormBox', {duration:0.7});
			return;
		}
		
		pars['action'] = 'forgotPassword';

		var myAjax = new Ajax.Request(gateway, {method: 'get', onComplete: function(req){},parameters: pars});
		
		//$('forgotFormBox').style.display = 'none';
		clearModalBox();
		new Effect.Fade('forgotFormBox', {duration:0.7});
		showModalBox( '<p>Your password has been sent to the email address you entered.</p>' );
	}
	
	function handleLogoutClick() {
	  
	  showModalBox( '<p>Are you sure you want to log out?</p><p> If you log out you will not be able to view your network.</p>', function() {handleModalBoxClose();window.setTimeout(logout, 750)}, '1' );
		
		return false;
	}
	
	function logout() {
	  var pars = { action: 'logout' };
		
		var myAjax = new Ajax.Request(gateway, {method: 'get', onComplete:completeLogout, asynchronous:true, parameters: pars});
		
		return false;
	}
	
	function completeLogin( req ) {
		if ( req.responseText == 'failure' ) {
			hideLoader( 'Failed.', 'loginIndicator' ); 
			new Effect.Shake('loginFormBox', {duration:0.7});
		}
		else {
		  clearModalBox();
			new Effect.Fade('loginFormBox', {duration:0.7});
			$('loginBox').innerHTML = req.responseText;
			req.responseText.evalScripts(); 
			//$('loginFormBox').style.display = 'none';
			
		}
	}
	
	function completeLogout( req ) {
		//$('loginBox').innerHTML = req.responseText;
		//req.responseText.evalScripts(); 
		pageRedirect( '' );
		
	}
	
	function pageRedirect( Page ) {
		window.location = redirectUrl + Page;
	}
	
	function showModalBox( Text, Function, CloseButton ) {
	  
	  if( !canShowModal() ) return;
		
	  if( CloseButton != '1' ) {
	     $('modalBoxCancel').style.display = 'none';
	  }
	  else {
	    $('modalBoxCancel').style.display = 'inline';
	  }
	  
		if ( typeof( Function ) != 'undefined' ) {
			 $('modalBoxSubmit').onclick=Function;
		}
		else {
			$('modalBoxSubmit').onclick=handleModalBoxClose;
		}
		
		modalBox.box = $('modalBox');
		modalBox.submit =  $('modalBoxSubmit').onclick;
		modalBox.cancel =  $('modalBoxCancel').onclick;
		
		$('modalBoxText').innerHTML = Text;
		if( Text.length > 80 ) {
			$('modalBoxText').style.marginTop = '60px';
		}
		else {
			$('modalBoxText').style.marginTop = '85px';
		}
		//$('modalBox').style.display = "block";
		new Effect.Appear('modalBox', {duration:0.7, to:0.95});
	}
	
	function handleModalBoxClose() {
		//$('modalBoxText').innerHTML = '';
		//$('modalBox').style.display = "none";
		
		clearModalBox();
		
		new Effect.Fade('modalBox', {duration:0.7});
	}
	
	function handleSecureClick( Text ) {

		if ( isLogged() ) {
			return true;
		}
		else {
			if ( typeof( Text ) == 'undefined' ) Text = '<p>First you need to create a profile</p><p>click OK to make your profile.</p>';
			showModalBox( Text, function() {handleModalBoxClose();window.setTimeout('pageRedirect(\'create\')', 750)}, '1' );

			return false;
		}
	}
	

	function isLogged() {
		
		var pars = { action: 'getLoggedUserId' };
		
		var myAjax = new Ajax.Request(gateway, {method: 'get', asynchronous:false, parameters: pars});

		return ( myAjax.transport.responseText != '-1' );
		
	}
	
	function isEmpty( Name, Value ) {
		
		var result = false;
		
		if ( Value == '' || Value == '-1' ) result = true;
		
		if ( Name in inputsDef && inputsDef[Name] == Value ) result = true;
		
		//alert(Name + " " + Value + " " + result);
		
		return result;
	}
	
	function showError( input ) {
	 
		Element.addClassName( input, 'error' );	
		Element.removeClassName( input, 'placeholder' );	

	  try {
	    Element.addClassName( $(input.name + '_label'), 'error' );	
	  }
    catch (e) {}
	  
	}
	
	function validateCreateProfile() {
	  
	  //return true; 
	  
	  var success = true;
	  var required = ['firstname', 'lastname', 'email', 'city', 'email', 'city'];
	  
	  for( var i = 0; i < required.length; i++ ) {
	    if( isEmpty( required[i], document.getElementsByName(required[i]).item(0).value ) ) {
	      success = false;
	      showError( document.getElementsByName(required[i]).item(0) );
	    }
	  }

		if ( !isLogged() ) {
			if( isEmpty( 'create_password', document.getElementsByName('create_password').item(0).value ) ) {
			  success = false;
			  showError( document.getElementsByName('create_password').item(0) );
			}
			if( isEmpty( 'create_password2', document.getElementsByName('create_password2').item(0).value ) ) {
			  success = false;
			  showError( document.getElementsByName('create_password2').item(0) );
			}
		}
		
		if (!validateEmail( document.getElementsByName('email').item(0).value )) {
		   success = false;
		   showError( document.getElementsByName('email').item(0) );
		}

		//alert(pars.toSource());
		//alert($('createForm').serialize());
		//alert(empty);
		if( document.getElementsByName('create_password').item(0).value != document.getElementsByName('create_password2').item(0).value ) {
		  success = false;
		  showError( document.getElementsByName('create_password').item(0) );
		  showError( document.getElementsByName('create_password2').item(0) );
		}

		return success;
	}

	function createProfile() {
		
		var pars = {};
		pars['action'] = 'createProfile';
		pars['firstname'] = document.getElementsByName('firstname').item(0).value;
		pars['lastname'] = document.getElementsByName('lastname').item(0).value;
		pars['city'] = document.getElementsByName('city').item(0).value;
		pars['stateID'] = document.getElementsByName('stateID').item(0).value;
		pars['countryID'] = document.getElementsByName('countryID').item(0).value;
		pars['email'] = document.getElementsByName('email').item(0).value;
		pars['website'] = document.getElementsByName('website').item(0).value;
		pars['description'] = document.getElementsByName('description').item(0).value;
		pars['collabID'] = document.getElementsByName('collabID').item(0).value;
		pars['photoPath'] = $('photoPath').value;
		pars['password'] = document.getElementsByName('create_password').item(0).value;
		pars['password2'] = document.getElementsByName('create_password2').item(0).value;
		
		if ( !validateCreateProfile ) return;
		
		pars = $('createForm').serialize( true );
		pars['action'] = 'createProfile';
		pars['project_name'] = new Array();
		pars['project_description'] = new Array();
		pars['project_site'] = new Array();
		for( var i = 0; i < projects.length; i++ ) {
		  if( projects[i] == null ) continue;
			pars['project_name'].push( projects[i]['name'] );
			pars['project_description'].push( projects[i]['description'] );
			pars['project_site'].push( projects[i]['site'] );
		}
		pars['dream_project_name'] = new Array();
		pars['dream_project_description'] = new Array();
		pars['dream_project_site'] = new Array();
		for( i = 0; i < dreamProjects.length; i++ ) {
		  if( dreamProjects[i] == null ) continue;
			pars['dream_project_name'].push( dreamProjects[i]['name'] );
			pars['dream_project_description'].push( dreamProjects[i]['description'] );
			pars['dream_project_site'].push( dreamProjects[i]['site'] );
		}
		pars['project_name'] = pars['project_name'].join('|');
		pars['project_description'] = pars['project_description'].join('|');
		pars['project_site'] = pars['project_site'].join('|');
		pars['dream_project_name'] = pars['dream_project_name'].join('|');
		pars['dream_project_description'] = pars['dream_project_description'].join('|');
		pars['dream_project_site'] = pars['dream_project_site'].join('|');
		
    var logged = isLogged();
		var myAjax = new Ajax.Request(gateway, {method: 'get', onComplete:function(req) {completeCreateProfile(req, logged)}, asynchronous:true, parameters: pars});
		
		return false;
		
		
	}
	
	
	function inviteUser( Id, Invited ) {
	  
	  if( !canShowModal() ) return false;
	  
	  if( Invited ) {
	    showModalBox( '<p>You have already invited ' + Invited + ' to join your network, however he/she has not yet responded.</p><p>They will be added to your network once they have accepted.</p>', function() {handleModalBoxClose();return;window.setTimeout('inviteUser(' + Id + ', \'\')', 750)} );
	    return;
	  }
		
		var pars = { action: 'invite', id: Id };
		
		var myAjax = new Ajax.Request(gateway, {method: 'get', parameters: pars});
		
		showModalBox( '<p>Your invitation has been sent.</p><p>Once the recipient has accepted, they will be added to your network.</p>', function() {handleModalBoxClose();window.setTimeout('pageRedirect(\'search\')', 750)} );
		
		return false;
	}
	
	function acceptUser( Code ) {
		
		var pars = { action: 'accept', code: Code };
		
		var myAjax = new Ajax.Request(gateway, {method: 'get', asynchronous: false, parameters: pars});
		
		pars = { action: 'invitationList' };
		myAjax = new Ajax.Updater('invitationList', gateway, {method: 'get', evalScripts: true, asynchronous: true, parameters: pars});
		
		$('friendDetail').innerHTML = '';
		
		pars = { action: 'loginBox' };
		myAjax = new Ajax.Updater('loginBox', gateway, {method: 'get', evalScripts: true, asynchronous: true, parameters: pars});
		
		return false;
	}
	
	function rejectUser( Code ) {
		
		var pars = { action: 'reject', code: Code };
		
		var myAjax = new Ajax.Request(gateway, {method: 'get', asynchronous: false, parameters: pars});
		
		pars = { action: 'invitationList' };
		myAjax = new Ajax.Updater('invitationList', gateway, {method: 'get', evalScripts: true, asynchronous: true, parameters: pars});
		
		$('friendDetail').innerHTML = '';
		
		pars = { action: 'loginBox' };
		myAjax = new Ajax.Updater('loginBox', gateway, {method: 'get', evalScripts: true, asynchronous: true, parameters: pars});
		
		return false;
	}
	
	function removeUser( Id ) {
		
		var pars = { action: 'remove', id: Id };
		
		var myAjax = new Ajax.Request(gateway, {method: 'get', asynchronous: false, parameters: pars});
		
		pars = { action: 'friendList' };
		myAjax = new Ajax.Updater('friendList', gateway, {method: 'get', evalScripts: true, asynchronous: true, parameters: pars});
		
		$('friendDetail').innerHTML = '';
		
		pars = { action: 'loginBox' };
		myAjax = new Ajax.Updater('loginBox', gateway, {method: 'get', evalScripts: true, asynchronous: true, parameters: pars});
		
		return false;
	}
	
	function completeCreateProfile(req, logged) {
		//alert(req.responseText);return;
		if ( req.responseText == 'failure' ) {
			
		}
		else {
			$('loginBox').innerHTML = req.responseText;
		}
		if( logged )  {
			showModalBox( '<p>Your profile has been updated.</p>', function() { handleModalBoxClose(); window.setTimeout( 'pageRedirect(\'search\')', 750 ) } );
		}
		else {
			showModalBox( '<p>Your profile has been created.</p><p>Welcome to the my.netbeans community.</p>', function() { handleModalBoxClose(); window.setTimeout( 'pageRedirect(\'search\')', 750 ) } );
		}
		
	}

	
		
 	function handlePlusClick( obj, select ) {
 		if ( typeof( obj ) == "undefined" ) return;
 		
 		var node = obj.parentNode.cloneNode( true );
 		
		insertAfter( node, obj.parentNode );

 		
		if ( typeof( select ) != "undefined" ) {
 			
 			var elements = node.getElementsByTagName('div');
 			
 			for ( i in elements ) {
 				if ( typeof( elements[i] ) == 'object' && elements[i].id.indexOf( '_options' ) != -1 ) {
 					elements[i].parentNode.removeChild( elements[i] );
 				}
 			}
 			elements = node.getElementsByTagName('input');
      
 			for ( var i = elements.length - 1; i >= 0; i-- ) { 
 				  if( elements[i].id.indexOf( '_combo' ) != -1 ) {
 					  elements[i].parentNode.removeChild( elements[i] );
 				  }
 				  else {
 				    elements[i].value = inputsDef[elements[i].name];
 				  }
 			}
 			
 			var nextIndex = autocompleters[select].length;
 			
 			var elem = node.getElementsByTagName( 'select' )[0];
 			elem.selectedIndex = 0;
 			
 			elem.id = select + ( nextIndex ) ;
 			
 			autocompleters[select].push( new Autocompleter.SelectBox( elem.id ) );
 		}
 		
 		
 	}
 	
 	
	function handleAddProject() {
	  
	  for( var i = projects.length-1; i >= 0; i-- ) {
	    if( projects[i] == null ) continue;
	    if( projects[i].name == '' || projects[i].name == inputsDef['project_name'] ) return;
	  }
	  	
		var name = inputsDef['project_name'];
		var description = inputsDef['project_description'];
		var site = inputsDef['project_site'];
		addProject( name, description, site );
	}
	
	function handleAddDreamProject() {
	  
	  for( var i = dreamProjects.length-1; i >= 0; i-- ) {
	    if( dreamProjects[i] == null ) continue;
	    if( dreamProjects[i].name == '' || dreamProjects[i].name == inputsDef['dream_project_name'] ) return;
	  }
		
		var name = inputsDef['dream_project_name'];
		var description = inputsDef['dream_project_description'];
		var site = inputsDef['dream_project_site'];
		addDreamProject( name, description, site );
	}
	
	function addProject( name, description, site ) {
		var project = {};
		
		project['name'] = name;
		project['description'] = description;
		project['site'] = site;
		
		projects.push( project );

		var newNode = $('project_tpl');

		newNode = newNode.cloneNode(true);
		newNode.getElementsByTagName('input').item(0).value = project['name'];
		newNode.style.display = 'block';
		newNode.id = 'project_' + ( projects.length - 1 );
		
		$('projectsScroll').appendChild( newNode );

		//alert(projects.toSource());
	}

	
	function addDreamProject( name, description, site ) {
		var project = {};
		
		project['name'] = name;
		project['description'] = description;
		project['site'] = site;
		
		dreamProjects.push( project );

		var newNode = $('dreamProject_tpl');

		newNode = newNode.cloneNode(true);
		newNode.getElementsByTagName('input').item(0).value = project['name'];
		newNode.style.display = 'block';
		newNode.id = 'dreamProject_' + ( dreamProjects.length - 1 );
		newNode.dream = '1';
		
		$('dreamProjectsScroll').appendChild( newNode );
		//alert(dreamProjects.toSource());
	}
	
 	function handleProjectClick( obj, which ) {

 		insertAfter( $('project_edit'), obj.parentNode.parentNode );
 		var id = obj.parentNode.parentNode.id.replace( 'project_', '' );
 		if( activeProject == id ) {
 		  $('project_edit').style.display = 'none';
 		  $('project_' + activeProject).getElementsByTagName('input').item(0).readOnly = true;
 		  $('project_' + activeProject).getElementsByTagName('input').item(0).value = projects[activeProject].name
 		  activeProject = null;
 		}
 		else {
 		  activeProject = id;
 		  $('project_edit').style.display = 'block';
		  document.getElementsByName('project_description').item(0).value = projects[id].description;
		  document.getElementsByName('project_site').item(0).value = projects[id].site;
		  $('project_' + activeProject).getElementsByTagName('input').item(0).readOnly = false;
		  if( document.getElementsByName('project_description').item(0).value == inputsDef['project_description'] ) {
		    Element.addClassName( document.getElementsByName('project_description').item(0), 'placeholder' );	
		  }
		  if( document.getElementsByName('project_site').item(0).value == inputsDef['project_site'] ) {
		    Element.addClassName( document.getElementsByName('project_site').item(0), 'placeholder' );	
		  }	
 		}
 	}
 	
 	function handleSaveProject() {
 	  if( activeProject == null ) return;
 	  
 	  projects[activeProject].name = $('project_' + activeProject).getElementsByTagName('input').item(0).value;
 	  projects[activeProject].description = document.getElementsByName('project_description').item(0).value;
 	  projects[activeProject].site = document.getElementsByName('project_site').item(0).value;
 	  
 		$('project_edit').style.display = 'none';
 		$('project_' + activeProject).getElementsByTagName('input').item(0).readOnly = true;
 		activeProject = null;
 	}
 	
  function handleDreamProjectClick( obj ) {
 		insertAfter( $('dreamProject_edit'), obj.parentNode.parentNode );
 		var id = obj.parentNode.parentNode.id.replace( 'dreamProject_', '' );
 		if( activeDreamProject == id ) {
 		  $('dreamProject_edit').style.display = 'none';
 		  $('dreamProject_' + activeDreamProject).getElementsByTagName('input').item(0).readOnly = true;
 		  $('dreamProject_' + activeDreamProject).getElementsByTagName('input').item(0).value = dreamProjects[activeDreamProject].name
 		  activeDreamProject = null;
 		}
 		else {
 		  activeDreamProject = id;
 		  $('dreamProject_edit').style.display = 'block';
		  document.getElementsByName('dream_project_description').item(0).value = dreamProjects[id].description;
		  document.getElementsByName('dream_project_site').item(0).value = dreamProjects[id].site;
		  $('dreamProject_' + activeDreamProject).getElementsByTagName('input').item(0).readOnly = false;
		  if( document.getElementsByName('dream_project_description').item(0).value == inputsDef['dream_project_description'] ) {
		     Element.addClassName( document.getElementsByName('dream_project_description').item(0), 'placeholder' );	
		  }
		  if( document.getElementsByName('dream_project_site').item(0).value == inputsDef['dream_project_site'] ) {
		    Element.addClassName( document.getElementsByName('dream_project_site').item(0), 'placeholder' );	
		  }	
 		}
 	}
 	
 	function handleSaveDreamProject() {
 	  if( activeDreamProject == null ) return;
 	  
 	  dreamProjects[activeDreamProject].name = $('dreamProject_' + activeDreamProject).getElementsByTagName('input').item(0).value;
 	  dreamProjects[activeDreamProject].description = document.getElementsByName('dream_project_description').item(0).value;
 	  dreamProjects[activeDreamProject].site = document.getElementsByName('dream_project_site').item(0).value;
 	  
 		$('dreamProject_edit').style.display = 'none';
 		$('dreamProject_' + activeDreamProject).getElementsByTagName('input').item(0).readOnly = true;
 		activeDreamProject = null;
 	}
	
	function handleMinusClick( obj, select ) {

		if ( typeof( select ) == "undefined" ) {
			if( obj.parentNode.style.display == 'none' ) return;
		    var id;
		    elements = obj.parentNode.getElementsByTagName('input');
  		  if( typeof( obj.parentNode.dream ) == 'undefined' ) {
  		    id = obj.parentNode.id.replace( 'project_', '' );
  		    if( activeProject == id ) {
       		  $('project_edit').style.display = 'none';
       		  $('project_' + activeProject).getElementsByTagName('input').item(0).readOnly = true;
       		  activeProject = null;
       		}
  		    if( $(obj.parentNode.parentNode).getElementsByClassName( 'item' ).length > 2 ) {
  		      obj.parentNode.parentNode.removeChild( obj.parentNode );
  		      projects[id] = null;
  		    }
  		    else {
    		    for ( var i = 0; i < elements.length; i++ ) {
  			      elements[i].value = inputsDef['project_name'];
  		      }
  		      projects[id].name = inputsDef['project_name'];
  		      projects[id].description = inputsDef['project_description'];
  		      projects[id].site = inputsDef['project_site'];
  		    }
  		  }
  		  else {
  		    id = obj.parentNode.id.replace( 'dreamProject_', '' );
  		    if( activeDreamProject == id ) {
       		  $('dreamProject_edit').style.display = 'none';
       		  $('dreamProject_' + activeDreamProject).getElementsByTagName('input').item(0).readOnly = true;
       		  activeDreamProject = null;
       		}
  		    if( $(obj.parentNode.parentNode).getElementsByClassName( 'item' ).length > 2 ) {
  		      obj.parentNode.parentNode.removeChild( obj.parentNode );
  		      dreamProjects[id] = null;
  		    }
  		    else {
    		    for ( var i = 0; i < elements.length; i++ ) {
  			      elements[i].value = inputsDef['dream_project_name'];
  		      }
  		      dreamProjects[id].name = inputsDef['dream_project_name'];
  		      dreamProjects[id].description = inputsDef['dream_project_description'];
  		      dreamProjects[id].site = inputsDef['dream_project_site'];
  		      
  		    }
  		    
  		  }

		  }
  	  else {

  		  var count = $(obj.parentNode.parentNode).getElementsByClassName( 'item' ).length;
  		
  		  var node = obj.parentNode;
  		  var elem = node.getElementsByTagName( 'select' )[0];
  		
  		  var index = elem.id.replace(select, '');


  		  if( count > 1 ) {
  		    obj.parentNode.parentNode.removeChild( obj.parentNode );
  		    autocompleters[select][index] = null;
  		  }
  		  else {
  		  	revertAutocomplete(autocompleters[select][index]);
  		    
  		  
  		    elements = obj.parentNode.getElementsByTagName('input');

     			for ( var i = 0; i < elements.length; i++ ) {
     				if ( elements[i].name ) {
     					if( elements[i].name in inputsDef ) {
     					  elements[i].value = inputsDef[elements[i].name];
     					  Element.addClassName( elements[i], 'placeholder' );
     					}
     				}
     			}
  		  
  		  } 
  	  }
	}
	
function revertAutocomplete( obj ) {
  
  var select = obj.select;
  
  obj.element.value = $(select).options[0].innerHTML;
	$(select).selectedIndex=0;
	Element.addClassName( obj.element, 'placeholder' );	
		
  return;
  
	try {
  		obj.updateElement( obj.getEntry( 0 ));
  	}
  	catch (e) {
		obj.hasFocus = true;
	  	obj.getUpdatedChoices();
	  	obj.updateElement( obj.getEntry( 0 ));
	  	window.setTimeout(obj.hide.bind(obj), 100);
	  	//window.setTimeout(completeRevertAutocomplete.bind(obj), 100);

  	}
}
function completeRevertAutocomplete() {
	this.hasFocus = false;
	this.active = false;
}

function canShowModal() {
  if( modalBox.box == null ) {
    return true;
  }
  else {
    new Effect.Shake( modalBox.box );
    return false;
  }
}

function clearModalBox() {
  modalBox.box = null;
  modalBox.submit = null;
  modalBox.cancel = null;
}

//create function, it expects 2 values.
function insertAfter(newElement,targetElement) {
  
  //target is what you want it to go after. Look for this elements parent.
  var parent = targetElement.parentNode;

  //if the parents lastchild is the targetElement...
  if(parent.lastchild == targetElement) {
    //add the newElement after the target element.
    parent.appendChild(newElement);
  } else {
    // else the target has siblings, insert the new element between the target and it's next sibling.
    parent.insertBefore(newElement, targetElement.nextSibling);
  }
}

function validateEmail( value )
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test( value );
}

