/* Javascript Functionality for crowdSPRING.com */
var CS = new Class({
	
	initialize: function(){

		for(var i=0; i < $$('.dynamictime').length; i++) {
			var now = new Date();
			var datetime = new Date($$('.dynamictime')[i].title);
			if (now > datetime) {
				$$('.dynamictime')[i].setText('Closed');
			}
		}
		
		for(var i=0; i < $$('.invite_users').length; i++){
			new InviteUsers($$('.invite_users')[i]);
		}
		
		if($('projectCreation')){
			if(!$('projectCreation').hasClass('confirm')){
				new ProjectCreation();
			}	
		}
		for(var i=0; i < $$('select.dropDown').length; i++){
			$$('select.dropDown')[i].addEvent('change', this.ddChange.bindWithEvent(this));
		}
		
		if($('homepageContent')){
			if(!$('howitworks')){
				this.loadHomepage();
			}
		}
		
		for(var i=0; i < $$('a.homepageTab').length; i++){
			 $$('a.homepageTab')[i].addEvent('click', this.homepageTabs.bindWithEvent(this,  $$('a.homepageTab')[i]));
		}
		
		if($('actionItems')){
			$('actionItems').getFirst().setStyle('visibility: visible;');
			//Copyright (c) 2007 Fabio Zendhi Nagao - http://zend.lojcomm.com.br
			new iCarousel("actionItems", {  
				idPrevious: "undefined",  
				idNext: "undefined",  
				idToggle: "undefined",  
				item: {klass: "item"},  
				animation: {  
					type: "fade",  
					transition: Fx.Transitions.linear,  
					rotate: {  
						type: "auto",
						interval: 5000
					},
					duration: 300
				}  
			});
		}
		
		for(var i=0; i < $$('img.zoomThis').length; i++){
			new ZoomTool($$('img.zoomThis')[i]);
		}
		
		for(var i=0; i < $$('a.pickAward').length; i++){
			$$('a.pickAward')[i].addEvent('click', function(e){
				new Event(e).stop();
				
				MOOdalBox.dropClasses();
				MOOdalBox.addClass('awardSelection');
				
				MOOdalBox.open(
					this.href,
					null,
					'360 200'
				);
				
			});
		}
		
		for(var i=0; i < $$('a.reportViolation').length; i++){
				$$('a.reportViolation')[i].addEvent('click', function(event){

					new Event(event).stop();

					MOOdalBox.dropClasses();
					MOOdalBox.addClass('tellAfriend');
					MOOdalBox.addClass('awardSelection');
					
					MOOdalBox.open(
						this.href, 
						null,
						"620 620"
					);

				});
		}
		
		for(var i=0; i < $$('a.tellAfriend').length; i++){
			
			MOOdalBox.setOnComplete(function(){
				
				if($('recipient_email') && $('sender_email')){
					var validateEmails = function(e, type){
						var emails = e.target.value;
						var ajaxRequest = new Ajax('/tellafriend/validate', {
							'method' : 'post',
							'data' : {
								'emails' : emails,
								'type' : type
							},
							evalResponse : true,
							onComplete : function(response){
								var json = new Json.evaluate(response);
								if(type == 'recipient' && json.status == 'valid'){
									$('recipient_email_errors').setStyle('display', 'none');
									$('tellafriendsubmit').disabled = false;
								} else if(type == 'recipient' && json.status == 'invalid'){
									$('recipient_email_errors').setStyle('display', 'block');
									$('tellafriendsubmit').disabled = true;
								} else if(type == 'sender' && json.status == 'valid'){
									$('sender_email_errors').setStyle('display', 'none');
									$('tellafriendsubmit').disabled = false;
								} else if(type == 'sender' && json.status == 'invalid'){
									$('sender_email_errors').setStyle('display', 'block');
									$('tellafriendsubmit').disabled = true;
								}
							}
						}).request();
					}
					
					$('recipient_email').addEvent('blur', validateEmails.bindWithEvent(this, 'recipient'));
					$('sender_email').addEvent('blur', validateEmails.bindWithEvent(this, 'sender'));
					
				}
				
				if($('tellafriend-form')){
					$('tellafriend-form').addEvent('submit', function(e){
						new Event(e).stop();
						var send = this.send();
						send.onSuccess = function(){
							var thanks = new Element('h2', {
								'styles' : {
									'display' : 'none',
									'width' : '100%',
									'text-align' : 'center',
									'padding' : '200px 0 0 0'
								}
							}).setText('Word. Your friend is in the know.').injectAfter($('tellafriend-form'));
							$('tellafriend-form').getPrevious().setStyle('display', 'none');
							$('tellafriend-form').setStyle('display', 'none');
							thanks.setStyle('display', 'block');
							
							var close = function(){
								MOOdalBox.close();
							}
							
							close.delay(1300);
						}
					})
				}
				
			});
			
			MOOdalBox.dropClasses();
			MOOdalBox.addClass('tellAfriend');
			MOOdalBox.addClass('awardSelection');
			
			$$('a.tellAfriend')[i].addEvent('click', function(event){
			
				new Event(event).stop();
				MOOdalBox.open(
					this.href,
					null,
					'620 500'
				);
				
			});
			
		}
		
		for(var i=0; i < $$('li.buyerRating').length; i++){
			if(!$$('li.buyerRating')[i].getParent().hasClass('score') && !$$('li.buyerRating')[i].getParent().hasClass('withdrawn')){
				new CS_Rating($$('li.buyerRating')[i], 'buyer');
			}
		}
		
		for(var i=0; i < $$('li.crowdRating').length; i++){
			if(!$$('li.crowdRating')[i].getParent().hasClass('withdrawn')){
				new CS_Rating($$('li.crowdRating')[i], 'crowd');
			}
		}
		
		for(var i=0; i < $$('li.iheartthis').length; i++){
			//if(!$$('li.iheartthis')[i].getParent().hasClass('withdrawn')){
				new CS_HeartThis($$('li.iheartthis')[i], 'heart');
			//}
		}

		if($('mainsearch').getFirst()){
			$('mainsearch').getFirst().addEvent('focus', function(){
				$('mainsearch').getFirst().setStyle('border-color', '#4f4f4f');
				if(this.value == 'Search'){
					this.value = '';
				}
			});
			$('mainsearch').getFirst().addEvent('blur', function(){
				$('mainsearch').getFirst().setStyle('border-color', '#3c3c3c');
				if(this.value == ''){
					this.value = 'Search';
				}
			});
		} 
		
		if($('ezcoa-12_user_account_login')){
			//this.vaildUsername($('ezcoa-12_user_account_login'), document.Register);
		}
		
		
		for(var i=0; i < $$('input.clickClear').length; i++){
			this.clickClear($$('input.clickClear')[i]);
		}
		
		for(var i=0; i < $$('textarea.clickClear').length; i++){
			this.clickClear($$('textarea.clickClear')[i]);
		}
		
		if($('flashMessage')){
			/*var hash = location.hash;
			if(hash == '#0'){
				$('flashMessage').setStyle('display', 'none');
			} else {
				$('flashMessage').setStyle('display', 'block');
				this.flashMessage.delay(3000);
			}*/
			this.flashMessage.delay(3000);
		}
		
		for(var i=0; i < $$('a.readMore').length; i++){
			if($$('a.readMore')[i].href.contains('#0')){
				$$('a.readMore')[i].addEvent('click', this.expandText.bindWithEvent(this));
			} else if ($$('a.readMore')[i].href.contains('#1')){
				$$('a.readMore')[i].addEvent('click', this.collapseText.bindWithEvent(this));
			}
		}
		
		if($('bannerWrapper')){
			this.hideBanner($('bannerWrapper'));
			this.toggleBanner($('bannerWrapper'), $('sxsw-close'), 'close');
			$$('a.sxsw-vote').addEvent('click', function(e){
				Cookie.set('sxsw_vote', 'vote', {duration: 20, domain: '.crowdspring.com', path: '/' });
			});
		}
		
		if($('postProjectChoices')){
			$$('a.category').addEvent('click', function(e){
				var links = $$('a.category');
				var lists = $$('ul.subcategory');
				var thisList = this.getNext();
				for(i=0; i<links.length; i++){
					if(links[i].hasClass('active')){
						links[i].removeClass('active')
					}
				}
				for(j=0; j<lists.length; j++){
					lists[j].setStyle('display', 'none')
				}
				this.addClass('active');
				thisList.setStyle('display', 'block');
				new Event(e).stop();
			});
		}
		
		if($('learnMore')){
			this.toggleLearnMore();
		}
		
		if($('newComment') && $('commentBox')){
			this.commentBox();
		}
		
		if($('newUpdate')){
			this.updateBox($('updatePublic'), $('newUpdate'));
		}
		
		if($('newPublicUpdate') && $('updatePublic')){
			this.updatePublicBox();
		}
		
		if($('newPrivateUpdate') && $('updatePrivate')){
			this.updatePrivateBox();
		}
		
		if($$('.helpTopics')){
			this.helpLinkToggle();
		}
		
		if($('showBrief')){
			this.briefToggle();
		}
		
		if($('ratingList')){
			this.ratingItemToggle();
		}
		
		if($('requestAccess')){
			this.requestAccessDrawer();
			if($('lg-rules')){
				this.allowLG();
			}else{
				this.allowNDA();
			}
		}
		
		if($('activeUsers')){
			this.projectSettingsUsers();
			this.requestCommentToggle();
			this.setCommentVisibility();
			this.updateProjectSettings();
		}
		
		for(var i=0; i < $$('a.toggleHandle').length; i++){
			var handle = $$('a.toggleHandle')[i];
			var drawer = $('toggleDrawer_' + handle.id.replace('toggleHandle_', ''));
			this.toggleDrawer(handle, drawer);
		}
		
		if($('searchToggle')){
			this.toggleDrawer($('searchToggle'), $('searchFilter'));
			this.searchFilterBox();
		}
		
		if($('messageTextForward')){
			var orgTxt = document.private_message_form.messageTextForward.value;
			var orgFrom = document.private_message_form.orgFrom.value;
			var orgSubject = document.private_message_form.orgSubject.value;
			var orgDate = document.private_message_form.orgDate.value;
			document.private_message_form.messageTextForward.value = "\n\n" + "On " + orgDate + " " + orgFrom + " wrote:" + "\n\n" + orgTxt;
		}
		
		if($('messageTextReply')){
			var orgTxt = document.private_message_form.messageTextReply.value;
			var orgFrom = document.private_message_form.orgFrom.value;
			var orgSubject = document.private_message_form.orgSubject.value;
			var orgDate = document.private_message_form.orgDate.value;
			document.private_message_form.messageTextReply.value = "\n\n" + "On " + orgDate + " " + orgFrom + " wrote:" + "\n\n" + orgTxt;
		}
		
		//enable this when we puch multiple delete for private messaging
		
		if($('inbox')){
			this.deleteMessages();
			this.checkDeleteMessages();
			this.replyMessages();
		}
		
		if($('details')){
			this.deleteProjectFile();
		}
		
		for(var i=0; i < $$('a.addFile').length; i++){
			$$('a.addFile')[i].addEvent('click', function(e){
				new Event(e).stop();
				MOOdalBox.dropClasses();
				MOOdalBox.addClass('awardSelection');
				MOOdalBox.addClass('addFilePopup');
				MOOdalBox.open(this.href, null, '450 250');
			});
		}
		
		for(var i=0; i < $$('a.adjustAwards').length; i++){
			$$('a.adjustAwards')[i].addEvent('click', function(e){
				new Event(e).stop();
				MOOdalBox.dropClasses();
				MOOdalBox.setOnComplete(function(){
					if($('awards')) new ModifyAwards($('awards'));
				});
				MOOdalBox.open(this.href, null, '550 400');
			});
		}
		
		/*for(var i=0; i < $$('a.deleteFile').length; i++){
			$$('a.deleteFile')[i].addEvent('click', function(e){
				new Event(e).stop();
				MOOdalBox.dropClasses();
				MOOdalBox.addClass('awardSelection');
				MOOdalBox.addClass('addFilePopup');
				MOOdalBox.open($$('a.deleteFile')[i].href, null, '450 200');
			});
		}*/
		
		for(var i=0; i < $$('a.popUpWatchlist').length; i++){
			new CS_PopUp($$('a.popUpWatchlist')[i], {
				'classname' : 'watchlistPopUp',
				'width'		: 400,
				'height'	: 150,
				'fade' 		: true,
				'drag'		: false,
				'overlay'	: true
			});
		}
		
		for(var i=0; i < $$('a.popUpContract').length; i++){
			$$('a.popUpContract')[i].addEvent('click', function(e){
				new Event(e).stop();
				window.open(this.href,'','width=850,height=700,scrollbars=1');
			});
		}
		
		for(var i=0; i < $$('a.popUpNDA').length; i++){
			$$('a.popUpNDA')[i].addEvent('click', function(e){
				new Event(e).stop();
				window.open(this.href,'','width=850,height=700,scrollbars=1');
			});
		}
		
		for(var i=0; i < $$('a.popUpDelete').length; i++){

			MOOdalBox.setOnComplete(function(){
				if($('otherreason')){
					
					$('otherreason').setStyle('display', 'none');
					
					$('buyer_no_likey').addEvent('click', function(){
						if($('otherreason').getStyle('display') == 'block'){
							$('otherreason').setStyle('display', 'none');
							$('otherradiofield').setStyle('display', 'block');
						}
					});
					
					$('wrong_file').addEvent('click', function(){
						if($('otherreason').getStyle('display') == 'block'){
							$('otherreason').setStyle('display', 'none');
							$('otherradiofield').setStyle('display', 'block');
						}
					});
					
					$('too_similar_to_other').addEvent('click', function(){
						if($('otherreason').getStyle('display') == 'block'){
							$('otherreason').setStyle('display', 'none');
							$('otherradiofield').setStyle('display', 'block');
						}
					});
					
					$('hide_it').addEvent('click', function(){
						if($('otherreason').getStyle('display') == 'block'){
							$('otherreason').setStyle('display', 'none');
							$('otherradiofield').setStyle('display', 'block');
						}
					});
					
					$('otherradio').addEvent('click', function(){
						$('otherreason').setStyle('display', 'block');
						$('otherradiofield').setStyle('display', 'none');
					});
				}
			});
			
			$$('a.popUpDelete')[i].addEvent('click', function(event){
				
				new Event(event).stop();

				MOOdalBox.dropClasses();
				MOOdalBox.addClass('deletePopUp');

				MOOdalBox.open(
					this.href,
					null,
					'520 350'
				);
				
			});

		}
		
		for(var i=0; i < $$('div.wrapupHidden').length; i++){
			this.toggleWrapup($$('div.wrapupHidden')[i], $$('a.wrapupToggle')[i]);
		}
		
		for(var i=0; i < $$('div.sliderArea').length; i++){
			this.sliderWrapup($$('div.sliderArea')[i], $$('div.sliderKnob')[i], $$('input.sliderValue')[i], $$('div.sliderAmount')[i], $$('div.amountDesc')[i], $$('input.sliderMoved')[i]);
		}
		
		if($('projectTitle')){
			$('projectTitle').addEvent('keyup', this.characterCount.bindWithEvent(this, {'target' : $('projectTitle'), 'min' : 25, 'max' : 100, 'update' : $('titleCount')}));
			$('projectTitle').addEvent('blur', this.characterCount.bindWithEvent(this, {'target' : $('projectTitle'), 'min' : 25, 'max' : 100, 'update' : $('titleCount')}));
			this.characterCount(this, {'target' : $('projectTitle'), 'min' : 25, 'max' : 100, 'update' : $('titleCount')});
		}
		
		if($('projectDescription')){
			
			$('projectDescription').addEvent('keyup', this.characterCount.bindWithEvent(this, {'target' : $('projectDescription'), 'min' : 100, 'max' : 5000, 'update' : $('descriptionCount')}));
			$('projectDescription').addEvent('blur', this.characterCount.bindWithEvent(this, {'target' : $('projectDescription'), 'min' : 100, 'max' : 5000, 'update' : $('descriptionCount')}));
			this.characterCount(this, {'target' : $('projectDescription'), 'min' : 100, 'max' : 5000, 'update' : $('descriptionCount')});
			
			$('projectDescription').addEvent('focus', function(){
				new ResizingTextArea($('projectDescription'));
			});
			$('briefPiece_1').addEvent('focus', function(){
				new ResizingTextArea($('briefPiece_1'));
			});
			$('briefPiece_1').addEvent('focus', function(){
				new ResizingTextArea($('briefPiece_2'));
			});
			$('briefPiece_1').addEvent('focus', function(){
				new ResizingTextArea($('briefPiece_3'));
			});
			$('briefPiece_1').addEvent('focus', function(){
				new ResizingTextArea($('briefPiece_4'));
			});
			$('briefPiece_1').addEvent('focus', function(){
				new ResizingTextArea($('briefPiece_5'));
			});
		}
		
		if($('privateProjectDescription')){
			
			$('privateProjectDescription').addEvent('keyup', this.characterCount.bindWithEvent(this, {'target' : $('privateProjectDescription'), 'min' : 100, 'max' : 10000, 'update' : $('privateDescriptionCount')}));
			$('privateProjectDescription').addEvent('blur', this.characterCount.bindWithEvent(this, {'target' : $('privateProjectDescription'), 'min' : 100, 'max' : 10000, 'update' : $('privateDescriptionCount')}));
			this.characterCount(this, {'target' : $('privateProjectDescription'), 'min' : 100, 'max' : 5000, 'update' : $('privateDescriptionCount')});
			
			$('privateProjectDescription').addEvent('focus', function(){
				new ResizingTextArea($('privateProjectDescription'));
			});
			$('briefPiece_1').addEvent('focus', function(){
				new ResizingTextArea($('briefPiece_1'));
			});
			$('briefPiece_1').addEvent('focus', function(){
				new ResizingTextArea($('briefPiece_2'));
			});
			$('briefPiece_1').addEvent('focus', function(){
				new ResizingTextArea($('briefPiece_3'));
			});
			$('briefPiece_1').addEvent('focus', function(){
				new ResizingTextArea($('briefPiece_4'));
			});
			$('briefPiece_1').addEvent('focus', function(){
				new ResizingTextArea($('briefPiece_5'));
			});
			
		}
		
		for(var i=0; i < $$('a.wrapupBuyerActions').length; i++){
			$$('a.wrapupBuyerActions')[i].addEvent('click', function(e){
				new Event(e).stop();
				var split = this.href.split('#_')[1];
				var type = split.split('_')[0];
				var id = split.split('_')[1];
				
				switch(type){
					case 'accept':
						$('wrapupActionSubmit_' + id).setText('Accept');
						$('wrapupActionSubmit_' + id).name = 'accept';
						$('wrapupActionSubmit_' + id).className = 'submit';
						$('commentType_' + id).value = 'accept';
					break;
					case 'decline':
						$('wrapupActionSubmit_' + id).setText('Decline');
						$('wrapupActionSubmit_' + id).name = 'decline';
						$('wrapupActionSubmit_' + id).className = 'negative';
						$('commentType_' + id).value = 'decline';
					break;
					case 'question':
						if($('fileUpload_' + id)){
							$('fileUpload_' + id).setStyle('display', 'none');
						}
						$('wrapupActionSubmit_' + id).setText('Submit');
						$('wrapupActionSubmit_' + id).name = 'question';
						$('wrapupActionSubmit_' + id).className = 'standard';
						$('commentType_' + id).value = 'comment';
					break;
					case 'file':
						$('fileUpload_' + id).setStyle('display', 'block');
						$('wrapupActionSubmit_' + id).setText('Send new file');
						$('wrapupActionSubmit_' + id).name = 'file';
						$('wrapupActionSubmit_' + id).className = 'submit';
						$('commentType_' + id).value = 'file';
					break;
				}
				
				var links = $('wrapupActions_' + id).getElementsByTagName('a');
				for(var i=0; i < links.length; i++){
					if(links[i].hasClass('wrapupBuyerActions')){
						links[i].className = 'wrapupBuyerActions';
						if(links[i] == this){
							links[i].addClass('active');
						}
					}
				}
				
				new Fx.Style($('wrapupForm_' + id), 'height').start($('wrapupForm_' + id).getCoordinates().height, 210)
				
			});
		}
		
		for(var i=0; i < $$('a.viewLarge').length; i++){
			var id = $$('a.viewLarge')[i].id.replace('viewLarge_', '');
			var size = id.split('_');
			var w = size[0];
			var h = size[1].toInt() + 33;
			var sizes = w + ' ' + h;

			$$('a.viewLarge')[i].addEvent('click', function(e){
				
				new Event(e).stop();
				
				MOOdalBox.dropClasses();
				MOOdalBox.addClass('viewLargePop');
				
				MOOdalBox.open(
					this.href,
					null,
					sizes
				);
				
			});
			
		}
		
		if($('min_award') && $('min_award_pro')){
			var radios = $$('.cat');
			for(var i=0; i < radios.length; i++){
				radios[i].addEvent('click', function(e){
					switch(this.value){
						case '15726':
						case '269':
						case '594735':
							$('min_award_pro').setText(1200)
						break;
						case '959809':
						case '959830':
							$('min_award_pro').setText(1300)
						break;
						case '272':
						case '955946':
							$('min_award_pro').setText(1500)
						break;
						case '959851':
						case '904284':
							$('min_award_pro').setText(2000)
						break;
						case '904292':
							$('min_award_pro').setText(2500)
						break;
						default:
							$('min_award_pro').setText(1000);
					}
					switch(this.value){
						case '272':
						case '955946':
							$('min_award').setText(600);
						break;
						case '269':
						case '15726':
						case '417983':
							$('min_award').setText(300);
						break;
						case '959830':
						case '959809':
							$('min_award').setText(400);
						break;
						case '904284':
							$('min_award').setText(750);
						break;
						case '959851':
							$('min_award').setText(900);
						break;
						case '904292':
							$('min_award').setText(1000);
						break;
						default:
						$('min_award').setText(200);
					}
				});
			}
		}
		
		if($$('h3.guaranteeTip')[0]){
			new Tips($$('h3.guaranteeTip')[0], {
				'maxTitleChars' : 200,
				'className' : 'guarantee'
			});
		}
		
		for(var i=0; i < $$('.verificationTip').length; i++){
			new Tips($$('.verificationTip')[i], {
				'maxTitleChars' : 200,
				'className' : 'verification' 
			});
		}
		
		for(var i=0; i < $$('.screen').length; i++){
			this.screen($$('.screen')[i], .5);
		}
		
		/*for(var i=0; i < $$('a.editInline').length; i++){
			$$('a.editInline')[i].addEvent('click', this.editInline.bindWithEvent(this));
		}*/
		
		for(var i=0; i < $$('form.submitentry').length; i++){
			$$('form.submitentry')[i].addEvent('submit', function(e){
				$$('div.formloading')[0].setStyle('display', 'block');
				$$('button.submit')[0].setOpacity(0);
				$$('a.cancel')[0].setOpacity(0);
				
			});
		}
		
		for(var i=0; i < $$('form.creation').length; i++){
			$$('form.creation')[i].addEvent('submit', function(e){
				$$('div.formloading')[0].setStyle('display', 'block');
				$$('button.submit')[0].setOpacity(0);
			});
		}
		
		if($('projectConfirm')){
			$('projectConfirm').addEvent('submit', function(e){
				$$('div.formloading')[0].setStyle('display', 'block');
				$$('button.submit')[0].setOpacity(0);
				$$('a.edit')[0].setOpacity(0);
			});
		}
		
		for(var i=0; i < $$('form.payment').length; i++){
			$$('form.payment')[i].addEvent('submit', function(e){
				$$('div.formloading')[0].setStyle('display', 'block');
				$$('button.submit')[0].setOpacity(0);
			});
		}
		
		if($$('.submissionInfoTip').length > 0){
			var submissionInfoTip = new Tips('.submissionInfoTip', {
				'className': 'submissionInfoTip',
				//'offsets' : {'x':-15,'y':-80},
				'offsets' : {'x':60,'y':-8},
				'maxTitleChars' : 27,
				'fixed' : true,
				onShow : function(tip){
					new Fx.Styles(tip, {duration: 100, transition: Fx.Transitions.linear}).start({
						'opacity' : [tip.getStyle('opacity'), 1]
					});
				},
				onHide : function(tip){
					new Fx.Styles(tip, {duration: 100, transition: Fx.Transitions.linear}).start({
						'opacity' : [tip.getStyle('opacity'), 0]
					});
				}
			});
		}
		
		for(var i=0; i<$$('.user_hover').length; i++){
			var split =  $$('.user_hover')[i].id.replace('user_hover_', '');
			split = split.split('_');
			id = split[0];
			delete split[0];
			name = split.join('_');
			name = name.substring(1, name.length);
			new UserHover($$('.user_hover')[i],
				{
					'id' : id,
					'name' : name
				}, 
				{
					'x' : $$('.user_hover')[i].getCoordinates().width + 3,
					'y' : -15
				}
			);
		}
		
		for(var i=0; i<$$('.stopAfterSubmit').length; i++){
			var formLoading = new Element('div', {
				'class' : 'formloading',
				'styles': {
					'display' : 'none'
				}
			});
			formLoading.injectAfter($$('.stopAfterSubmit')[i]);
			$$('.stopAfterSubmit')[i].addEvent('click', function(){
				formLoading.setStyle('display', 'block');
				this.setStyle('display', 'none');
			});
		}
		
		if($('removeMyAccount')){
			$('removeMyAccount').addEvent('click', function(e){
				new Event(e).stop();
				MOOdalBox.setOnComplete(function(){
					$$('.cancel')[0].addEvent('click', function(e){
						new Event(e).stop();
						MOOdalBox.close();
					});
					$('violationSubmit').addEvent('click', function(e){
						//$('violationSubmit').disabled = true;
					});
				});
				MOOdalBox.dropClasses();
				
				MOOdalBox.open(
					this.href,
					null,
					'360 130'
				);
			});
		}
		
		for(var i=0; i < $$('.projectStats').length; i++){
			$$('.projectStats')[i].addEvent('click', function(e){
				new Event(e).stop();
				MOOdalBox.dropClasses();
				MOOdalBox.addClass('.statsWindow');
				MOOdalBox.open(
					this.href,
					null,
					'425 375'
				);
			});
		}
		
	},
	
	screen: function(el, opacity){
		el.setOpacity(opacity);
		el.addEvent('mouseover', function(){
			el.setOpacity(1);
		});
		el.addEvent('mouseleave', function(){
			el.setOpacity(opacity);
		}); 
	},
	
	vaildUsername: function(input, form){
		var username = '';
		var errors = false;
		form.onsubmit = function(e){
			new Event(e).stop();

			username = input.value;
			if(!username.test(/^[A-z0-9_]*$/)){
				alert('Username must only contain letters and numbers.');
				errors = true;
			} else {
				errors = false;
			}	
			if(username.length > 20){
				alert('Username must be less than 20 characters.');
				errors = true;
			} else {
				errors = false;
			}
			if($('ezcoa-12_user_account_password').value != $('ezcoa-12_user_account_password_confirm').value || $('ezcoa-12_user_account_password').value == ''){
				alert('Password\'s must match.');
				errors = true;
			} else {
				errors = false;
			}

			if(errors == false){
				this.submit();
			} 
		}
	},
	
	clickClear: function(el){
		var fieldValue = el.value;
		el.addEvent('focus', function(){
			if(this.value == fieldValue){
				this.value = '';
			}
		});
		el.addEvent('blur', function(){
			if(this.value == ''){
				this.value = fieldValue;
			}
		});
	},
	
	setDesc: function(step){
		var desc = '';
		if(step >= 0 && step <= 20){
			desc = 'Poor';
		} else if(step >= 21 && step <= 40){
			desc = 'Below Average';
		} else if(step >= 41 && step <= 60){
			desc = 'Average';
		} else if(step >= 61 && step <= 80){
			desc = 'Above Average';
		} else if(step >= 81 && step <= 100){
			desc = 'Excellent';
		}
		return desc;
	},
	
	toggleBanner: function(container, handle, value){
		handle.addEvent('click', function(e){
			new Event(e).stop();
			// then set the cookie
			Cookie.set('sxsw_vote', value, {duration: 20, domain: '.crowdspring.com', path: '/' });
			// hide the div
			container.setStyle('display', 'none');
		});
	},
	
	hideBanner: function(container){
		var cookie = Cookie.get('sxsw_vote');
		if (cookie == 'vote' || cookie == 'close'){
			container.setStyle('display', 'none');
		}else{
			container.setStyle('display', 'block');
		}
	},
	
	toggleLearnMore: function(){
		if($('learnMoreButton')){
			var toggle = new Fx.Slide($('HIWexamples'), {duration: 500});
			toggle.toggle();
			$('learnMoreButton').addEvent('click', function(e){
				if($('HIWexamples').hasClass('show')){
					new Event(e).stop();
					toggle.toggle();
					$('HIWexamples').removeClass('show');
					$('HIWexamples').addClass('hide');
				}else{
					$('HIWexamples').removeClass('hide');
					$('HIWexamples').addClass('show');
					new Event(e).stop();
					toggle.toggle();
				}
			});
		}
	},
	
	sliderWrapup: function(area, knob, value, amount, desc, moved){
		var _self = this;
		new Slider(area, knob, {
			'steps' : 100,
			onChange: function(step){
				value.value = step;
				amount.setHTML(step);
				desc.setHTML(_self.setDesc(step));
			}
		}).set(0);
		knob.addEvent('click', function(){
			if(moved.value != "true"){
				moved.value = "true";
			}
		});
		knob.addEvent('mouseover', function(){
			if(moved.value != "true"){
				moved.value = "true";
			}
		});
		knob.addEvent('mouseleave', function(){
			if(moved.value != "true"){
				moved.value = "true";
			}
		});
	},
	
	toggleWrapup: function(container, handle){
		var toggle = new Fx.Slide(container, {duration: 200});
		toggle.toggle();
		handle.addEvent('click', function(e){
			new Event(e).stop();
			toggle.toggle();
			this.toggleClass('minus');
		});
	},
	
	helpLinkToggle: function(){
		var accordion = new Accordion('h3.helpLink', 'div.helpText', {
			'opacity': false, 'start': true, 'duration': 100, 'alwaysHide' : true,
			onActive: function(toggler, element){
				toggler.setStyles({
					'color' : '#ed2590',
					'font-weight' : 'bold'
				});
				toggler.setStyle('background', '#efefef');
			},
			onBackground: function(toggler, element){
				toggler.setStyles({
					'color' : '#000',
					'font-weight' : 'normal'
				});
				toggler.setStyle('background', 'none');
			}
		});
	},
	
	ratingItemToggle: function(){
		var accordion = new Accordion('span.ratingLink', 'div.ratingComment', {
			'opacity': false, 'start': true, 'duration': 100, 'alwaysHide' : true,
			onActive: function(toggler, element){
				toggler.setAttribute('class', 'ratingLink minus');
			},
			onBackground: function(toggler, element){
				toggler.setAttribute('class', 'ratingLink');
			}
			
		});
	},
	
	requestCommentToggle: function(){
		var coms = $$('div.PAComment');
		for(var i=0; i < coms.length; i++){
			coms[i].setStyle('visibility', 'visible');
		}
		var accordion = new Accordion('span.projectAccessComment', 'div.PAComment', {
			'opacity': false, 'start': true, 'duration': 100, 'alwaysHide' : true,
			onActive: function(toggler, element){
				toggler.setAttribute('class', 'projectAccessComment minus');
				element.setStyles({
					'padding' : '10px 10px 0 10px'
				});
			},
			onBackground: function(toggler, element){
				toggler.setAttribute('class', 'projectAccessComment');
				element.setStyles({
					'padding' : '0'
				});
			}
		});
	},
	
	setCommentVisibility: function(){
		$('galleryNo').addEvent('click', function(e){
			if($('galleryNo').checked == true){
				$('commentNo').checked = true;
				$('commentNo').disabled = true;
				$('commentYes').disabled = true;
			}
		});
		$('galleryYes').addEvent('click', function(e){
			if($('galleryYes').checked == true){
				$('commentNo').disabled = false;
				$('commentYes').disabled = false;
			}
		});
	},
	
	updateProjectSettings: function(){
		var aaSet = 0;
		var gvSet = 0;
		var cvSet = 0;
		var aaChange = 0;
		var gvChange = 0;
		var cvChange = 0;
		var autoWarning = '';
		var galleryWarning = '';
		var commentWarning = '';
		var del1 = '';
		var del2 = '';
		if($('autoYes').checked == true){
			aaSet = 1;
		}
		if($('galleryYes').checked == true){
			gvSet = 1;
		}
		if($('commentYes').checked == true){
			cvSet = 1;
		}
		//alert('gallery: ' + gvSet + ', comments: ' + cvSet + ', auto: ' + aaSet);
		$('updateSettings').addEvent('click', function(e){
			if($('autoYes').checked == true){
				aaChange = 1;
			}
			if($('galleryYes').checked == true){
				gvChange = 1;
			}
			if($('commentYes').checked == true){
				cvChange = 1;
			}
			if(aaSet != aaChange){
				if(aaChange == 1){
					autoWarning = 'auto approve all creatives';
				}else{
					autoWarning = 'manually approve all creatives';
				}
			}
			if(gvSet != gvChange){
				if(gvChange == 1){
					galleryWarning = 'allow creatives to see all entries';
				}else{
					galleryWarning = 'hide all entries from creatives except their own';
				}
				if(aaSet != aaChange){
					del1 = " and ";
				}
			}
			if(cvSet != cvChange){
				if(cvChange == 1){
					commentWarning = 'allow creatives to see all comments';
				}else{
					commentWarning = 'hide all comments from creatives except their own';
				}
				if(gvSet != gvChange || aaSet != aaChange){
					del2 = " and ";
				}
			}
			var settingsConfirm = confirm("Are you sure you want to " + autoWarning + del1 + galleryWarning + del2 + commentWarning + "?");
			if(settingsConfirm == false){
				new Event(e).stop();
				location.reload(true);
			}
		});
	},
	
	toggleDrawer: function(handle, drawer){
		var toggle = new Fx.Slide(drawer, {duration: 200});
		toggle.toggle();
		handle.addEvent('click', function(e){
			drawer.setStyle('display', 'block');
			new Event(e).stop();
			toggle.toggle();
			handle.toggleClass('minus');
		});
	},
	
	searchFilterBox: function(){
		var links = $('massCheck').getChildren();
		for(var i=0; i < links.length; i++){
			if(links[i].getFirst().tagName != 'A') return false;
			if(links[i].getFirst().href.contains("#all")){
				links[i].getFirst().addEvent('click', function(e){
					new Event(e).stop();
					for(var j=0; j < $('seachFilterForm').getElementsByTagName('input').length; j++){
						if($('seachFilterForm').getElementsByTagName('input')[j].type == 'checkbox'){
							$('seachFilterForm').getElementsByTagName('input')[j].checked = true;
						}
					}
				})
			} else if(links[i].getFirst().href.contains("#none")){
				links[i].getFirst().addEvent('click', function(e){
					new Event(e).stop();
					for(var j=0; j < $('seachFilterForm').getElementsByTagName('input').length; j++){
						if($('seachFilterForm').getElementsByTagName('input')[j].type == 'checkbox'){
							$('seachFilterForm').getElementsByTagName('input')[j].checked = false;
						}
					}
				})
			}
		}
	},
	
	projectSettingsUsers: function(){
		var approveLinks = $$('a.approveLink');
		var banLinks = $$('a.banLink');
		if(approveLinks.length > 0){
			for (var i=0; i<approveLinks.length; i++){
				approveLinks[i].addEvent('click', function(e){
					var confirmApprove = confirm('Are you sure you want to APPROVE that creative?');
					if (confirmApprove == false){
						new Event(e).stop();
					}
				})
			}
		}
		if(banLinks.length > 0){
			for (var j=0; j<banLinks.length; j++){
				banLinks[j].addEvent('click', function(e){
					var confirmBan = confirm('Are you sure you want to DENY that creative?');
					if (confirmBan == false){
						new Event(e).stop();
					}
				})
			}
		}
	},
	
	deleteMessages: function(){
		var selectAll = $('selectAll');
		var selects = $$('input.selectMsg');
		var replyButtons = $$('a.replyLink');
		var count = 0;
		for (var b=0; b<selects.length; b++){
			if (selects[b].checked == true){
				count = count + 1;
			}
		}
		for (var c=0; c<replyButtons.length; c++){
			if (count > 1 || count < 1){
				replyButtons[c].className = 'replyLink inactive';
			}else{
				replyButtons[c].className = 'replyLink';
			}
		}
		// move selected message IDs to form
		for (var i=0; i < selects.length; i++){
			selects[i].addEvent('click', function(e){
				var inc = 0;
				$('deleteListTop').value = '';
				$('deleteListBottom').value = '';
				//$('spamListTop').value = '';
				//$('spamListBottom').value = '';
				for (var j=0; j < selects.length; j++){
					if (selects[j].checked == true){
						inc = inc + 1;
						$('deleteListTop').value += selects[j].value + ',';
						$('deleteListBottom').value += selects[j].value + ',';
						//$('spamListTop').value += selects[j].value + ',';
						//$('spamListBottom').value += selects[j].value + ',';
					}
				}
				for (var r=0; r<replyButtons.length; r++){
					if (inc > 1 || inc < 1){
						replyButtons[r].className = 'replyLink inactive';
					}else{
						replyButtons[r].className = 'replyLink';
					}
				}
			});
		}
		// verify select all checkbox
		selectAll.addEvent('click', function(e){
			if (selectAll.checked == true){
				for(var i=0; i < selects.length; i++){
					selects[i].checked = true;
					$('deleteListTop').value += selects[i].value + ',';
					$('deleteListBottom').value += selects[i].value + ',';
					//$('spamListTop').value += selects[i].value + ',';
					//$('spamListBottom').value += selects[i].value + ',';
				}
			} else {
				for (var i=0; i < selects.length; i++){
					selects[i].checked = false;
					$('deleteListTop').value = '';
					$('deleteListBottom').value = '';
					//$('spamListTop').value = '';
					//$('spamListBottom').value = '';
				}
			}
		});
	},
	
	checkDeleteMessages: function(){
		$$('button.deleteMessages').addEvent('click', function(e){
			var selects = $$('input.selectMsg');
			var inc = 0;
			for (var i=0; i < selects.length; i++){
				if (selects[i].checked == true){
					inc = inc + 1;
				}
			}
			// check if more than one is selected, then confirm
			if (inc > 1){
				var confirmDelete = confirm('You sure you wanna delete these?');
				if (confirmDelete == false){
					$('deleteListTop').value = '';
					$('deleteListBottom').value = '';
					//$('spamListTop').value = '';
					//$('spamListBottom').value = '';
				}
			}
		});
	},
	
	replyMessages: function(){
		var replyButtons = $$('a.replyLink');
		for(var k=0; k < replyButtons.length; k++){
			replyButtons[k].addEvent('click', function(e){
				var selects = $$('input.selectMsg');
				var inc = 0;
				for (var i=0; i < selects.length; i++){
					if (selects[i].checked == true){
						var thisOne = selects[i].value;
						inc = inc + 1;
					}
				}
				// check if more than one is selected, if so, deny
				if (inc > 1){
					alert('Sorry, you can\'t select more than one message.');
				}else{
					if(replyButtons[0].className != 'replyLink inactive' && thisOne != null){
						replyButtons[0].href = '/privatemessage/reply/' + thisOne + '?replyall=no';
					}
					if(replyButtons[1].className != 'replyLink inactive' && thisOne != null){
						replyButtons[1].href = '/privatemessage/reply/' + thisOne + '?replyall=yes';
					}
					if(replyButtons[2].className != 'replyLink inactive' && thisOne != null){
						replyButtons[2].href = '/privatemessage/reply/' + thisOne + '?forward=yes';
					}
				}
				
			});
		}
	},
	
	cancelAddProjectFile: function(){
		var cancelButton = $$('button.cancel');
		cancelButton[0].addEvent('click', function(e){
			cancelButton[0].value = 0;
		});
	},
	
	deleteProjectFile: function(){
		var deleteLinks = $$('a.trash');
		for (var i=0; i < deleteLinks.length; i++){
			deleteLinks[i].addEvent('click', function(e){
				var confirmDelete = confirm("You sure you wanna do that?");
				if (confirmDelete == false){
					for (var j=0; j < deleteLinks.length; j++){
						deleteLinks[j].href="#";
					}
					location.reload(true);
				}
			});
		}
	},
	
	commentBox: function(){
		var toggle = new Fx.Slide($('commentBox'), {duration: 200});
		toggle.toggle();
		if(!$('newComment').hasClass('buyer')){
			$('newComment').addEvent('click', function(e){
				$('commentBox').setStyle('display', 'block');
				new Event(e).stop();
				toggle.toggle();
			})
			$('commentBox').addEvent('submit', function(e){
				new Event(e).stop();
				if($('commentBox').getFirst().value != ''){
					$('commentBox').submit();
				}
			});
		}
	},
	
	updatePublicBox: function(){
		var toggle = new Fx.Slide($('updatePublic'), {duration: 200});
		toggle.toggle();
		$('newPublicUpdate').addEvent('click', function(e){
			$('updatePublic').setStyle('display', 'block');
			new Event(e).stop();
			toggle.toggle();
		});
		$('updatePublic').addEvent('submit', function(e){
			new Event(e).stop();
			if($('updatePublic').getFirst().value != ''){
				$('updatePublic').submit();
			}
		});
	},
	
	updatePrivateBox: function(){
		var toggle = new Fx.Slide($('updatePrivate'), {duration: 200});
		toggle.toggle();
		$('newPrivateUpdate').addEvent('click', function(e){
			$('updatePrivate').setStyle('display', 'block');
			new Event(e).stop();
			toggle.toggle();
		});
		$('updatePrivate').addEvent('submit', function(e){
			new Event(e).stop();
			if($('updatePrivate').getFirst().value != ''){
				$('updatePrivate').submit();
			}
		});
	},
	
	updateBox: function(element, toggler){
		var toggle = new Fx.Slide(element, {duration: 200});
		toggle.toggle();
		toggler.addEvent('click', function(e){
			element.setStyle('display', 'block');
			new Event(e).stop();
			toggle.toggle();
		});
		element.addEvent('submit', function(e){
			new Event(e).stop();
			if(element.getFirst().value != ''){
				element.submit();
			}
		});
	},
	
	requestAccessDrawer: function(){
		var toggle = new Fx.Slide($('projectAccess'), {duration: 200});
		toggle.toggle();
		$('requestAccess').addEvent('click', function(e){
			$('projectAccess').setStyle('display', 'block');
			new Event(e).stop();
			toggle.toggle();
			$('requestAccess').toggleClass('request minus');
		});
	},
	
	/*briefToggle: function(){
		var toggle = new Fx.Slide($('publicBrief'), {duration: 200});
		toggle.toggle();
		$('showBrief').addEvent('click', function(e){
			$('publicBrief').setStyle('display', 'block');
			new Event(e).stop();
			toggle.toggle();
		});
	},*/
	
	allowNDA: function(){
		if($('ndaCheck').checked==false){
			$('ndaSign').disabled = true;
		}else{
			$('ndaSign').disabled = false;
		}
		$('ndaCheck').addEvent('click', function(e){
			if($('ndaCheck').checked==false){
				$('ndaSign').disabled = true;
			}else{
				$('ndaSign').disabled = false;
			}
		});
	},
	
	allowLG: function(){
		/*if($('ndaCheck').checked==false || $('usaCheck').checked==false || $('copyrightCheck').checked==false){
			$('lg-submit').disabled = true;
		}else{
			$('lg-submit').disabled = false;
		}*/
		$$('input.checkbox').addEvent('click', function(e){
			if($('ndaCheck').checked==false || $('usaCheck').checked==false || $('copyrightCheck').checked==false){
				$('lg-submit').disabled = true;
			}else{
				$('lg-submit').disabled = false;
			}
		});
	},
	
	flashMessage: function(){
		//location.hash = '#0';
		new Fx.Styles($('flashMessage'), {duration: 500, transition: Fx.Transitions.linear}).start({
			'opacity' : [1, 0]
		});
	},
	
	loadHomepage: function(){
		var getContent = $('loadProjects').getChildren();
		$('homepageContent').empty();
		getContent.injectInside($('homepageContent'));
		$('loadProjects').empty();
	},
	
	homepageTabs: function(e, el){
		new Event(e).stop();
		
		var loading = new Element('div', {
			'class' : 'loading'
		}).setText('Loading...');
		
		new Ajax(el.href, {
			'postBody': ' ',
			'update' : $('homepageContent'),
			onRequest: function(){
				$('homepageContent').empty();
				loading.injectInside($('homepageContent'));
			},
			onFailure: function(){
				location = '/';
			},
			onSuccess: function(){
				for(var i=0; i < $$('a.homepageTab').length; i++){
					if($$('a.homepageTab')[i] == el){
						$$('a.homepageTab')[i].addClass('active');
					} else {
						$$('a.homepageTab')[i].removeClass('active');
					}
				}
			}
		}).request();
	},
	
	expandText: function(event){
		var _self = this;
		new Event(event).stop();
		var params = event.target.href.split('#0_')[1];
		var id = params.split('&')[0];
		var classIdentifier = params.split('&')[1];
		new Ajax('/submission/comment', {
			'method' : 'post',
			'data' : {
				'node_id' : id,
				'length' : 'full',
				'class': classIdentifier
			},
			'update' : $('message_' + id),
			onComplete: function(){
					var a = new Element('a', {'class' : 'readMore', 'href' : '#1_' + id + '&amp;' + classIdentifier}).setText('less');
					a.addEvent('click', _self.collapseText.bindWithEvent(_self));
					$('message_' + id).appendText(' (');
					a.injectInside($('message_' + id));
					$('message_' + id).appendText(')');
			}
		}).request();
	},
	
	collapseText: function(event){
		var _self = this;
		new Event(event).stop();
		var params = event.target.href.split('#1_')[1];
		var id = params.split('&')[0];
		var classIdentifier = params.split('&')[1];		
		new Ajax('/submission/comment', {
			'method' : 'post',
			'data' : {
				'node_id' : id,
				'length' : 50,
				'class' : classIdentifier
			},
			'update' : $('message_' + id),
			onComplete: function(){
					var a = new Element('a', {'class' : 'readMore', 'href' : '#0_' + id + '&amp;' + classIdentifier}).setText('more');
					a.addEvent('click', _self.expandText.bindWithEvent(_self));
					$('message_' + id).appendText(' ...(');
					a.injectInside($('message_' + id));
					$('message_' + id).appendText(')');
			}
		}).request();
	},
	
	ddChange: function(e){
		new Event(e).stop();
		location = e.target.options[e.target.selectedIndex].value;
	},
	
	characterCount: function(e, options){
		var count = options.target.value.length;
		options.update.setText(options.target.value.length);
		if(count > options.max || count < options.min){
			options.update.addClass('error');
		} else {
			options.update.removeClass('error');
			options.update.addClass('safe');
		}
	},
	
	editInline: function(e){
		var _self = this;
		
		new Event(e).stop();
		var save = new Element('a', {
			'href' : '#',
			'class' : 'inlineButtons'
		}).setText('Save');
		var cancel = new Element('a', {
			'href' : '#',
			'class' : 'inlineButtons'
		}).setText('Cancel');
		var input = new Element('input', {
			'class' : 'inlineEdit'
		});
		
		cancel.addEvent('click', function(e){
			new Event(e).stop();
			
			cancel.remove();
			save.remove();
			
			var a = new Element('a', {
				'href' : '#',
				'class' : 'editInline'
			}).setText(text);
			
			a.addEvent('click', _self.editInline.bindWithEvent(_self));
			
			input.replaceWith(a);
		});
		
		save.addEvent('click', function(e){
			new Event(e).stop();
			
			new Ajax(url, {
				'method' : 'post',
				'data' : {
					'title' : input.value,
					'id' : id
				},
				onSuccess: function(response){
					cancel.remove();
					save.remove();

					var a = new Element('a', {
						'id' : 'editInline_' + id,
						'href' : url,
						'class' : 'editInline'
					}).setText(response);

					a.addEvent('click', _self.editInline.bindWithEvent(_self));

					input.replaceWith(a);
				}
			}).request(); 
			
		});
		
		var text = e.target.getText();
		var url = e.target.href;
		var id = e.target.id.replace('editInline_', '');
		input.value = text;
		e.target.replaceWith(input);
		save.injectAfter(input);
		cancel.injectAfter(save);
	}
	
});

var ProjectCreation = new Class({
	
	initialize: function(){
		
		//this.giveFocus();
		/*
		if($('awardAdd')){
			$('awardAdd').addEvent('click', this.addAward.bindWithEvent(this));
		}
		for(var i=0; i < $$('input.award').length; i++){
			$$('input.award')[i].addEvent('keyup', this.inputAward.bindWithEvent(this));
			$$('input.award')[i].addEvent('focus', this.amountMinimum.bindWithEvent(this));
		}
		for(var i=0; i < $$('a.deleteAward').length; i++){
			$$('a.deleteAward')[i].addEvent('click', this.deleteAward.bindWithEvent(this));
		}
		this.totalAward();
		*/
		/*for(var i=0; i < $$('input.file').length; i++){
			$$('input.file')[i].addEvent('change', this.addFile.bindWithEvent(this));
		}*/
		
		this.calendar();
		if($('otherFiles')){
			$('otherFiles').addEvent('click', this.addOtherFiles.bindWithEvent(this));
		}
		
		for(var i=0; i < $$('input.projectContract').length; i++){
			$$('input.projectContract')[i].addEvent('click', this.changeContract.bindWithEvent(this));
		}
		this.changeContract();
		
		if($('nda_field')){
			$('contractName').addEvent('keyup', this.syncContractToNdaFields.bindWithEvent(this));
			$('ndaName').addEvent('keyup', this.syncNdaToContractFields.bindWithEvent(this));
			$('contractCountry').addEvent('change', this.syncContractToNdaFields.bindWithEvent(this));
			$('ndaCountry').addEvent('change', this.syncNdaToContractFields.bindWithEvent(this));
		}
		
		for(var i=0; i < $$('input.projectNda').length; i++){
			$$('input.projectNda')[i].addEvent('click', this.changeNda.bindWithEvent(this));
		}
		this.changeNda();
		
		for(var i=0; i < $$('a.popUp').length; i++){
				new CS_PopUp($$('a.popUp')[i], {
				'classname' : 'contractPopUp',
				'width'		: 670,
				'height'	: 750,
				'fade' 		: true,
				'drag'		: false,
				'overlay'	: true
			});
		}
		
		for(var i=0; i < $$('dl.helpText').length; i++){
			this.helpInfo($$('dl.helpText')[i]);
		}
		
		if($('briefWizard')){
			this.creationHelpInfo('a.helpHandle', 'div.creationHelp');
			this.briefWizardToggle();
			this.briefWizardCopy();
		}
		if($('exclusionFee')){
			this.robotsFee();
		}
		
		if($$('li.projectFileName').length >= 1){
			$('projectFiles').setStyle('display', 'block');
		} else {
			if($('projectFiles')){
				$('projectFiles').setStyle('display', 'none');
			}
		}
		
	/*	for(var i=0; i < $$('a.deleteFile').length; i++){
				$$('a.deleteFile')[i].addEvent('click', this.deleteFile.bindWithEvent(this));
		} */
		
		if($('otherFiles') && $('otherFiles').className == 'remove'){
			$('otherFiles').addEvent('click', this.removeOtherFiles.bindWithEvent(this));
		}
		
		if($$('a.deleteContract')[0]){
			$$('a.deleteContract')[0].addEvent('click', this.deleteContract.bindWithEvent(this));
		}
		
		var _self = this;
		for(var i=0; i < $$('form.validate').length; i++){
			$$('form.validate')[i].onsubmit = function(){
				for(var j=0; j < $$('fieldset.validate').length; j++){
					_self.validateField($$('fieldset.validate')[j], this);
				}
				return false;
			}
		}
		
		var setProProjectSettings = function()
		{
			if($('galleryVisibilityNo').checked){
				$('commentVisibilityNo').checked = true;
				$('commentVisibilityNo').disabled = true;
				$('commentVisibilityYes').disabled = true;
			}
			
			if($('galleryVisibilityYes').checked){
				$('commentVisibilityNo').disabled = false;
				$('commentVisibilityYes').disabled = false;
			}
		}
		
		if($('galleryVisibilityYes') && $('galleryVisibilityNo') && $('commentVisibilityYes') && $('commentVisibilityNo')){
			setProProjectSettings();
			$('galleryVisibilityYes').addEvent('click', setProProjectSettings);
			$('galleryVisibilityNo').addEvent('click', setProProjectSettings);
			$('commentVisibilityYes').addEvent('click', setProProjectSettings);
			$('commentVisibilityNo').addEvent('click', setProProjectSettings);
		}
		
	},
	
	giveFocus: function(){
		var inputs = $$('input.text', 'textarea.text');
		for(i=0;i<inputs.length;i++){
			if(inputs[i].getStyle('border-color', '#999')){
				inputs[i].setStyles({
					'border-color' : '#CCC',
					'background-color' : '#FFF'
				});
			}
			inputs[i].addEvent('click', function(e){
				new Event(e).stop();
				for(j=0;j<inputs.length;j++){
					if(inputs[j].getStyle('border-color', '#999')){
						inputs[j].setStyles({
							'border-color' : '#CCC',
							'background-color' : '#FFF'
						});
					}
				}
				this.setStyles({
					'border-color' : '#999',
					'background-color' : '#FFC'
				});
			});
		}
	},
	
	creationHelpInfo: function(toggler, element){
		var accordion = new Accordion(toggler, element, {
			'opacity': false, 'start': true, 'duration': 200, 'alwaysHide' : true,
			onActive: function(toggler, element){
				toggler.setStyle('color', '#1C9BC8');
				element.setAttribute('class', 'creationHelp active');
			},
			onBackground: function(toggler, element){
				toggler.setStyle('color', '#666');
				element.setAttribute('class', 'creationHelp');
			}
		});
	},
	
	briefWizardCopy: function(){
		$('createStep1').addEvent('click', function(){
			var briefText = '';
			if($('briefPiece_1').value != ''){
				briefText = 'LET ME TELL YOU ABOUT US:\n\n' + $('briefPiece_1').value + "\n\n";
			}
			if($('briefPiece_2').value != ''){
				briefText += 'HERE IS WHAT WE NEED:\n\n' + $('briefPiece_2').value + "\n\n";
			}
			if($('briefPiece_3').value != ''){
				briefText += 'OUR TARGET AUDIENCE IS:\n\n' + $('briefPiece_3').value + "\n\n";
			}
			if($('briefPiece_4').value != ''){
				briefText += 'WE LIKE THESE DESIGNS:\n\n' + $('briefPiece_4').value + "\n\n";
			}
			if($('briefPiece_5').value != ''){
				briefText += 'WE ABSOLUTELY MUST HAVE (or we don\'t want to see) THIS IN OUR DESIGN:\n\n' + $('briefPiece_5').value;
			}
			/*for(i=0;i<briefPieces.length;i++){
				if(briefPieces[i].value != ''){
					briefText += briefPieces[i].value + "\n\n";
				}
			}*/
			if($('briefMode').value == 'wizard'){
				if($('privateProjectDescription')){
					$('privateProjectDescription').value = briefText;
				}else{
					$('projectDescription').value = briefText;
				}
			}
		});
	},
	
	briefWizardToggle: function(){
		//$('simpleBrief'), $('simple'), $('briefWizard'), $('wizard');
		var briefPieces = $$('textarea.briefPiece');
		var briefMode = $('briefMode').value;
		if(briefMode == 'simple'){
			$('briefWizard').setStyles({
				'position' : 'absolute',
				'left' : '-9999px'
			});
			$('simpleBrief').setStyles({
				'position' : 'relative',
				'left' : '0'
			});
			$('wizardLink').setStyle('display', 'block');
			$('simpleLink').setStyle('display', 'none');
		}else{
			$('briefWizard').setStyles({
				'position' : 'relative',
				'left' : '0'
			});
			$('simpleBrief').setStyles({
				'position' : 'absolute',
				'left' : '-9999px'
			});
			$('wizardLink').setStyle('display', 'none');
			$('simpleLink').setStyle('display', 'block');
		}
		$('simple').addEvent('click', function(e){
			var briefText = '';
			if($('briefPiece_1').value != ''){
				briefText = 'LET ME TELL YOU ABOUT US:\n\n' + $('briefPiece_1').value + "\n\n";
			}
			if($('briefPiece_2').value != ''){
				briefText += 'HERE IS WHAT WE NEED:\n\n' + $('briefPiece_2').value + "\n\n";
			}
			if($('briefPiece_3').value != ''){
				briefText += 'OUR TARGET AUDIENCE IS:\n\n' + $('briefPiece_3').value + "\n\n";
			}
			if($('briefPiece_4').value != ''){
				briefText += 'WE LIKE THESE DESIGNS:\n\n' + $('briefPiece_4').value + "\n\n";
			}
			if($('briefPiece_5').value != ''){
				briefText += 'WE ABSOLUTELY MUST HAVE (or we don\'t want to see) THIS IN OUR DESIGN:\n\n' + $('briefPiece_5').value;
			}
			$('briefWizard').setStyles({
				'position' : 'absolute',
				'left' : '-9999px'
			});
			$('simpleBrief').setStyles({
				'position' : 'relative',
				'left' : '0'
			});
			$('wizardLink').setStyle('display', 'block');
			$('simpleLink').setStyle('display', 'none');
			$('briefMode').value = 'simple';
			if($('privateProjectDescription')){
				$('privateProjectDescription').value = briefText;
			}else{
				$('projectDescription').value = briefText;
			}
		});
		$('wizard').addEvent('click', function(e){
			var confirmSimple = confirm("Be careful - when you switch to Wizard Mode, the brief you've entered in Simple Mode will be lost.\n\nConsider yourself warned!");
			if(confirmSimple == false){
				new Event(e).stop();
			}else{
				$('briefWizard').setStyles({
					'position' : 'relative',
					'left' : '0'
				});
				$('simpleBrief').setStyles({
					'position' : 'absolute',
					'left' : '-9999px'
				});
				$('wizardLink').setStyle('display', 'none');
				$('simpleLink').setStyle('display', 'block');
				$('briefMode').value = 'wizard';
			}
		});
	},
	
	robotsFee: function(e){
		$('searchFeeYes').addEvent('click', (function(e){
			$('exclusionFee').setStyles({'font-size' : '1em', 'color' : '#000'});
			$('searchFee').setText(15);
			this.totalAward();
		}).bind(this));
		$('searchFeeNo').addEvent('click', (function(e){
			$('exclusionFee').setStyles({'font-size' : '0', 'color' : '#fff'});
			$('searchFee').setText(0);
			this.totalAward();
		}).bind(this));
	},
	
	amountMinimum: function(e){
		if(e.target.tagName == 'INPUT' && e.target.value !=''){
			var input = e.target;
			var min = $('awardMin').getText();
			min = min.toInt();
			input.addEvent('blur', function(){
				var value = input.value.toInt();
				if(value < min){
					$('amountIndicator').setStyle('color', '#C00');
					input.setStyles({
						'border-color' : '#C00',
						'background-color' : '#FCC'
					});
				}else{
					$('amountIndicator').setStyle('color', '#FFF');
					input.setStyles({
						'border-color' : '#CCC',
						'background-color' : '#FFF'
					});
				}
			});
		}
	},
	/*
	addAward: function(e){
		new Event(e).stop();
		
		var awardCounts = $$('tr.awardCount');
		var count = awardCounts.length;
		var tr = new Element('tr', {
			'class' : 'awardCount',
			'id' : 'awardCount_' + (count + 1)
		});
		var td = new Element('td');
		var input = new Element('input', {
			'class' : 'text award',
			'type' : 'type', 
			'name' : 'projectAward[]'
		});
		var a = new Element('a', {
			'class' : 'deleteAward',
			'href' : '#_' + (count + 1)
		}).setText('delete');
		
		input.addEvent('keyup', this.inputAward.bindWithEvent(this));
		input.addEvent('focus', this.amountMinimum.bindWithEvent(this));
		a.addEvent('click', this.deleteAward.bindWithEvent(this));
		
		td.clone().setText('Award ' + (count + 1)).injectInside(tr);
		td.clone().setText('$').injectInside(tr);
		var inputTd = td.clone();
		inputTd.addClass('awardAmounts');
		input.injectInside(inputTd);
		inputTd.injectInside(tr);
		var del = td.clone();
		del.className = 'delete';
		a.injectInside(del);
		del.injectInside(tr);
		tr.injectAfter($('awardCount_' + count));
		
	},
	
	inputAward: function(e){
		var val = '';
		var chars = e.target.value.split('');
		for(var i=0; i < chars.length; i++){
			if(chars[i] >= 0 && chars[i] <= 9){
				val += chars[i];
				e.target.value = val;
				if(i == chars.length - 1){
					val = val.toInt();
					this.totalAward();
					this.amountMinimum(e);
				}
			}
		}
		if(e.target.value == ''){
			this.totalAward();
			this.amountMinimum(e);
		}
	},
	
	deleteAward: function(e){
		new Event(e).stop();
		$('awardCount_' + e.target.href.split('#_')[1]).remove();
		for(var i=0; i < $$('tr.awardCount').length; i++){
			$$('tr.awardCount')[i].id = 'awardCount_' + (i + 1);
			$$('tr.awardCount')[i].getChildren()[3].getFirst().href = '#_' + (i + 1);
		}
		this.totalAward();
	},
	
	totalAward: function(){
		var amounts = $$('input.award');
		var total = 0;
		
		for(var i=0; i<amounts.length; i++){
			if(amounts[i].value != '' && amounts[i].value != '.'){
				amounts[i].value = amounts[i].value.toInt().round();
				total += amounts[i].value.toFloat();
			}
		}

		var projectfee = total.toFloat() * ($('projectPercent').getText().replace('%', '').replace('(', '').replace(')', '') * .01);
		total = total.toFloat() + projectfee.toFloat();
		if($('exclusionFee')){
			total += $('searchFee').getText().toInt();
		}
		

		projectfee = projectfee.round(2);
		total = total.round(2);
		
		if(projectfee.toString().split('.').length > 1 && projectfee.toString().split('.')[1].length == 1){	
			projectfee += '0';
		}
		
		if(total.toString().split('.').length > 1 && total.toString().split('.')[1].length == 1){	
			total += '0';
		}
		
		if($('projectFee')){
			$('projectFee').setText(projectfee);
		}
		if($('awardTotal')){
			$('awardTotal').setText(total);
		}
	}, */
	
	addFile: function(e){
		new Event(e).stop();
		for(var i=0; i < $$('input.file').length; i++){
			$$('input.file')[i].setStyles({
				'position' : 'absolute',
				'left' : -9999
			})
		}
		var input = new Element('input', {
			'class' : 'file',
			'type': 'file',
			'name' : 'projectFile[]',
			'id' : 'projectFile_' + ($$('input.file').length + 1)
		});
		var a = new Element('a', {
			'class' : 'deleteFile',
			'href' : '#_' + ($$('input.file').length)
		}).setText('delete');
		
		var filename = e.target.value.split('/');
		filename = filename[filename.length - 1];
		if(filename.length > 45){
			filename = filename.substring(0, 20) + '...' + filename.substring(filename.length - 20);
		}
		
		var li = new Element('li', {
			'class' : 'projectFileName',
			'id' : 'projectFileName_' + ($$('input.file').length)
		}).setText(filename);
		
		a.addEvent('click', this.deleteFile.bindWithEvent(this));
		
		input.addEvent('change', this.addFile.bindWithEvent(this));
		input.injectBefore($('projectFiles'));

		a.injectInside(li);
		li.injectInside($('projectFiles'));
		
		
		if($$('li.projectFileName').length >= 1){
			$('projectFiles').setStyle('display', 'block');
		} else {
			$('projectFiles').setStyle('display', 'none');
		}
		
		
	},
	
	deleteFile: function(e){
		new Event(e).stop();
		if(e.target.id.contains('deleteMe')){
			var objectId = e.target.id.split('deleteMe_')[1];
			var found = false;
			for(var i=0; i < $$('.deleteThisFile').length; i++){
				if($$('.deleteThisFile')[i].value == objectId){
					found = true;
				}
			}
			if(!found){
				new Element('INPUT', {
					'type' : 'hidden',
					'value' : objectId,
					'name' : 'deleteFile[]',
					'class' : 'deleteThisFile'
				}).injectInside($$('.fileInputs')[0]);
			}
		}

		if($('projectFile_' + e.target.href.split('#_')[1])) $('projectFile_' + e.target.href.split('#_')[1]).remove();
		$('projectFileName_' + e.target.href.split('#_')[1]).remove();
		
		for(var i=0; i < $$('input.file').length; i++){
			if($$('input.file')[i]) $$('input.file')[i].setProperty('id', 'projectFile_' + (i + 1));
			if($$('li.projectFileName')[i]) $$('li.projectFileName')[i].setProperty('id', 'projectFileName_' + (i + 1));
			if($$('a.deleteFile')[i]) $$('a.deleteFile')[i].setAttribute('href', '#_' + (i + 1));
		} 
	
		if($$('li.projectFileName').length >= 1){
			$('projectFiles').setStyle('display', 'block');
		} else {
			$('projectFiles').setStyle('display', 'none');
		} 
		
		
	},
	
	calendar: function(){
		if($('projectDays')){
		/*	if($('projectDays').value == ''){
				$('projectDays').value = max_days / 2;
			} */
			this.updateCalendar();
			$('calendarButton').addEvent('click', this.openCalendar.bindWithEvent(this));
			$('projectDate').addEvent('focus', this.updateDay.bindWithEvent(this));
			$('projectDays').addEvent('keyup', this.updateCalendar.bindWithEvent(this));
		}
	},
	
	openCalendar: function(){
		displayDatePicker('projectDate', false, 'mdy', '-');
	},
	
	updateCalendar: function(){
		if($('projectDays').value != ''){
			/*if($('projectDays').value.toInt() > max_days){
				$('projectDays').value = max_days;
			} else if($('projectDays').value.toInt() < min_days){
				$('projectDays').value = max_days / 2;
			}*/
			var nowDate = new Date();
			var endDate = new Date();
			endDate.setDate(nowDate.getDate() + $('projectDays').value.toInt());
			$('projectDate').value = (endDate.getMonth() + 1) + '-' + endDate.getDate() + '-' + endDate.getFullYear();
		
			switch(endDate.getMonth() + 1){
				case 1: month = 'Jan'; break;
				case 2: month = 'Feb'; break;
				case 3: month = 'Mar'; break;
				case 4: month = 'Apr'; break;
				case 5: month = 'May'; break;
				case 6: month = 'Jun'; break;
				case 7: month = 'Jul'; break;
				case 8: month = 'Aug'; break;
				case 9: month = 'Sep'; break;
				case 10: month = 'Oct'; break;
				case 11: month = 'Nov'; break;
				case 12: month = 'Dec'; break;
			}
			var year = endDate.getFullYear().toString();
			year =  year.substring(2);
			$('friendlyDate').setText(endDate.getDate() + '-' + month + '-' + year);
			
		}
	},
	
	updateDay: function(){
		if($('projectDate').value != ''){
			var date = $('projectDate').value.split('-');
			var nowDate = new Date();
			var endDate = new Date(date[2].toInt(), (date[0].toInt() - 1), date[1].toInt(), nowDate.getHours(), nowDate.getMinutes(), nowDate.getSeconds());
			var diff = endDate - nowDate;
			diff = Math.round(diff/1000/60/60/24);
			$('projectDays').value = diff;
			this.updateCalendar();
		}
	},
	
	addOtherFiles: function(e){
		new Event(e).stop();
		var input = new Element('input', {
			'type' : 'text',
			'name' : 'projectFileTypeExtra',
			'class' : 'text'
		});
		var a = new Element('a', {
			'href' : '#',
			'id' : 'otherFiles',
			'class' : 'remove'
		}).setText('Cancel');
		var small = new Element('small').setText("Separate multiple file types with commas (,).");
		a.addEvent('click', this.removeOtherFiles.bindWithEvent(this));
		e.target.replaceWith(input);
		small.injectInside($$('li.other')[0]);
		a.injectInside($$('li.other')[0]);
	
		$$('li.other')[0].setStyle('display', 'block');
	},
	
	removeOtherFiles: function(e){
		new Event(e).stop();
		var a = new Element('a', {
			'href' : '#',
			'id' : 'otherFiles'
		}).setText('add my own');
		a.addEvent('click', this.addOtherFiles.bindWithEvent(this));
		$$('li.other')[0].empty();
		a.injectInside($$('li.other')[0]);
		$$('li.other')[0].setStyle('display', 'inline');
		
	},
	
	changeContract: function(){
		for(var i=0; i < $$('input.projectContract').length; i++){
			if($$('input.projectContract')[i].checked == true){
				var contractType = $$('input.projectContract')[i].value;
			}
		}
		
		switch(contractType){
			case 'cs_contract':
				$('csContract').removeClass('hidden');
				$('myContract').addClass('hidden');
				if($('nda_field')){
					$('ndaName').disabled = true;
					$('ndaCountry').disabled = true;
					$('ndaName').setStyle('display', 'none');
					$('ndaCountry').setStyle('display', 'none');
				}
			break;
			case 'private_contract':
				$('myContract').removeClass('hidden');
				$('csContract').addClass('hidden');
				if($('nda_field')){
					$('ndaName').disabled = false;
					$('ndaCountry').disabled = false;
					$('ndaName').setStyle('display', 'block');
					$('ndaCountry').setStyle('display', 'block');
				}
			break;
			case 'no_contract':
				$('myContract').addClass('hidden');
				$('csContract').addClass('hidden');
				if($('nda_field')){
					$('ndaName').disabled = false;
					$('ndaCountry').disabled = false;
					$('ndaName').setStyle('display', 'block');
					$('ndaCountry').setStyle('display', 'block');
				}
			break;
		}
	
	},
	
	changeNda: function(){
		for(var i=0; i < $$('input.projectNda').length; i++){
			if($$('input.projectNda')[i].checked == true){
				var contractType = $$('input.projectNda')[i].value;
			}
		}
		
		switch(contractType){
			case 'crowdspring_nda':
				$('csNda').removeClass('hidden');
				$('myNda').addClass('hidden');
			break;
			case 'private_nda':
				$('myNda').removeClass('hidden');
				$('csNda').addClass('hidden');
			break;
		}
	},
	
	syncContractToNdaFields: function(event)
	{
		$('ndaName').value = $('contractName').value;
		$('ndaCountry').value = $('contractCountry').value;
	},
	
	syncNdaToContractFields: function(event)
	{
		$('contractName').value = $('ndaName').value;
		$('contractCountry').value = $('ndaCountry').value;
	},
	
	deleteContract: function(e){
		new Event(e).stop();
		$('customContract').removeClass('customContractFile');
		var file = new Element('input', {
			'type' : 'file',
			'name' : 'customContract'
		});
		var a = new Element('a', {
			'class' : 'deleteContract', 
			'href' : '#delete'
		}).setText('delete');
		a.addEvent('click', this.deleteContract.bindWithEvent(this));
		file.addEvent('change', function(){
			var filename = $('customContract').getFirst().value.split('/');
			filename = filename[filename.length - 1];
			if(filename.length > 45){
				filename = filename.substring(0, 20) + '...' + filename.substring(filename.length - 20);
			}
			$('customContract').getFirst().setStyles({
				'position' : 'absolute',
				'left' : -9999
			});
			$('customContract').appendText(filename);
			a.injectInside($('customContract'));
			$('customContract').addClass('customContractFile');
		});
		
		$('customContract').empty();
		file.injectInside($('customContract'));
	},
	
	helpInfo: function(el){
		el.getFirst().getFirst().addEvent('click', function(e){
			new Event(e).stop();
			for(var i=0; i < $$('dl.helpText').length; i++){
				if(this.getParent().getParent() != $$('dl.helpText')[i]){
					$$('dl.helpText')[i].getLast().setStyle('display', 'none');
				}
			}
			if(this.getParent().getParent().getLast().getStyle('display') == 'none'){
				this.getParent().getParent().getLast().setStyle('display', 'block');
			} else {
				this.getParent().getParent().getLast().setStyle('display', 'none');
			}
		});
	},
	
	validateField: function(el, form){
		var getElement = function(parent, tagName, index){
			if(!index) index = 0;
			return parent.getElementsByTagName(tagName)[index];
		}
		
		var errors = function(el, type, form){
			var errors = false;
			switch(type){
				case true:
					el.addClass('error');
				break;
				default:
					el.removeClass('error');
			}
			for(var i=0; i < $$('fieldset.validate').length; i++){
				if(getElement($$('fieldset.validate')[i], 'LABEL').hasClass('error')){
					errors = true;
				}
			}
			
			if(errors == true){
				$('displayErrors').setStyle('display', 'block');
			} else {
				form.submit();
			}
		}
		
		var isEmpty = function(val){
			if(val.length <= 0 || val == ''){
				return true;
			} else {
				return false;
			}
		}
		
		var checkCardLength = function(val, type){
			if(type == 8){
				if(val.length != 15){
					return false;;
				} else {
					return true;
				}
			} else {
				if(val.length != 16){
					return false;
				} else {
					return true;
				}
			}
		}
		
		switch(el.id){
			
			case 'cardName':
				if(isEmpty(getElement(el, 'INPUT').value)){
					errors(getElement(el, 'LABEL'), true, form);
				} else {
					errors(getElement(el, 'LABEL'), false, form);
				}
			break;
			case 'cardNumber':
				var input = getElement(el, 'INPUT');
				if(isEmpty(input.value) || !checkCardLength(input.value, getElement($('cardType'), 'SELECT').value)){
					errors(getElement(el, 'LABEL'), true, form);
				} else {
					errors(getElement(el, 'LABEL'), false, form);
				}
			break;
			case 'cardVerificationNumber':
				if(isEmpty(getElement(el, 'INPUT').value)){
					errors(getElement(el, 'LABEL'), true, form);
				} else {
					errors(getElement(el, 'LABEL'), false, form);
				}
			break;
			case 'firstName':
				if(isEmpty(getElement(el, 'INPUT').value)){
					errors(getElement(el, 'LABEL'), true, form);
				} else {
					errors(getElement(el, 'LABEL'), false, form);
				}
			break;
			case 'lastName':
				if(isEmpty(getElement(el, 'INPUT').value)){
					errors(getElement(el, 'LABEL'), true, form);
				} else {
					errors(getElement(el, 'LABEL'), false, form);
				}
			break;	
			case 'address':
				if(isEmpty(getElement(el, 'INPUT').value)){
					errors(getElement(el, 'LABEL'), true, form);
				} else {
					errors(getElement(el, 'LABEL'), false, form);
				}
			break;
			case 'city':
				if(isEmpty(getElement(el, 'INPUT').value)){
					errors(getElement(el, 'LABEL'), true, form);
				} else {
					errors(getElement(el, 'LABEL'), false, form);
				}
			break;
			case 'state':
				if(isEmpty(getElement(el, 'INPUT').value)){
					errors(getElement(el, 'LABEL'), true, form);
				} else {
					errors(getElement(el, 'LABEL'), false, form);
				}
			break;
			case 'zip':
				if(isEmpty(getElement(el, 'INPUT').value)){
					errors(getElement(el, 'LABEL'), true, form);
				} else {
					errors(getElement(el, 'LABEL'), false, form);
				}
			break;
			case 'country':
				if(isEmpty(getElement(el, 'SELECT').value)){
					errors(getElement(el, 'LABEL'), true, form);
				} else {
					errors(getElement(el, 'LABEL'), false, form);
				}
			break;
			
		}
		
	}
	
	
	
});

var CS_PopUp = new Class({
	
	initialize: function(obj, options){
		this.obj = obj;
		this.setOptions(options);
		this.obj.addEvent('click', this.open.bindWithEvent(this));
		if(!this.options.escape){
			this.options.escape = false;
		}
	},
	
	open: function(e){
		new Event(e).stop();
	
		this.popUp = new Element('div', {
			'class' : this.options.classname,
			'styles' : {
				'z-index' : 3
			}
		});
		this.container = new Element('div', {
			'class' : 'container'
		})
		this.close = new Element('div', {
			'class' : 'close'
		});
		this.content = new Element('div', {
			'class' : 'content'
		});
		this.loader = new Element('div', {
			'class' : 'preloader'
		});
		
		if(this.options.closeText){
			this.close.setText(this.options.closeText);
		}
		
		this.close.addEvent('click', this.closePop.bindWithEvent(this));
		
		//this.container.setStyle('background', '#fff');
		
		if(window.ie6){
			this.iFrame = new Element('iframe', {
				'styles' : {
					'border' : 'none',
					'opacity' : .01,
					'position' : 'absolute',
					'top' : 0,
					'left' : 0,
					'width' : '100%',
					'height' : window.getScrollHeight()
				}
			});
			this.updateiFrame.periodical(20, this);
			this.iFrame.injectInside(document.body);
		}
		
		if(this.options.overlay == true){
			this.overlay = new Element('div', {
				'id' : 'popOverlay',
				'styles' : {
					'background' : '#000',
					'opacity' : .75,
					'position' : 'absolute',
					'z-index' : 2,
					'top' : 0,
					'left' : 0,
					'width' : '100%',
					'height' : window.getScrollHeight()
				}
			});
			this.updateOverlay.periodical(20, this);
			if(this.options.escape == true){
			this.overlay.addEvent('click', this.closePop.bindWithEvent(this));
			}
			this.overlay.injectInside(document.body);
		}
		
		this.close.injectInside(this.container);
		this.content.injectInside(this.container);
		this.loader.injectInside(this.container);
		this.container.injectInside(this.popUp);
		this.popUp.injectInside(document.body);
		
		new PNGFix();
		
		if(this.options.position){
			this.left = e.target.getLeft() + this.options.position.x;
			this.top =   e.target.getTop() + this.options.position.y;
		} else {
			this.left = (window.getWidth() - this.options.width) / 2;
			this.top =  ((window.getHeight() - this.options.height) / 2) + window.getScrollTop();
		}
		
		this.popUp.setStyles({
			'position' : 'absolute',
			'top' : this.top,
			'left' : this.left,
			'width' : this.options.width,
			'height' : this.options.height
		});
		
		this.loader.setStyles({
			'position' : 'absolute',
			'top' : (this.options.height - this.loader.getCoordinates().height) / 2,
			'left' : (this.options.width - this.loader.getCoordinates().width) / 2
		})
		
		this.content.setStyle('opacity', 0);
		
		if(this.options.drag == true){
			this.content.makeDraggable();
		}
		this.preload();
	},
	
	preload: function(){
		
		var _self = this;
		new Ajax(this.obj.href, {
			'update' : this.content,
			onComplete: function(){
				_self.loader.remove();
				if(_self.options.fade == true) {
					new Fx.Style(_self.content, 'opacity').start(0, 1);
				} else {
					_self.content.setStyle('opacity', 1);
				}
				if(_self.options.onComplete){
					_self.options.onComplete.attempt();
				}
			}
		}).request();
	},
	
	closePop: function(e){
		if(e){
			new Event(e).stop();
		}
		var _self = this;
		if(this.options.fade == true){
			new Fx.Style(this.popUp, 'opacity', {
				onComplete: function(){
					_self.popUp.remove();
					if(_self.overlay) _self.overlay.remove();
					if(_self.iFrame) _self.iFrame.remove();
				}
			}).start(1, 0);
		} else {
			this.popUp.remove();
			if(this.overlay) this.overlay.remove();
			if(this.iFrame) this.iFrame.remove();
		}
	}, 
	
	updateOverlay: function(){
		this.overlay.setStyles({
			'height' : window.getScrollHeight()
		});
	},
	
	updateiFrame: function(){
		this.iFrame.setStyles({
			'height' : window.getScrollHeight()
		});
	}

});
CS_PopUp.implement(new Options);

var PNGFix = new Class({
	
	initialize: function(){
		if(window.ie6){
			var el = $$('*');
			for(var i=0; i < el.length; i++){
				var imgURL = el[i].getStyle('background-image');
			 	if (imgURL.contains('.png')){
			 		el[i].setStyles({
			 			'background': '',
			 			'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale', src=" + imgURL.match(/\((.+)\)/)[1] + ")"
			 		});
			 	};
			}
		}
	}
	
});

var ZoomTool = new Class({
	
	initialize: function(img){
		var _self = this;
		this.isLoaded = false;
		this.isLocked = false;
		this.img = img;
		this.imgLarge = '/submission/zoom/' + img.id.replace('zoom_', '') + '/zoom';


		this.zoomIcon = new Element('div', {
			'class' : 'zoomIcon',
			'styles' : {
				'opacity' : .60,
				'display' : 'none'
			}
		}).setText('zoom');
		
		this.zoomIcon.addEvents({
			'mouseover' : this.overHandler.bindWithEvent(this),
			'mouseleave' : this.leaveHandler.bindWithEvent(this),
			'click' : this.clickHandler.bindWithEvent(this)
		});
		
		this.zoomIcon.injectAfter(this.img.getParent());
		
		this.img.addEvents({
			mouseover : function(e){
					_self.zoomIcon.setStyle('display', 'block');
					clearInterval(this.hideDelay);
			},
			mouseleave : function(){
				if(_self.isLocked == false){
					_self.hideDelay = _self.hideTab.delay(100, _self);
				}
			}
		});
	},
	
	hideTab: function(){
		this.zoomIcon.setStyle('display', 'none');
		clearInterval(this.hideDelay);
	},
	
	overHandler: function(){
		clearInterval(this.hideDelay);
		this.zoomIcon.setStyle('display', 'block');
		if(this.isLocked == false){
			this.delay = this.start.delay(500, this);
		}
	},
	
	leaveHandler: function(){
		clearInterval(this.delay);
		if(this.zoomContainer && this.isLocked == false){
			this.close();
		}
	},
	
	clickHandler: function(){
		this.zoomContainer.makeDraggable();
		//this.zoomIcon.setStyle('background-position', '0 -14px');
		this.zoomIcon.setText('close');
		if(this.isLocked == true){
			this.close();
		} else {
			this.isLocked = true;	
		}
	},
	
	start: function(){
		if(!this.zoomContainer){
			this.zoomContainer = new Element('div', {
				'class' : 'zoomContainer',
				'styles' : {
					'display' : 'none'
				} 
			});
			this.containerTop = new Element('div', {
				'class' : 'top',
				'styles' : {
					'opacity' : .25
				}
			});
			this.containerRight = new Element('div', {
				'class' : 'right'
			});
			this.containerBottom = new Element('div', {
				'class' : 'bottom'
			});
			this.containerLeft = new Element('div', {
				'class' : 'left'
			});
			this.div = new Element('div');
			this.closeButton = new Element('div', {
				'class' : 'zoomClose'
			}).setText('');
			this.closeButton.addEvent('click', this.close.bindWithEvent(this));
			this.zoomContainer.addEvents({
				'click' : this.adjustDepth.bindWithEvent(this)
			});
			/*var info = eval(this.img.alt);
		
			this.moreInfo = new Element('div', {
				'class' : 'zoomInfo',
				'styles' : {
					'opacity' : 0
				}
			}).setHTML('<h3>' + info[0] + '</h3><h4>by <a href="' + this.img.getParent().getParent().getNext().getChildren()[0].href + '">' + info[1] + '</a></h4>');
			
			
			this.moreInfoButton = new Element('div', {
				'class' : 'zoomInfoButton'
			}).setHTML('<div></div>');
			var _self = this;
			
			this.moreInfoButton.addEvent('click', function(){
				if(_self.moreInfo.getStyle('opacity') == 0){
					_self.showMoreInfo();
				} else {
					_self.hideMoreInfo();
				}
			});
			
			this.moreInfoButton.addEvent('mouseover', function(){
				this.setStyle('visibility', 'visible');
			}); */
		
			this.div.clone().injectInside(this.containerTop)
			this.div.clone().injectInside(this.containerRight);
			this.div.clone().injectInside(this.containerBottom);
			this.div.clone().injectInside(this.containerLeft);
			this.containerTop.injectInside(this.zoomContainer);
			this.containerRight.injectInside(this.zoomContainer);
			this.containerBottom.injectInside(this.zoomContainer);
			this.containerLeft.injectInside(this.zoomContainer);
			this.closeButton.injectInside(this.zoomContainer);
			//this.moreInfo.injectInside(this.zoomContainer);
			//this.moreInfoButton.injectInside(this.zoomContainer);
			this.zoomContainer.injectInside(document.body);
			
			new PNGFix();
		}
		
		
		
		if(this.isLoaded == true){
			this.display();
		} else {
			this.load();
		} 
		
		
	},
	
	load: function(){
		var _self = this;
	/*	this.image = new Asset.image(this.imgLarge, {
			onload: function(){
				_self.isLoaded = true;
				_self.height = this.height;
				_self.width = this.width;
				_self.display();
			}
		}); */
		
		this.image = new Element('div');
		
		this.request = new Ajax(this.imgLarge, {
			onComplete: function(){
				_self.isLoaded = true;
				_self.height = _self.image.getFirst().height;
				_self.width = _self.image.getFirst().width;
				_self.display();
			},
			'update' : this.image,
			'postBody': { }
		}).request();
		
		//this.zoomIcon.setStyle('background-position', '0 -43px');
		this.zoomIcon.setText('loading');
		/*this.image.addEvents({
			'mouseover' : this.containerOver.bindWithEvent(this),
			'mouseleave' : this.containerLeave.bindWithEvent(this)
		});*/
		this.image.injectInside(this.zoomContainer);
		
	},
	
	display: function(){
		//this.zoomIcon.setStyle('background-position', '0 -28px');
		this.zoomIcon.setText('click to lock');
		var zoomCoords = this.zoomIcon.getCoordinates();
		var top = zoomCoords.top - this.height + 40;
		var left = zoomCoords.left - this.width - 20;
		
		if(top <= window.getScrollTop()){
			top = zoomCoords.top + zoomCoords.height - 40;
		}
		
		if(left <= 0){
			left = zoomCoords.left + zoomCoords.width + 40;
		}
		
		this.zoomContainer.setStyles({
			'display' : 'block',
			'top' : top,
			'left' : left,
			'display' : 'block'
		});
		
		this.containerTop.setStyles({
			'width' : this.width + 6,
			'height' : this.height + 6
		});
		
		if(window.ie6){
			$$('div.right')[0].remove();
			$$('div.left')[0].remove();
			$$('div.bottom')[0].remove();
			$$('div.top')[0].remove();
			this.zoomContainer.setStyles({
				'width' : this.width,
				'height' : this.height,
				'border' : '5px solid #161616'
			});
			this.zoomContainer.getElementsByTagName('img')[0].setStyles({
				'z-index' : -1,
				'top' : 0
			});
		}

		this.adjustDepth();
	},
	
	close: function(){
		this.isLocked = false;
		if(this.request) this.request.cancel();
		//this.zoomIcon.setStyle('background-position', '0 0');
		this.zoomIcon.setText('zoom');
		this.zoomContainer.setStyle('display', 'none');
	},
	
	adjustDepth: function(){
		for(var i=0; i < $$('div.zoomContainer').length; i++){
			$$('div.zoomContainer')[i].setStyle('z-index', 0);
		}
		this.zoomContainer.setStyle('z-index', 1);
	},
	
	containerOver: function(){
		this.moreInfoButton.setStyle('visibility', 'visible');
	},
	
	containerLeave: function(){
		this.moreInfoButton.setStyle('visibility', 'hidden');
		this.moreInfo.setStyle('opacity', 0);
		this.moreInfo.setStyle('visibility', 'hidden');
	},
	
	showMoreInfo: function(){
		new Fx.Style(this.moreInfo, 'opacity', {'duration' : 300}).start(this.moreInfo.getStyle('opacity'), 1);
	}, 
	
	hideMoreInfo: function(){
		this.moreInfo.setStyle('opacity', 0);
		this.moreInfo.setStyle('visibility', 'hidden');
	}
	
});

var CS_Rating = new Class({
	
	initialize: function(el, type){

		this.el = el;
		this.drag = true;
		this.type = type;
		this.parent = this.el.getParent();
		var split = this.parent.id.split('_');
		this.projectId = split[1]
		this.submissionId = split[2];
		this.status = split[3];
		this.comment = null;

		if(this.status == 0) return false;
		
		if($$('.submissionImage').length > 0){
			this.image = $$('.submissionImage')[0].getElement('span.image').getStyle('background-image').replace('url(', '').replace(')', '').replace('submissionlarge', 'submissionsmall');
		} else {
			this.image = this.el.getParent().getParent().getParent().getElement('img').src.replace('gridview', 'submissionsmall');
		}
		
		if(this.status == 1 && this.type == 'crowd'){
			this.el.setStyle('cursor', 'default');
		} else if(this.status == 2 && this.type == 'buyer'){
			this.el.setStyle('cursor', 'default');
		} else if(this.status == 3) {
			this.el.setStyle('cursor', 'default');
		} else {
			this.el.addEvent('click', this.start.bindWithEvent(this));
		}
		
		if(this.type == 'buyer' && $('newComment') && $('newComment').hasClass('buyer')){
			$('newComment').addEvent('click', this.start.bindWithEvent(this));
		}
	},
	
	updateOverlay: function(){
		this.overlay.setStyles({
			'height' : window.getScrollHeight()
		});
	},

	start: function(e){
		new Event(e).stop();
		this.overlay = new Element('div', {
			'styles' : {
				'background' : '#000',
				'opacity' : .75,
				'position' : 'absolute',
				'top' : 0,
				'left' : 0,
				'width' : '100%',
				'height' : window.getScrollHeight()
			}
		});
		
		if(this.drag && this.type == 'buyer') this.overlay.setStyle('opacity', .001);
		
		this.updateOverlay.periodical(20, this);
		
		if(this.type != 'buyer'){
			this.overlay.addEvent('click', this.close.bindWithEvent(this));
		}
		
		this.masterWrapper = new Element('div');
		
		this.wrapper = new Element('div',{
			'styles' : {
				'background' : '#000',
				'opacity' : .5,
				'padding' : 5
			}
		});
		
		this.rating = new Element('div', {
			'class' : this.type + 'Stars'
		});
		
		if(this.status != 3){
			if(this.status == 1 && this.type == 'buyer' || this.status == 2 && this.type == 'crowd'){
				
				var column = new Element('div', {
					'class' : 'clearfix'
				}).injectInside(this.rating);
				var ul = new Element('ul').injectInside(column);
				ul.setStyle('cursor', 'pointer');
				if(this.type == 'crowd'){
					var p = new Element('p').setText('Your score only counts once, but you can change it as often as you like.');
					p.injectInside(column);
				}
				for(var i=1; i < 6; i++){
					var _self = this;
					var currentStar = new Element('li').injectInside(ul).setText(i);
					currentStar.addEvent('mouseover', function(){
						//_self.change(this.getText().toInt());
					});
					currentStar.addEvent('click', function(){
						if(_self.type == 'crowd'){
							_self.change(this.getText().toInt());
							_self.save(this.getText().toInt());
						} else {
							_self.change(this.getText().toInt());
							_self.set(this.getText().toInt());
						}
					})
				}
				
				ul.addEvent('mouseleave', function(){
					if(_self.type == 'buyer' && $('scoreValue').value == ''){
						_self.change(_self.el.getText().toInt());
					}
				});
				
				new Element('h3').setText('Score:').injectTop(column);
				if(this.type == 'buyer'){
					new Element('h3').setText('Comment:').injectInside(column);
					this.comment = new Element('textarea').injectInside(column);
					this.comment.addEvent('click', function(){
						this.focus();
					});
					new Element('a', {
						'class' : 'cancel'
					}).setText('Cancel').addEvent('click', this.close.bindWithEvent(this)).injectInside(column);
				
					new Element('a', {
						'class' : 'submit'
					}).setText('Submit').addEvent('click', function(){
						_self.save($('scoreValue').value);
					}).injectInside(column);
				
				}

				new Element('img', {
					'src' : this.image,
					'styles' : {
						'width' : 75,
						'height' : 75
					}
				}).injectTop(this.rating);

			} else {
				this.message = new Element('div', {
					'class' : 'message'
				});
				this.message.setHTML('Sorry, you must be <a href="/login">signed in</a> to score this entry.');
				this.message.injectInside(this.rating);
				
			}
			
			this.overlay.injectInside(document.body);
			this.wrapper.injectInside(this.masterWrapper);
			this.rating.injectInside(this.masterWrapper);
			this.masterWrapper.injectInside(document.body);
			if(this.drag && this.type == 'buyer') {
				this.dragHandle = new Element('div', {
					'id' : 'dragHandle',
					'styles' : {
						'text-align' : 'center',
						'padding' : 3,
						'font-weight' : 'bold',
						'width' : 40,
						'height' : 20,
						'background' : '#efefef',
						'color' : '#666',
						'position' : 'absolute',
						'top' : 0,
						'margin' : '0 0 0 176px',
						'cursor' : 'move'
					}
				}).injectInside(column);
				this.dragHandle.setText('drag');
				this.masterWrapper.makeDraggable({
					'handle' : $('dragHandle')
				});
				//this.rating.setStyle('cursor', 'move');
			}
			
			if(this.type == 'buyer'){
				this.width = 425;
				this.height = 360;
			} else {
				this.width = 325;
				this.height = 95;
			}
			
			this.left = (window.getWidth() - this.width) / 2;
			this.top =  ((window.getHeight() - this.height) / 2) + window.getScrollTop();

			this.wrapper.setStyles({
				'visibility' : 'visible',
				'width' : this.width,
				'height' : this.height
			});
			
			this.masterWrapper.setStyles({
				'position' : 'absolute',
				'top' : this.top - 5,
				'left' : this.left - 5
			});
			
			this.rating.setStyles({
				'visibility' : 'visible',
				'position' : 'absolute',
				'top' : 5,
				'left' : 5,
				'width' : this.width,
				'height' : this.height
			});

			if(this.el.getText().toInt() > 0 && this.type == 'buyer'){
				this.change(this.el.getText().toInt());
			}
			
			this.hiddenValue = new Element('input', {
				'type' : 'hidden',
				'id' : 'scoreValue'
			});
			this.hiddenValue.injectInside(this.rating);
		}
	}, 
	
	change: function(amount){
		if(this.type == 'buyer'){
			switch(amount){
				case 1: this.rating.getFirst().getNext().getFirst().getNext().setStyle('background-position', '0 -71px'); break;
				case 2: this.rating.getFirst().getNext().getFirst().getNext().setStyle('background-position', '0 -53px'); break;
				case 3: this.rating.getFirst().getNext().getFirst().getNext().setStyle('background-position', '0 -35px'); break;
				case 4: this.rating.getFirst().getNext().getFirst().getNext().setStyle('background-position', '0 -17px'); break;
				case 5: this.rating.getFirst().getNext().getFirst().getNext().setStyle('background-position', '0 1px'); break;
			}
		} else if(this.type == 'crowd'){
			switch(amount){
				case 1: this.rating.getFirst().getNext().getFirst().getNext().setStyle('background-position', '0 -180px'); break;
				case 2: this.rating.getFirst().getNext().getFirst().getNext().setStyle('background-position', '0 -162px'); break;
				case 3: this.rating.getFirst().getNext().getFirst().getNext().setStyle('background-position', '0 -144px'); break;
				case 4: this.rating.getFirst().getNext().getFirst().getNext().setStyle('background-position', '0 -126px'); break;
				case 5: this.rating.getFirst().getNext().getFirst().getNext().setStyle('background-position', '0 -108px'); break;
			}
		}
	},
	
	save: function(amount){
		var comment = '';
		if(this.comment != null && this.type == 'buyer'){
			comment = this.comment.value;
		}
		
		var _self = this;
		this.ajaxSubmit = new Ajax('/submission/rate', {
			'method' : 'post',
			'data' : {
				'type' : this.type,
				'amount' : amount,
				'submission_id' : this.submissionId,
				'project_id' : this.projectId,
				'comment' : comment
			},
			evalResponse : true,
			onSuccess: function(response){
				_self.rating.removeClass('loader');
				if(response == 'false'){
					_self.error('Opps, sorry there was a error. Please try again.');
				} else if(response == '"cannotvote"') {
					_self.error('Sorry, you can\'t vote in projects you\'re participating in.');
				} else {
					if(response != 'true'){
						_self.update(response.trim());
					}
					_self.success();
				}
			},
			onFailure: function(){
				_self.error('Opps, sorry there was a error. Please try again.');
			}
		}).request();
		
		this.rating.empty();
		this.rating.addClass('loader');
	},
	
	set: function(amount){
		$('scoreValue').value = amount;
	},
	
	update: function(amount){
		this.el.setHTML('<span>' + amount + '</span>');
		this.el.className = this.type + "Rating " + this.type + "_" + amount;
	},
	
	error: function(errorMessage){
		this.message = new Element('div', {
			'class' : 'message'
		});
		
		if(this.rating.getFirst()){
			var img = this.rating.getFirst();
			img.remove();
		}
		
		this.message.setHTML(errorMessage);
		this.message.injectInside(this.rating);
		
		this.close.delay(2000, this);
	},
	
	success: function(){
			this.message = new Element('div', {
				'class' : 'message'
			});
			if(this.type == 'crowd'){
				this.message.setHTML('Thanks! Your score has been counted.');
			} else {
				this.message.setHTML('Thanks!');
			}

			this.message.injectInside(this.rating);
			if(this.rating.getFirst()) var img = this.rating.getFirst();
			if(this.rating.getFirst().getNext()) var div = this.rating.getFirst().getNext();

			if(this.type == 'buyer' && this.parent.hasClass('submission') && this.comment.value.trim() != ''){
				location.href = location.href;
			}
			
			this.close.delay(2000, this);	
	},
	
	close: function(){
		if(this.wrapper) this.wrapper.remove();
		if(this.overlay) this.overlay.remove();
		if(this.rating) this.rating.remove();
		if(this.message) this.message.remove();
	}
	
});

var CS_HeartThis = new Class({
	
	initialize: function(el){
		this.delay = 400;
		this.el = el;
		this.listLimit = 5;
		this.nubbin = $('heart-nubbin');
		this.monitor = $('heart-monitor');
		this.container = $$('.submissionHearts')[0];
		this.action = this.monitor.getElement('a');
		this.actionText = this.action.getElement('span');

		this.id = {
			submission: el.id.split('_')[2],
			project: el.id.split('_')[1]
		}
		
		this.el.addEvent('mouseover', this.showNubbin.bindWithEvent(this));
		this.el.addEvent('mouseleave', this.hideNubbin.bindWithEvent(this));
		this.el.addEvent('click', this.toggleMonitor.bindWithEvent(this));
		this.nubbin.addEvent('mouseover', this.showNubbin.bindWithEvent(this));
		this.nubbin.addEvent('mouseleave', this.hideNubbin.bindWithEvent(this));
		this.nubbin.addEvent('click', this.toggleMonitor.bindWithEvent(this));
		
		if(!this.action.hasClass('must-login')) this.action.addEvent('click', this.submitHeart.bindWithEvent(this));

		if(this.monitor.getElement('.message')) this.monitor.getElement('.message').addEvent('click', this.submitHeart.bindWithEvent(this));

		this.attachLinkEvents();
		this.hideLoading();
	},
	
	showNubbin: function(e){
		this.nubbin.setStyle('display', 'block');
	},
	
	hideNubbin: function(e){
		if(this.nubbin.hasClass('open')) this.nubbin.setStyle('display', 'none');
	},
	
	toggleMonitor: function(e){
		if(this.nubbin.hasClass('close')){
			this.hideMonitor();
		} else {
			this.showMonitor();
		}
	},
	
	showMonitor: function(e){
		this.monitor.setStyle('display', 'block');
		this.container.addClass('bar');
		this.nubbin.addClass('close');
		this.nubbin.removeClass('open');
		var finalHeight = this.container.getCoordinates().height;
		this.container.setStyles({
			height: 0,
			overflow: 'hidden'
		});
		new Fx.Style(this.container, 'height').start(0, finalHeight);
	},
	
	hideMonitor: function(e){
		var startHeight = this.container.getCoordinates().height;
		new Fx.Style(this.container, 'height', {
			onComplete: (function(){
				this.container.setStyles({
					height: 'auto',
					overflow: 'hidden'
				});
				this.container.removeClass('bar');
				this.nubbin.addClass('open');
				this.nubbin.removeClass('close');
				this.monitor.setStyle('display', 'none');
			}).bind(this)
		}).start(startHeight, 0);
	},
	
	requestList: function(e){
		new Event(e).stop();
		this.request = new Ajax(e.target.href, {
			update: this.monitor.getElement('.results'),
			onComplete: (function(){
				this.attachLinkEvents();
				this.hideLoading();
			}).bind(this),
			onRequest: this.showLoading.bind(this)
		}).request();
	},
	
	submitHeart: function(e){
		new Event(e).stop();
		if(this.started) return false;
		this.rateRequest = new Ajax('/submission/rate', {
			method: 'post',
			data: {
				type: 'heart',
				submission_id: this.id.submission,
				project_id: this.id.project
			},
			onRequest: (function(){
				this.started = true;
			}).bind(this),
			onComplete: (function(response){
				this.started = false;
			}).bind(this)
		}).request();
		if(this.getStatus() == 0){
			this.setValue(this.getValue() + 1);
			this.setStatus(1);
			this.setMessage.delay(this.delay, this, ['Have you had a change of heart?']);
			this.addUser.delay(this.delay, this);
		}else if(this.getStatus() == 1){
			this.setValue(this.getValue() - 1);
			this.setStatus(0);
			this.setMessage.delay(this.delay, this, ['Would you like to heart this?']);
			this.removeUser.delay(this.delay, this);
		}
	},
	
	removeUser: function()
	{
		var lis = this.monitor.getElement('.results').getElements('.user');
		for(var i=0; i < lis.length; i++){
			if(lis[i].getProperty('id').split('heartuser_')[1].toInt() == this.getCurrentUserId()){
				new Fx.Style(lis[i], 'opacity', {
					onComplete: function(){
						this.element.remove();
					}
				}).start(1, 0);
			}
		}
		if(lis.length == 1){
			this.monitor.getElement('.results').getElement('ul').remove();
			this.monitor.getElement('.results').getElement('.loading').remove();

			var message = new Element('div').addClass('message').setText('Be the first to heart this.').injectInside(this.monitor.getElement('.results'));
			message.addEvent('click', this.submitHeart.bindWithEvent(this));
		}
	},
	
	addUser: function()
	{
		if(this.monitor.getElement('.results').getElement('.message')){
			this.monitor.getElement('.results').getElement('.message').remove();
			var loading = new Element('div').addClass('loading').setText('Loading...').injectInside(this.monitor.getElement('.results'));
			var ul = new Element('ul').injectInside(this.monitor.getElement('.results'));
			var li = new Element('li').addClass('header').setText('These people hearted this entry.').injectInside(ul);
			this.hideLoading();
		}
		
		var header = this.monitor.getElement('.results').getElement('.header');
		var li = this.monitor.getElement('.currentUser').getElement('li.user').clone();
		
		li.injectAfter(header);
		
		this.addUserHover();
		
		li.setStyles({
			background: '#fffbbb'
		});
		
		new Fx.Style(li, 'background-color', {
			duration: 2000
		}).start('#fffbbb', '#ffffff');
	},
	
	showLoading: function()
	{
		this.monitor.getElement('.results').getElement('.loading').setStyles({
			opacity: .5,
			display: 'block'
		});
	},
	
	hideLoading: function()
	{
		if(this.monitor.getElement('.results').getElement('.loading'))
		this.monitor.getElement('.results').getElement('.loading').setStyles({
			display: 'none'
		});
	},
	
	addUserHover: function()
	{
		if(!this.monitor.getElements('.user_hover')) return false;
		var lis = this.monitor.getElements('.user_hover');
		
		for(var i=0; i < lis.length; i++){
			var split =  $$('.user_hover')[i].id.replace('user_hover_', '');
			split = split.split('_');
			id = split[0];
			delete split[0];
			name = split.join('_');
			name = name.substring(1, name.length);
			new UserHover(lis[i],
				{
					'id' : id,
					'name' : name
				}, 
				{
					'x' : lis[i].getCoordinates().width + 3,
					'y' : -15
				}
			);
		}
	},
	
	setMessage: function(message)
	{
		this.actionText.setText(message);
	},
	
	getValue: function()
	{
		return this.el.getText().toInt();
	},
	
	setValue: function(value)
	{
		this.el.setHTML('<span>' + value + '</span>');
	},
	
	getCurrentUserId: function()
	{
		return this.monitor.getElement('.currentUser').getElement('li.user').getProperty('id').split('_')[1].toInt();
	},
	
	getStatus: function()
	{
		return this.monitor.getElement('.currentUser').getElement('li.user').getProperty('id').split('_')[2].toInt();
	},
	
	setStatus: function(status)
	{
		this.monitor.getElement('.currentUser').getElement('li.user').setProperty('id', 'heartuser_' + this.getCurrentUserId() + '_' + status);
	},
	
	attachLinkEvents: function(e){
		this.nextLink = $('heart-monitor').getElement('.next');
		this.previousLink = $('heart-monitor').getElement('.previous');
		
		if(this.nextLink) this.nextLink.addEvent('click', this.requestList.bindWithEvent(this));
		if(this.previousLink) this.previousLink.addEvent('click', this.requestList.bindWithEvent(this));
		this.addUserHover();
	}
	
});

var CS_Slider = new Class({

	initialize: function(container, submissionId, projectId, offset, type){
		
		this.direction = null;
		this.submissionId = submissionId;
		this.projectId = projectId;
		this.amount = 9;
		this.container = container;
		this.offset = offset;
		
		if(type == undefined){
			this.type = 'submission';
		} else {
			this.type = type;
		}
		
		this.loading = new Element('div', {
			'class' : 'loading',
			'styles' : {
				'cursor' : 'progress',
				'opacity' : .1
			}
		});
		
		this.loadThumbs();
		this.createControls();
		this.loading.injectInside(this.container);
	},
	
	loadThumbs: function(){
		
		_self = this;
		
		var ul = new Element('ul', {
			'class' : 'thumbs', 
			'styles' : {
				'visibility' : 'hidden'
			}	
		});
		
		if($$('li.next')[0]){
			ul.injectBefore($$('li.next')[0]);
		} else {
			ul.injectInside(this.container);
		}

		var ajax = new Ajax('/submission/slider/' +this.projectId + '/' + this.submissionId + '/' + this.offset + '/' + this.type, {
			'method' : 'post',
			'update' : $$('ul.thumbs')[$$('ul.thumbs').length - 1],
			onRequest: function(){
				_self.loading.setStyle('display', 'block');
				$('wrapper').setStyles('cursor', 'progress');
			},
			onComplete : function(){
				$('wrapper').setStyles('cursor', 'progress');
				_self.screenThumbs();
				_self.loading.setStyle('display', 'none');
				
				var show = function(){
					$$('ul.thumbs')[$$('ul.thumbs').length - 1].setStyle('visibility', 'visible');
				}
				
				show.delay(100);
				
				var slide = new Fx.Style(_self.container.getChildren()[1].getFirst(), 'left', {
					onComplete: function(){
						_self.container.getChildren()[1].remove();
						_self.fadeControls.delay(100, _self);
					}
				});
				var slide2 = new Fx.Style(_self.container.getChildren()[2].getFirst(), 'left');
				
				switch(_self.direction){
					
					case 'next':
						slide.start(0 , -(75 * _self.amount));
						slide2.start((75 * _self.amount), 0);
					break;
					
					case 'previous':
						slide.start(0, +(75 * _self.amount));
						slide2.start(-(75 * _self.amount), 0);
					break;
					
				}
				
				_self.fadeControls.delay(100, _self);

			}
		}).request();

	},
	
	fadeControls: function(){
		
		if($$('a.thumb')[0].hasClass('first')){
			this.previousControl.setOpacity('.3');
			this.previousControl.setStyle('cursor', 'default');
		} else {
			this.previousControl.setOpacity('1');
			this.previousControl.setStyle('cursor', 'pointer');
		}
		
		if($$('a.thumb')[$$('a.thumb').length - 1].hasClass('last')){
			this.nextControl.setOpacity('.3');
			this.nextControl.setStyle('cursor', 'default');
		} else {
			this.nextControl.setOpacity('1');
			this.nextControl.setStyle('cursor', 'pointer');
		}
	},
	
	createControls: function(){
		
		if(!this.nextControl){
			_self = this;
			this.nextControl = new Element('li', {
				'class' : 'next'
			});
			
			this.nextControl.addEvent('click', function(){
				if(!$$('a.thumb')[$$('a.thumb').length - 1].hasClass('last')){
					if($$('ul.thumbs')[0].getLast().getFirst().getLast().getFirst().tagName != 'SPAN' ||
						$$('ul.thumbs')[0].getLast().getFirst().getLast().getFirst().tagName == 'SPAN' &&
						$$('ul.thumbs')[0].getLast().getFirst().getFirst().getFirst().tagName == 'SPAN'){
						_self.direction = 'next';
						if(_self.offset != ''){
							_self.offset = _self.offset.toInt() + _self.amount.toInt();
						} else {
							_self.offset = + _self.amount.toInt();	
						}
						_self.loadThumbs();
					}
				}
			
			});
			this.nextControl.injectInside(this.container);
		}
		if(!this.previousControl){
			this.previousControl = new Element('li', {
				'class' : 'previous'
			});
			
			this.previousControl.addEvent('click', function(){
				if(!$$('a.thumb')[0].hasClass('first')){
					if($$('ul.thumbs')[0].getLast().getFirst().getFirst().getFirst().tagName != 'SPAN' ||
						$$('ul.thumbs')[0].getLast().getFirst().getLast().getFirst().tagName == 'SPAN' &&
						$$('ul.thumbs')[0].getLast().getFirst().getFirst().getFirst().tagName == 'SPAN'){
						_self.direction = 'previous';
						if(_self.offset != ''){
							_self.offset = _self.offset.toInt() - _self.amount.toInt();
						} else {
							_self.offset = - _self.amount.toInt();	
						}
						_self.loadThumbs();
					}
				}
			
			});
			this.previousControl.injectTop(this.container);
		}
		
	},
	
	screenThumbs: function(){
		for(var i=0; i < $$('a.thumb').length; i++){
			if(!$$('a.thumb')[i].hasClass('active')){
				$$('a.thumb')[i].setOpacity('.5');
				$$('a.thumb')[i].addEvents({
					mouseover: function(){
						this.setOpacity('1');
					},
					mouseleave: function(){
						this.setOpacity('.5');
					}
				});
			}
		}
	}

});

var CS_Slideshow = new Class({
	
	initialize : function(link){
	
		link.addEvent('click', function(e){
			new Event(e).stop();
			$('wrapper').setStyle('display', 'none');
			
			 this.flash = new Element('div', {
				'styles' : {
					'position' : 'absolute',
					'top' : 0,
					'left' : 0,
					'width' : '100%',
					'height' : '100%'
				}
			}).setHTML('<embed FlashVars="dataUri=' + this.href + '" src="/extension/crowdspring/design/crowdspring/swf/slideshow.swf" quality="high" wmode="transparent" width="100%" height="100%" align="middle" />');
			this.flash.injectInside(document.body);
		});
		
	},
	
	close : function(){
		
		$('wrapper').setStyle('display', 'block');
		this.flash.remove();
		
	}
	
});

var CS_Contacts = new Class({
	
	initialize: function(){
		
	},
	
	import_contacts: function(link){
		var _self = this;
		link.addEvent('click', function(e){
			new Event(e).stop();
			MOOdalBox.setOnComplete(function(){
				$('checkAll').addEvent('click', _self.checkAll.bindWithEvent(this));
				$('save_cs_users').addEvent('click', _self.saveCsUsers.bindWithEvent(this));
				$('hide_internal').addEvent('click', function(e){
					new Event(e).stop();
					MOOdalBox.close();
				});
			});
			
			MOOdalBox.open(
				e.target.href,
				null,
				'650 450'
			);
		});
	},
	
	saveCsUsers: function(event)
	{
		new Event(event).stop();
		var string = '';
		var usernames = $('internal_results').username;
		if(usernames.length){
			for(var i=0; i < usernames.length; i++){
				if(usernames[i].checked == true){
					string += usernames[i].value + '; ';
				}
			}
		} else {
			if(usernames.checked == true){
				string += usernames.value + '; ';
			}
		}
		current_string = $('recipients').value;
		if(current_string.substr(current_string.length - 1, current_string.length) != ';'){
			current_string += '; ';
		}
		$('recipients').value = $('recipients').value = current_string + string;
		MOOdalBox.close();
	},
	
	checkAll: function(event)
	{
		var inputs = document.getElementsByTagName('INPUT');
		for(var i=0; i < inputs.length; i++){
			if(inputs[i].type == 'checkbox' && inputs[i].name == event.target.value){
				if(event.target.checked){
					inputs[i].checked = true;
				} else {
					inputs[i].checked = false;
				}
			}
		}
	},
	
	autoComplete: function(input, form){
		var _self = this;
		
		var userBar = new Element('div', {
			'id' : 'autoComplete'
		});
		
		var tempInput = new Element('input', {
			'id' : 'tempInput',
			'type' : 'text'
		}).injectBefore(form);

		userBar.injectBefore(input);
		
		input.setStyles({
			'position' : 'absolute',
			'left' : -9999,
			'width' : 1
			}); 
		tempInput.addEvent('keyup', function(e){
			_self.listController(e, userBar, input);
		});
		
		tempInput.addEvent('blur', function(e){
			if(tempInput.value != ''){
				_self.findContact(tempInput.value, userBar, input, true);
			}
		});
		
		tempInput.setStyles({
			'width' : userBar.getCoordinates().width - 8
		});
		
		var stopSubmit = function(e){
			new Event(e).stop();
		};
		
		if(input.value != ''){
			var initInput = input.value.split(';');
			for(var i=0; i < initInput.length; i++){
				this.findContact(initInput[i], userBar, input, false);
			}
		}
		
		var dropDownList = new Element('ul', {
			'id' : 'dropDownContactList',
			'styles' : {
				'width' : userBar.getCoordinates().width - 4,
				'top' : 151,
				'left' : 102,
				'display' : 'none'
			}
		}).setHTML('<li><span>Type the name of the person you would like to message.</span></li>');
		
		var scroller = new Scroller(dropDownList, {'area': 100, 'velocity': .1});

		dropDownList.addEvent('mouseleave', function(){
			this.setStyle('display', 'none');
		});

		dropDownList.addEvent('mouseover', scroller.start.bind(scroller));
		dropDownList.addEvent('mouseout', scroller.stop.bind(scroller));
		
		dropDownList.injectAfter(userBar);
		
		dropDownList.getNext().setStyles({
			'height' : 10
		});
		
		tempInput.addEvent('focus', function(){
			if($('dropDownContactList')) $('dropDownContactList').setStyle('display', 'block');
			if(this.value == ''){
				$('dropDownContactList').setHTML('<li><span>Type the name of the person you would like to message and press enter/return.</span></li>');
			} else {
				$('dropDownContactList').setStyle('display', 'none');
				$('dropDownContactList').setHTML('<li><span>Sorry no matches found.</span></li>');
			}
		});
		
	},
	
	listController: function(e, userBar, input){
		var e = new Event(e);

		switch(e.key){
			
			case 'enter':
				if($('dropDownContactList')){
					for(var i=0; i < $('dropDownContactList').getChildren().length; i++){
						if($('dropDownContactList').getChildren()[i].hasClass('active')){
							this.buildContactCard($('dropDownContactList').getChildren()[i].getText(), userBar, input);
							this.saveContactToList($('dropDownContactList').getChildren()[i].getText(), userBar, input);
							break;
						}
					}
				}
				if(!input.value.contains($('tempInput').value)){
					this.findContact($('tempInput').value, userBar, input, true);
				} else {
					$('tempInput').value = '';
				}
			break;
			case 'down':
				if($('dropDownContactList')){
					for(var i=0; i < $('dropDownContactList').getChildren().length; i++){
						if($('dropDownContactList').getChildren()[i].hasClass('active')){
							break;
						}
					}
					if($('dropDownContactList').getChildren()[(i + 1)]){
						$('dropDownContactList').getChildren()[(i + 1)].addClass('active');
						$('dropDownContactList').getChildren()[i].removeClass('active');
					}
				}
			break;
			case 'up':
				if($('dropDownContactList')){
					for(var i=0; i < $('dropDownContactList').getChildren().length; i++){
						if($('dropDownContactList').getChildren()[i].hasClass('active')){
							break;
						}
					}
					if($('dropDownContactList').getChildren()[(i - 1)]){
						$('dropDownContactList').getChildren()[(i - 1)].addClass('active');
						if($('dropDownContactList').getChildren()[i])
							$('dropDownContactList').getChildren()[i].removeClass('active');
					}
				}
			case 'left':
				if($('tempInput').value == ''){
					for(var i=0; i < $$('.contactCard').length; i++){
						if($$('.contactCard')[i].hasClass('active')){
							if(i == 0){
								$$('.contactCard')[i].removeClass('active');	
							}
							break;
						}
					}
					if($$('.contactCard')[i - 1]){
						$$('.contactCard')[i - 1].addClass('active');
						if($$('.contactCard')[i]) {
							$$('.contactCard')[i].removeClass('active');
						}
					}
				}
			break;
			case 'right':
				if($('tempInput').value == ''){
					for(var i=0; i < $$('.contactCard').length; i++){
						if($$('.contactCard')[i].hasClass('active')){
							if(i == $$('.contactCard').length - 1){
								$$('.contactCard')[i].removeClass('active');
							}
							break;
						}
					}
					if($$('.contactCard')[i + 1]){
						$$('.contactCard')[i + 1].addClass('active');
						if($$('.contactCard')[i]) $$('.contactCard')[i].removeClass('active');
					}
				}
			break;
			case 'backspace':
				for(var i=0; i < $$('.contactCard').length; i++){
					if($$('.contactCard')[i].hasClass('active')){
						if(input.value.contains(';')){
							input.value = input.value.replace($$('.contactCard')[i].getText() + ';', '');
						} else {
							input.value = input.value.replace($$('.contactCard')[i].getText(), '');
						}
						$$('.contactCard')[i].remove();
					}
				}

				if($('dropDownContactList') && $('dropDownContactList').getStyle('display') == 'block'){
					this.searchContacts.delay(5, this, [e.target.value, userBar, input]);
				}
			break;
			default:
			this.searchContacts.delay(5, this, [e.target.value, userBar, input]);
			
		}
	},
	
	searchContacts : function(q, parent, list){
		var _self = this; 
		if(this.search) this.search.cancel();
		this.search = new Ajax('/myspring/contacts/search', {
			'method' : 'post',
			'data' : {
				'q' : q
			},
			onComplete: function(response){
				json = new Json.evaluate(response);
				_self.buildContactDropDown(json, parent, list);		
			}, 
			onRequest: function(){
				$('dropDownContactList').setHTML('<li><span>Searching...</span></li>');
			}
		});
		
		var req = function(){
			_self.search.request();
		}
		
		req.delay(300);
		
	},
	
	findContact : function(q, parent, list, cancel){
		return false;
		var _self = this;
		if(this.search && cancel) this.search.cancel();
		this.search = new Ajax('/myspring/contacts/find', {
			'method' : 'post',
			'data' : {
				'q' : q
			},
			onComplete: function(response){
				json = new Json.evaluate(response);
				if(json.result == 'not found'){
					if($('tempInput').value.contains(';')){
						$('tempInput').value = $('tempInput').value.replace(q + ';', '');
					} else {
						$('tempInput').value = $('tempInput').value.replace(q, '');
					}
				} else {
					if(!list.value.contains(json.username)){
						_self.saveContactToList(json.username, parent, list);
					} else {
						$('tempInput').value = '';
					}
						_self.buildContactCard(json.username, parent, list);
				}
				if($('dropDownContactList')) $('dropDownContactList').setStyle('display', 'none');
			},
			onRequest: function(){
				if($('dropDownContactList')) {
					$('dropDownContactList').setStyle('display', 'block');
					$('dropDownContactList').setHTML('<li><span>Searching...</span></li>');
				}
			}
		}).request();
	},
	
	buildContactDropDown: function(json, parent, list){
		var _self = this;
		
		if($('dropDownContactList') && $('dropDownContactList').getStyle('display') == 'none') {
			$('dropDownContactList').setStyle('display', 'block');
		}
		
		$('dropDownContactList').empty();
		
		var listItem = new Element('li');
		
		if(json.contacts != null){
			for(var i=0; i < json.contacts.length; i++){
				tempLi = listItem.clone().injectInside($('dropDownContactList')).setHTML('<a href="#">' + json.contacts[i].name + '</a>');
				if(i == 0){
					tempLi.addClass('active');
				}
				tempLi.addEvent('click', function(e){
					new Event(e).stop();
					_self.buildContactCard(this.getText(), parent, list);
					_self.saveContactToList(this.getText(), parent, list);
				});
				tempLi.addEvent('mouseover', function(e){
					var lis = $('dropDownContactList').getElementsByTagName('LI');
					for(var i=0; i < lis.length; i++){
						lis[i].removeClass('active');
					}
				});
			}
			
		} else {
			$('dropDownContactList').setStyle('display', 'none');
			listItem.clone().injectInside($('dropDownContactList')).setHTML('<li><span>Sorry no matches found.</span></li>');
		}
	
	}, 
	
	buildContactCard: function(contact, parent, list, ignore){

			var card = new Element('div', {
				'class' : 'contactCard'
			}).setText(contact);
			
			var remove = new Element('div', {
				'class' : 'remove'
			});
			
			remove.addEvent('click', function(){
				if(list.value.contains(';')){
					list.value = list.value.replace(this.getParent().getText() + ';', '');
				} else {
					list.value = list.value.replace(this.getParent().getText(), '');
				}
				$('tempInput').setStyle('width', $('tempInput').getCoordinates().width + this.getParent().getCoordinates().width - 5);
				this.getParent().remove();
			});
			
			remove.injectInside(card);
			card.injectTop(parent);
			
			var width = 0;
			for(var i=0; i < $$('.contactCard').length; i++){
				width += $$('.contactCard')[i].getStyle('width').toInt();
			}
			
			$('tempInput').setStyle('width', parent.getStyle('width').toInt() - (width + (36 * $$('.contactCard').length)));
			$('tempInput').focus();
		
	},
	
	saveContactToList: function(contact, parent, list){
		$('tempInput').value = '';
		if(!list.value.contains(contact)){
			if(list.value == ''){
				list.value = list.value + contact;
			} else {
				list.value = list.value + ';' + contact;
			}
		}
	}
	
});

var ResizingTextArea = new Class(  
    {  
        iRows: 1,  
        initialize: function(element, options)  
        {  
            this.element = $(element.id);  
            this.element.setStyle('overflow','auto');  
            this.element.setStyle('overflow-x','auto');  
            this.element.setProperty('wrap','vitual');  
            this.iRows = this.getRows();  
            this.opt = Object.extend(  
                {  
                    resizeStep: 1  
                },  
                options || {}  
            );  
            this.resize(this); // Boot up just in case we used an onload  
            this.element.onclick = this.resize.bindAsEventListener(this);  
            this.element.onkeyup = this.resize.bindAsEventListener(this);  
        },  
        getRows: function()  
        {  
            return Math.max(this.element.getProperty('rows'), 10)  
        },  
        resize: function()  
        {  
            var lines = this.element.getValue().split('\n');  
            var newRows = lines.length + this.opt.resizeStep;  
            var oldRows = this.iRows;  
            var cols = this.element.getProperty('cols');  
            for (var i = 0; i < lines.length; i++)  
            {  
                var line = lines[i];  
                if (line.length >= cols) newRows += Math.floor(line.length / cols);   
            }  
            if (newRows > this.element.rows) {
				this.element.setProperty('rows', newRows);
				this.element.setStyles({
					'height' : 'auto'
				});
			}
            if (newRows < this.element.rows) this.element.setProperty('rows', Math.max(this.iRows, newRows));  
        }  
    }  
);

var UserHover = new Class({
	
	initialize: function(el, user, options) {
		
		this.options = options;
		
		this.el = el;
		this.user = user;

		this.el.addEvent('click', this.clickHandler.bindWithEvent(this));
		
	},
	
	clickHandler: function(event){
		
		var event = new Event(event).stop();
		
		this.build();
		
	},
	
	build: function(){
		
		for(var i=0; i < $$('.user_hover_container').length; i++){
			$$('.user_hover_container')[i].remove();
		}
		
		if(!this.container) {
			this.container = new Element('div', {
				'class' : 'user_hover_container',
				'styles' : {
					'position' : 'absolute',
					'top' : this.el.getCoordinates().top + this.options.y,
					'left' : this.el.getCoordinates().left + this.options.x
				}
			});
		} else {
			this.container.empty();
		}
		
		this.topDiv = new Element('div', {
			'class' : 'top'
		}).injectInside(this.container);
		
		this.linkList = new Element('ul').injectInside(this.container);

		var userText = (this.user.name.length > 24) ? this.user.name.substring(0, 24) + '...' : this.user.name;
		this.userName = new Element('li', {
			'class' : 'username'
		}).setHTML(userText);
		this.userName.injectInside(this.linkList);
		
		this.sendPmLink = new Element('li').setHTML('<a href="/privatemessage/create" rel="moodalbox">Send Private Message</a>');
		this.sendPmLink.injectInside(this.linkList);
		
		this.viewProfileLink = new Element('li').setHTML('<a href="/myspring/profile/' + this.user.name + '">View Profile</a>');
		this.viewProfileLink.injectInside(this.linkList);
		
		this.contactLink = new Element('li').setHTML('<a href="/crowdspringuser/contact_list/add/' + this.user.id + '">Add Contact</a>');
		this.contactLink.injectInside(this.linkList);
		
		this.closeButton = new Element('a', {
			'class' : 'closeButton'
		}).setText('close');
		this.closeButton.addEvent('click', this.close.bindWithEvent(this));
		this.closeButton.injectInside(this.container);
		
		this.bottomDiv = new Element('div', {
			'class' : 'bottom'
		}).injectInside(this.container);
		
		this.container.injectInside(document.body);
		this.sendPmLink.getFirst().addEvent('click', this.sendPmHandler.bindWithEvent(this));
		
		this.bottomDiv.setStyles({
			'height' : this.linkList.getCoordinates().height - 25
		});
		
	},
	
	close: function(event){

		var event = new Event(event).stop();
		this.container.remove();
		
	},
	
	sendPmHandler: function(event){
		
		var event = new Event(event).stop();
		this.close(event);
		
		var _self = this;

		MOOdalBox.setOnComplete(function(){
			
			$('createPrivateMessage').recipients.value = _self.user.name;
			$$('.cancel')[0].addEvent('click', function(e){
				new Event(e).stop();
				MOOdalBox.close();
			});
			$('createPrivateMessage').addEvent('submit', function(e){
				new Event(e).stop();
				this.send({
					onComplete: function(response){
					
						var json = new Json.evaluate(response);
						if(json.status == 'fail'){
							$('errorMessage').setText(json.message);
							$('createPrivateMessage').recipients.value = json.fields.recipients;
							$('createPrivateMessage').title.value = json.fields.title;
							$('createPrivateMessage').message.value = unescape(json.fields.message);
						} else {
							$('errorMessage').setText('');
							$('privateMessageFields').empty();
							$('privateMessageFields').setHTML('<strong class="success">Your message was sent successfully!</strong>');
							$('privateMessageFields').setStyles({
								'font-size': '2em',
								'text-align': 'center',
								'padding-top': 135,
								'width' : '100%'
							});
							
							var close = function(){
								MOOdalBox.close();
							}
							
							close.delay(1000);
						}
					}
				});
			});
		});
		
		MOOdalBox.open(
			event.target.href,
			null,
			'650 450'
		);
		
	}
	
});

var InviteUsers = new Class({
	initialize: function(activeLink){
		this.activeLink = activeLink;
		this.activeLink.addEvent('click', this.activate.bindWithEvent(this));
	},
	activate: function(event)
	{
		var _self = this;
		new Event(event).stop();
		MOOdalBox.setOnComplete(function(){
			_self.addActions();
		});
		MOOdalBox.dropClasses();
		MOOdalBox.addClass('invite_users');
		MOOdalBox.open(
			this.activeLink.href,
			null,
			'730 550'
		);
	},
	addActions: function()
	{
		if($('save_cs_users')) $('save_cs_users').addEvent('click', this.saveCsUsers.bindWithEvent(this));
		if($('save_external_users')) $('save_external_users').addEvent('click', this.saveExternalUsers.bindWithEvent(this));
		if($('show_find')) $('show_find').addEvent('click', this.showFind.bindWithEvent(this));
		if($('show_internal')) $('show_internal').addEvent('click', this.showInternal.bindWithEvent(this));
		if($('hide_internal')) $('hide_internal').addEvent('click', this.showMain.bindWithEvent(this));
		if($('hide_external')) $('hide_external').addEvent('click', this.showFind.bindWithEvent(this));
		if($('hide_find')) $('hide_find').addEvent('click', this.showMain.bindWithEvent(this));
		if($('email_service_import')) $('email_service_import').addEvent('submit', this.findContacts.bindWithEvent(this));
		for(var i=0; i < $$('.checkAll').length; i++){
			$$('.checkAll')[i].addEvent('click', this.checkAll.bindWithEvent(this));
		}
		$('redirect_uri').value = location.href;
	},
	showFind: function(event)
	{
		new Event(event).stop();
		$('main_screen').setStyle('display', 'none');
		$('external_screen').setStyle('display', 'none');
		$('internal_screen').setStyle('display', 'none');
		$('find_screen').setStyle('display', 'block');
	},
	showInternal: function(event)
	{
		new Event(event).stop();
		$('main_screen').setStyle('display', 'none');
		$('external_screen').setStyle('display', 'none');
		$('find_screen').setStyle('display', 'none');
		$('internal_screen').setStyle('display', 'block');
		var usernames = $('internal_results').username;
		for(var i=0; i < usernames.length; i++){
			usernames[i].checked = false;
		}
	},
	showMain: function(event)
	{
		new Event(event).stop();
		$('external_screen').setStyle('display', 'none');
		$('internal_screen').setStyle('display', 'none');
		$('find_screen').setStyle('display', 'none');
		$('main_screen').setStyle('display', 'block');
	},
	showFind: function(event)
	{
		new Event(event).stop();
		$('main_screen').setStyle('display', 'none');
		$('external_screen').setStyle('display', 'none');
		$('internal_screen').setStyle('display', 'none');
		$('find_screen').setStyle('display', 'block');
	},
	findContacts: function(event)
	{
		new Event(event).stop();
		event.target.send({
			'update': $('external_results'),
			onComplete: function(){
				$('main_screen').setStyle('display', 'none');
				$('find_screen').setStyle('display', 'none');
				$('internal_screen').setStyle('display', 'none');
				$('external_screen').setStyle('display', 'block');
			}
		});
	},
	checkAll: function(event)
	{
		var inputs = document.getElementsByTagName('INPUT');
		for(var i=0; i < inputs.length; i++){
			if(inputs[i].type == 'checkbox' && inputs[i].name == event.target.value){
				if(event.target.checked){
					inputs[i].checked = true;
				} else {
					inputs[i].checked = false;
				}
			}
		}
	},
	saveCsUsers: function(event)
	{
		new Event(event).stop();
		var string = '';
		var usernames = $('internal_results').username;
		if(usernames.length){
			for(var i=0; i < usernames.length; i++){
				if(usernames[i].checked == true){
					string += usernames[i].value + ', ';
				}
			}
		} else {
			if(usernames.checked == true){
				string += usernames.value + ', ';
			}
		}
		current_string = $('csUserTextarea').value;
		if(current_string.substr(current_string.length - 1, current_string.length) != ','){
			current_string += ', ';
		}
		$('csUserTextarea').value = $('csUserTextarea').value = current_string + string;
		this.showMain(event);
	},
	saveExternalUsers: function(event)
	{
		new Event(event).stop();
		var string = '';
		var emails = $('external_results').email;
		if(emails.length){
			for(var i=0; i < emails.length; i++){
				string += emails[i].value + ', ';
			}
		} else {
			string += emails.value + ', ';
		}
		$('externalTextarea').value = $('externalTextarea').value + string;
		this.showMain(event);
	}
});

var MultiFile = new Class({

	initialize: function(holder, options)
	{
		this.options = options;
		this.holder = holder;
		this.id = this.holder.getProperty('id');
		this.createElements();
	
		this.rebuildContainer();
		this.rebuildHtml();
		
	},
	
	add: function()
	{
		var filename = $(this.id + '-main').getFirst().value;
		
		$(this.id + '-main').getFirst().removeProperty('id');
		this.files.storage.push({
			filename: this.formatFilename($(this.id + '-main').getFirst().value),
			element: $(this.id + '-main').getFirst()
		});
		
		this.input.setProperties({type: 'file', name: 'files[]'}).addEvent('change', this.add.bindWithEvent(this)).clone().injectInside($(this.id + '-main'));
	
		this.rebuildHtml();
	},
	
	remove: function(e)
	{
		new Event(e).stop();
		
		var key = e.target.href.split('#_')[1];
		var id = e.target.id.split('remove_')[1];
	
		if(key) delete this.files.storage[key];
		if(id)	this.files.remove.push(id);
		
		this.rebuildHtml();
	},
	
	rebuildHtml: function()
	{
		if($(this.id + '-wrapper')) $(this.id + '-wrapper').remove();
		var wrapper = this.dl.clone().setProperty('id', this.id + '-wrapper').injectInside(this.holder);
		var list = this.dd.clone().setProperty('id', this.id + '-list').injectInside(wrapper);
		var storage = this.dd.clone().setProperty('id', this.id + '-storage').injectInside(wrapper);
		var remove = this.dd.clone().setProperty('id', this.id + '-remove').injectInside(wrapper);
		
		if(this.files && this.files.remove.length > 0){
			for(var i=0; i < this.files.remove.length; i++){
				var input = this.input.clone().setProperties({type: 'hidden', name: 'delete-files[]'}).injectInside(remove);
				input.value = this.files.remove[i];
			}
		}
		
		if(this.files && this.files.storage.length > 0){
			var ul = this.ul.clone().injectInside(list);
			for(var i=0; i < this.files.storage.length; i++){
				if(this.files.storage[i]){
					var a = this.a.clone().setText('remove').setProperty('href', '#_' + i).addEvent('click', this.remove.bindWithEvent(this)).injectInside(this.li.clone().setText(this.files.storage[i].filename).injectInside(ul));
					if(this.files.storage[i].id) a.setProperty('id', 'remove_' + this.files.storage[i].id);
					if(this.files.storage[i].element) this.files.storage[i].element.injectInside(storage);
				}
			}
		}
		
		var main = this.input.clone().setProperties({type: 'file', name: 'files[]'}).addEvent('change', this.add.bindWithEvent(this)).injectInside(this.dt.clone().setProperty('id', this.id + '-main').injectTop(wrapper));

	},
	
	rebuildContainer: function()
	{
		this.files = {
			'storage' : [],
			'remove' : []
		}

		if($(this.id + '-list')){
			var lis = $(this.id + '-list').getElements('li');
			for(var i=0; i < lis.length; i++){
				this.files.storage.push({
					filename: this.formatFilename(lis[i].getText()),
					id: lis[i].id.split('remove_')[1]
				})
			}
		}

	},
	
	formatFilename: function(filename)
	{
		if(this.options.strlen){
			if(filename.length > this.options.strlen - 3){
				return filename.substring(0, this.options.strlen / 2) + '...' + filename.substring(filename.length - this.options.strlen / 2);
			}
		}
		return filename;
	},
	
	createElements: function()
	{
		this.dl = new Element('dl');
		this.dt = new Element('dt');
		this.dd = new Element('dd');
		this.ul = new Element('ul');
		this.li = new Element('li');
		this.input = new Element('input');
		this.a = new Element('a');
	}
	
});

var ModifyAwards = new Class({
	
	initialize: function(holder)
	{
		this.holder = holder;
		this.id = this.holder.getProperty('id');
		this.createElements();
		
		this.rebuildContainer();
		this.rebuildHtml();
		
		this.postData;
		
		this.errors = {};

		this.holder.getParent().addEvent('submit', this.validate.bindWithEvent(this));
	},
	
	addAmount: function(e, type)
	{
		if(type == 'current'){
			var award = this.find(e.target.getProperty('name').split('[')[1].split(']')[0].toInt(), 'current');
			var price = (e.target.value == '' || !e.target.value.match('^[0-9]+$')) ? 0 : e.target.value.toInt();
			award.increase = price;
			$('awardCount_' + award.id).getElement('td.total').setText(' = $' + (award.amount + award.increase));
		} else if(type == 'added'){
			var award = this.find(e.target.getProperty('name').split('[')[1].split(']')[0].toInt(), 'added');
			var price = (e.target.value == '' || !e.target.value.match('^[0-9]+$')) ? 0 : e.target.value.toInt();
			award.amount = price;
		}
		this.awards.total = 0;
		for(var i=0; i < this.awards.current.length; i++){
			if((this.awards.current[i].increase != '')){
				this.awards.total = this.awards.total.toInt() + this.awards.current[i].increase.toInt();
			}	
		}
		for(var i=0; i < this.awards.added.length; i++){
			if((this.awards.added[i].amount != '')){
				this.awards.total = this.awards.total.toInt() + this.awards.added[i].amount.toInt();
			}
		}
		this.awards.fees.amount = Math.floor(this.awards.total * this.awards.fees.percent * .01);
		this.awards.total += this.awards.fees.amount;
		$(this.id + '-total').setText('$ ' + this.awards.total);
		$(this.id + '-percent').setText('$ ' + this.awards.fees.amount);
	},
	
	add: function(e)
	{
		new Event(e).stop();
		if(this.awards.added.length > 3) return false;
		this.awards.added.push({id: (this.awards.added[this.awards.added.length - 1].id + 1), amount: '', error: null});
		this.rebuildHtml();
	},
	
	destroy: function(e)
	{
		new Event(e).stop();
		var id = e.target.getProperty('href').split('#_')[1];
		var award = this.find(id, 'added');
		var newAdded = new Array();
		var key = this.awards.current.length + 1;
		for(var i=0; i < this.awards.added.length; i++){
			if(this.awards.added[i] != award){
				this.awards.added[i].id = key;
				newAdded.push(this.awards.added[i]);
				key++;
			}
		}
		this.awards.added = newAdded;
		this.rebuildHtml();
	},
	
	validate: function(e)
	{
		new Event(e).stop();
		var submit = e.target.send({
			onComplete: (function(response){
				var json = new Json.evaluate(response);
				if(json.status == 'error') this.error(json.response);
				if(json.status == 'ok' && json.response) this.confirm(json.response);
			}).bind(this)
		});
	},
	
	confirm: function(response)
	{
		this.postData = response;

		$(this.id).getParent().setStyle('display', 'none');
		if($(this.id + '-confirmation')) $(this.id + '-confirmation').remove();
		var div = this.div.clone().setProperty('id', this.id + '-confirmation').injectAfter($(this.id).getParent());
		this.h4.clone().setText('Please confirm your changes.').injectInside(div);
		var table = this.table.clone().injectInside(div);
		var tbody = new Element('tbody').injectInside(table);
		for(var i=0; i < this.awards.current.length; i++){
			if(this.awards.current[i].increase != ''){
				var tr = this.tr.clone().injectInside(tbody);
				this.td.clone().setText('Award ' + this.awards.current[i].num + ' increased').injectInside(tr);
				this.td.clone().setText('$' + this.awards.current[i].increase).injectInside(tr);
			}
		}
		for(var i=0; i < this.awards.added.length; i++){
			var tr = this.tr.clone().injectInside(tbody);
			this.td.clone().setText('Award ' + this.awards.added[i].id + ' added').injectInside(tr);
			this.td.clone().setText('$' + this.awards.added[i].amount).injectInside(tr);
		}
		var tr = this.tr.clone().injectInside(tbody);
		this.td.clone().setHTML('Project Fee <small>(' + this.awards.fees.percent + '%)</small>').injectInside(tr);
		this.td.clone().setText('$' + this.awards.fees.amount).injectInside(tr);
		var tr = this.tr.clone().addClass('totals').injectInside(tbody);
		this.td.clone().setText('Total').injectInside(tr);
		this.td.clone().setText('$' + this.awards.total).injectInside(tr);
		
		var payment_form = new Element('div').injectInside(this.id + '-confirmation');
		var html = '<form action="/award/adjust/2" method="post">';
		html += '<input type="hidden" name="key" value="' + this.postData + '" />';
		html += '<h4>Payment method</h4>';
		html += '<ul class="payment_method">';
		html += '<li><input type="radio" name="payment_method" value="direct" checked="checked" /><img src="/extension/crowdspring/design/crowdspring/images/project/creditcard_button.jpg" alt="Credit Card" /></li>';
		if(this.awards.total < 9999){
			html += '<li><input type="radio" name="payment_method" value="express" /><img src="/extension/crowdspring/design/crowdspring/images/project/paypal_button.jpg" alt="PayPal" /></li>';
		}
		html += '</ul>';
	 	html += '<div class="buttonBlock">';
		html += '<a class="goBack" href="#">Edit</a>';
		html += '<button class="submit">Continue</button>';
		html += '</div>';
		html += '</form>';
		payment_form.setHTML(html);
		
		payment_form.getElement('button.submit').addEvent('click', (function(){payment_form.getElement('form').submit()}).bind(this));
		payment_form.getElement('a.goBack').addEvent('click', this.goBack.bindWithEvent(this));
	},
	
	goBack: function(e)
	{
		new Event(e).stop();
		$(this.id).getParent().setStyle('display', 'block');
		$(this.id).getParent().getNext().setStyle('display', 'none');
	},
	
	redirect: function(e)
	{
		new Event(e).stop();
		location = '/award/adjust/2?key=' + this.postData;
	},
	
	error: function(response)
	{
		this.awards.errors = true;
		this.errors.general = response.general;
		if(response.increase){
			for(var i=0; i < response.increase.length; i++){
				var award = this.find(response.increase[i].id, 'current');
				award.error = response.increase[i].message;
			}
		}
		if(response.added){
			for(var i=0; i < response.added.length; i++){
				var award = this.find(response.added[i].id, 'added');
				award.error = response.added[i].message;
			}
		}
		
		this.rebuildHtml();
	},
	
	rebuildHtml: function()
	{	
		if(this.awards.errors){
			if($(this.id + '-errors')) $(this.id + '-errors').remove();
			var div = this.div.clone().setProperty('id', this.id + '-errors').injectInside($(this.id));
			this.h4.clone().setText('Opps... You seem to have some errors.').injectInside(div);
			if(this.errors.general) this.p.clone().setText(this.errors.general).injectInside(div);
		}
		
		if($(this.id + '-current')) $(this.id + '-current').remove();
		var currentTable = this.table.clone().setProperty('id', this.id + '-current').injectInside($(this.id));
		var tbody = new Element('tbody').injectInside(currentTable);
		for(var i=0; i < this.awards.current.length; i++){
			var tr = this.tr.clone().setProperty('id', 'awardCount_' + this.awards.current[i].id).addClass('awardCount').injectInside(tbody);
			this.td.clone().addClass('title').setText('Award ' + (i+1)).injectInside(tr);
			this.td.clone().addClass('awardAmounts').setText('$' + (this.awards.current[i].amount) + ' + ').injectInside(tr);
			var input = this.input.clone().setProperties({type: 'text', value: this.awards.current[i].increase, name: 'increaseAwards[' + this.awards.current[i].id + ']'}).addClass('increase').addEvent('keyup', this.addAmount.bindWithEvent(this, 'current')).injectInside(this.td.clone().addClass('input').setText('$ ').injectInside(tr));
			if(this.awards.current[i].error) input.addClass('error');
			this.td.clone().addClass('total').setText(' = $' + (this.awards.current[i].amount + this.awards.current[i].increase)).injectInside(tr);
			if(this.awards.current[i].error)
			this.td.clone().addClass('error').setProperty('colspan', 4).setText(this.awards.current[i].error).injectInside(this.tr.clone().injectInside(tbody));
		}
		
		if($(this.id + '-added')) $(this.id + '-added').remove();
		var addedTable = this.table.clone().setProperty('id', this.id + '-added').injectInside($(this.id));
		var tbody = new Element('tbody').injectInside(addedTable);
		for(var j=0; j < this.awards.added.length; j++){
			if(this.awards.added[j] != null){
				var tr = this.tr.clone().setProperty('id', 'awardCountAdded_' + this.awards.added[j].id).addClass('awardCountAdded').injectInside(tbody);
				if(j == 0){
					this.td.clone().addClass('title').setHTML('Award ' + (this.awards.added[j].id) + ' <span class="note">($' + this.awards.min + ' min)</span>').injectInside(tr);
				} else {
					this.td.clone().addClass('title').setText('Award ' + (this.awards.added[j].id)).injectInside(tr);
				}
				this.td.clone().addClass('awardAmounts').setHTML('&nbsp;').injectInside(tr);
				var input = this.input.clone().setProperties({type: 'text', name: 'addedAwards[' + this.awards.added[j].id + ']', value: this.awards.added[j].amount}).addClass('increase').addEvent('keyup', this.addAmount.bindWithEvent(this, 'added')).injectInside(this.td.clone().addClass('input').setText('$ ').injectInside(tr));
				if(this.awards.added[j].error) input.addClass('error');
				if(j == 0){
					this.a.clone().setProperty('href', '#').setText('add award').addClass('addaward').addEvent('click', this.add.bindWithEvent(this)).injectInside(this.td.clone().addClass('action').injectInside(tr));
				} else {
					this.a.clone().setProperty('href', '#_' + this.awards.added[j].id).setText('delete').addClass('deleteaward').addEvent('click', this.destroy.bindWithEvent(this)).injectInside(this.td.clone().addClass('action').injectInside(tr));
				}
				if(this.awards.added[j].error)
				this.td.clone().addClass('error').setProperty('colspan', 4).setText(this.awards.added[j].error).injectInside(this.tr.clone().injectInside(tbody));
			}
		}
		
		if($(this.id + '-fees')) $(this.id + '-fees').remove();
		var feesTable = this.table.clone().setProperty('id', this.id + '-fees').injectInside($(this.id));
		var tbody = new Element('tbody').injectInside(feesTable);
		var tr = this.tr.clone().injectInside(tbody);
		this.td.clone().addClass('title').setHTML('Project fee <span class="note">(' + this.awards.fees.percent + '%)</span>').injectInside(tr);
		this.td.clone().addClass('awardAmounts').setHTML('&nbsp;').injectInside(tr);
		this.td.clone().addClass('input').setProperty('id', this.id + '-percent').setText('$ ' + this.awards.fees.amount).injectInside(tr);
		this.td.clone().addClass('action').setHTML('&nbsp;').injectInside(tr);
		var tr = this.tr.clone().addClass('totals').injectInside(tbody);
		this.td.clone().addClass('title').setHTML('Total').injectInside(tr);
		this.td.clone().addClass('awardAmounts').setHTML('&nbsp;').injectInside(tr);
		this.td.clone().addClass('input').setProperty('id', this.id + '-total').setText('$ ' + this.awards.total).injectInside(tr);
		this.td.clone().addClass('action').setHTML('&nbsp;').injectInside(tr);

	},
	
	rebuildContainer: function()
	{
		this.awards = {
			errors: false,
			current: [],
			added: [],
			fees: {
				percent: 0,
				amount: 0
			},
			total: 0,
			min: 0
		}
		
		if($(this.id + '-current')){
			var trs = $(this.id + '-current').getElements('tr.awardCount');
			for(var i=0; i < trs.length; i++){
				this.awards.current.push({
					id: trs[i].getProperty('id').split('awardCount_')[1].toInt(),
					amount: trs[i].getElement('td.awardAmounts').innerHTML.replace('$', '').toInt(),
					increase: '',
					error: null,
					num: i + 1
				});
			}
		}
		
		if($(this.id + '-added')){
			var trs = $(this.id + '-added').getElements('tr.awardCountAdded');
			for(var i=0; i < trs.length; i ++){
				this.awards.min = trs[i].getElement('span.note').innerHTML.replace('($', '').replace(' min)', '').toInt();
				this.awards.added.push({
					id: trs[i].getProperty('id').split('awardCountAdded_')[1].toInt(),
					amount: (trs[i].getElement('input.increase').value == '') ? '' : trs[i].getElement('input.increase').value.toInt(),
					error: null
				});
			}
		}
		
		if($(this.id + '-fees')){
			this.awards.fees.percent = ($(this.id + '-fees').getElement('span.note').innerHTML.replace('%)', '').replace('(', '').toInt());
			for(var i=0; i < this.awards.current.length; i++){
				this.awards.total += (this.awards.current[i].increase != '') ? this.awards.current[i].increase.toInt() : 0;
			}
			for(var i=0; i < this.awards.added.length; i++){
				this.awards.total += (this.awards.added[i].amount != '') ? this.awards.added[i].amount.toInt() : 0;
			}
			this.awards.fees.amount = this.awards.total * this.awards.fees.percent;
		}
	},
	
	createElements: function()
	{
		this.table = new Element('table')
		this.tr = new Element('tr');
		this.td = new Element('td');
		this.ul = new Element('ul');
		this.li = new Element('li');
		this.input = new Element('input');
		this.a = new Element('a');
		this.span = new Element('span');
		this.em = new Element('em');
		this.p = new Element('p');
		this.div = new Element('div');
		this.h4 = new Element('h4');
		this.button = new Element('button');
		this.form = new Element('form');
		this.image = new Element('img');		
	},
	
	find: function(id, type)
	{
		if(type == 'current'){
			for(var i=0; i < this.awards.current.length; i++){
				if(this.awards.current[i].id == id) return this.awards.current[i];
			}
		} else if(type == 'added'){
			for(var i=0; i < this.awards.added.length; i++){
				if(this.awards.added[i].id == id) return this.awards.added[i];
			}
		}
		
		return false;
	}
	
});

var CS_Award_List = new Class({
	awards: new Array(),
	meta: new Object(),
	initialize: function(el, plugin)
	{
		this.el = el;
		this.plugin = (plugin) ? plugin : {};
		this.setMeta();
		this.buildObjectFromHtml();
		if(this.plugin.onInitialize) this.plugin.onInitialize(this);
		this.total();
		this.addEventHandlers();
		
	},
	addEventHandlers: function()
	{	
		this.el.getElements('a.add-award').removeEvents('click');
		this.el.getElements('a.delete-award').removeEvents('click');
		this.el.getElements('input.award').removeEvents('keyup');
		this.el.getElements('a.add-award').addEvent('click', this.add.bindWithEvent(this));
		this.el.getElements('a.delete-award').addEvent('click', this.remove.bindWithEvent(this));
		this.el.getElements('input.award').addEvent('keyup', this.increase.bindWithEvent(this));
	},
	add: function(e)
	{
		new Event(e).stop();
		this.awards.push({
			key: this.awards.length + 1,
			amount: 0
		});
		if(this.plugin.onAdd) this.plugin.onAdd(e);
		this.buildHtmlFromObject();
	},
	remove: function(e)
	{
		new Event(e).stop();
		var oldAwards = this.awards;
		this.awards = new Array();
		for(var i=0; i < oldAwards.length; i++){
			if(oldAwards[i].key != e.target.href.split('#_')[1].toInt()) this.awards.push(oldAwards[i]);
		}
		this.total();
		this.buildHtmlFromObject();
	},
	total: function(e)
	{
		var awardTotals = 0;
		for(var i=0; i < this.awards.length; i++){
			awardTotals += this.awards[i].amount;
		}
		var awardPercent = awardTotals * this.meta.fee / 100;
		$('awards-total').setText('$ ' + (awardTotals + awardPercent));
		$('awards-percent').setText('$ ' + awardPercent);
		if(this.plugin.onTotal) this.plugin.onTotal(e);
	},
	increase: function(e)
	{
		var amount = (e.target.getValue() != '' && !e.target.getValue().test('[a-zA-Z]'))? e.target.getValue().toInt() : 0;
		var award = this.findAward(e.target.getProperty('name').replace('projectAward[', '').replace(']', '').toInt());
		award.amount = amount;
		this.total();
		if(this.plugin.onIncrease) this.plugin.onIncrease(e);
	},
	buildObjectFromHtml: function()
	{
		if(this.el.getElement('table.awards')){
			var awardTrs = this.el.getElement('table.awards').getElements('tr.awardCount');
			for(var i=0; i < awardTrs.length; i++){
				this.awards.push({
					key: awardTrs[i].id.replace('awardCount_', '').toInt(),
					amount: (awardTrs[i].getElement('input.award').value != '') ? parseInt(awardTrs[i].getElement('input.award').value) : 0
				});
			}
		}
	},
	buildHtmlFromObject: function()
	{

		var id = this.el.getElement('table.awards').id;
		this.el.getElement('table.awards').remove();
		
		var table = new Element('table').addClass('awards').setProperty('id', id).injectTop(this.el);
		var tbody = new Element('tbody').injectTop(table);
		
		for(var i=0; i < this.awards.length; i++){
			var td = new Element('td');
			var tr = new Element('tr');
			
			tr.addClass('awardCount').setProperty('id', 'awardCount_' + this.awards[i].key).injectInside(tbody);
			var optional = (this.awards[i].key > 1) ? ' - optional' : ''; 
			td.clone().addClass('title').setHTML('Award ' + (i + 1) + ' <span class="note">($' + this.meta.min + ' min' + optional + ')</span>').injectInside(tr);
			td.clone().addClass('input').setHTML('$ <input type="text" class="award text" name="projectAward[' + this.awards[i].key  + ']" value="' + this.awards[i].amount  + '" />').injectInside(tr);
			
			if(this.awards[i].key == 1){
				td.clone().addClass('action').setHTML('<a href="#" class="add-award">add award</a>').injectInside(tr);
			} else {
				td.clone().addClass('action').setHTML('<a href="#_' + this.awards[i].key + '" class="delete-award">delete</a>').injectInside(tr);
			}
			
			if(this.plugin.extraElements) this.plugin.extraElements(tr, i);

		}

		this.addEventHandlers();
		if(this.plugin.onHtmlBuild) this.plugin.onHtmlBuild();
	},
	findAward: function(id)
	{
		for(var i=0; i < this.awards.length; i++){
			if(this.awards[i].key == id) return this.awards[i];
		}
		return false;
	},
	setMeta: function()
	{
		var meta = this.el.getElement('table.awards').id.split('_');
		for(var i=0; i < meta.length; i++){
			if((i%2) == 0) this.meta[meta[i]] = true;
			if((i%2) == 1) this.meta[meta[i - 1]] = (meta[i].toInt()) ? meta[i].toInt() : meta[i];
		}
	}
});

var StarRating = new Class({
	initialize: function(el, options)
	{
		this.options = options;
		this.el = el;
		this.submissionId = this.el.getProperty('id').split('_')[2];
		this.projectId = this.el.getProperty('id').split('_')[1];
		this.stars = this.el.getElements(this.options.star.type);
		this.startHorizontalPosition = -180;
		this.setBgToCurrent();
		this.attachEvents();
	},
	attachEvents: function()
	{
		this.stars.addEvent('mouseover', this.changeBg.bindWithEvent(this));
		this.stars.addEvent('click', this.save.bindWithEvent(this));
		this.el.addEvent('mouseleave', this.resetBg.bindWithEvent(this));
	},
	save: function(e)
	{
		new Event(e).stop();
		this.currentStar = e.target.getText().toInt();
		this.options.update.setText(this.currentStar);
		if(this.options.onUpdate) this.options.onUpdate();
		
		this.ajaxSubmit = new Ajax('/submission/rate', {
			'method' : 'post',
			'data' : {
				'type' : 'buyer',
				'amount' : this.currentStar,
				'submission_id' : this.submissionId,
				'project_id' : this.projectId,
				'comment' : ''
			}
		}).request();
		
		if(this.options.needs_comment_message){
			this.removeNeedsCommentMessage.delay(1000, this);
		}
		this.flashMessage();
	},
	setBgToCurrent: function()
	{
		this.currentStar = (this.el.getElement('li.current')) ? this.el.getElement('li.current').getText().toInt() : 0;
		this.shiftBg(this.currentStar);
	},
	changeBg: function(e)
	{
		this.shiftBg(e.target.getText().toInt());
	},
	resetBg: function(e)
	{
		this.shiftBg(this.currentStar);
	},
	shiftBg: function(num)
	{
		var newPosition = this.startHorizontalPosition + (this.options.star.height * num);
		this.el.setStyle('background-position', '0 ' + newPosition + 'px');
	},
	flashMessage: function()
	{
		if($('ratingSavedMessage')){
			var p = $('ratingSavedMessage');
			p.setOpacity(1);
		} else {
			var p = new Element('p').setProperty('id', 'ratingSavedMessage').injectAfter(this.el);
			p.setText('Your rating has been saved!');
		}
	
		var fade = function(){
			new Fx.Style(p, 'opacity').start(1, 0);
		}
		fade.delay(1000);
	},
	removeNeedsCommentMessage: function()
	{
		new Fx.Style(this.options.needs_comment_message, 'opacity', {
			onComplete: (function(){
				this.options.needs_comment_message.remove();
			}).bind(this)
		}).start(1, 0);
	}
});


// Start Up 
window.addEvent('domready', function(){
	var crowdspring = new CS();
	if($$('ul.slider')[0]){
		var slider = new CS_Slider($$('ul.slider')[0], $$('ul.slider')[0].id.split('_')[2], $$('ul.slider')[0].id.split('_')[1], 0, $$('ul.slider')[0].id.split('_')[3]);
	}
	for(var i=0; i < $$('a.slideshow').length; i++){
		new CS_Slideshow($$('a.slideshow')[i]);
	}
	if ($$('table.sortable')){
		if ($('projectsTable1')) {
			var projectsTable1 = new sortableTable('projectsTable1');
		}
		if ($('projectsTable2')) {
			var projectsTable2 = new sortableTable('projectsTable2');
		}
		if ($('projectsTable3')) {
			var projectsTable3 = new sortableTable('projectsTable3');
		}
		if ($('LGwinners')) {
			var winnerTable = new sortableTable('LGwinners', {
				sortBy: 'ASC'
			});
		}
	}
	
	if($('importContacts')){
		var cs_contacts = new CS_Contacts();
		cs_contacts.import_contacts($('importContacts'));
		//cs_contacts.autoComplete($('recipients'), $('pmForm'));
	}
	
	if($('multi-file'))	new MultiFile($('multi-file'), {strlen: 30});
	
	// Check for project awards dom object then load the JS class that corresponds to the dom objects class name
	if($('projectAwards')){
		var plugin = {};
		switch($('projectAwards').className){
			case 'ColorBars':
				plugin = {
					onInitialize: function(parent){
						this.awardList = parent;
					},
					setAlerts: function(){
						for(var i=0; i < this.awardList.awards.length; i++){
							if(this.awardList.awards[i].amount > 0){
								var alerttext = (this.awardList.awards[i].amount < this.awardList.meta.min) ? ['below minimum', '#fff', '#ed1c24'] : 
									(this.awardList.awards[i].amount < this.awardList.meta.low) ? ['very low', '#ed1c24', '#fff'] : 
									(this.awardList.awards[i].amount < this.awardList.meta.med) ? ['low', '#fff200', '#000'] :
									(this.awardList.awards[i].amount < this.awardList.meta.high) ? ['ok', '#6d6e71', '#fff'] : ['best', '#00aeef', '#fff'];
								$('alert_' + this.awardList.awards[i].key).setText(alerttext[0]);
								$('alert_' + this.awardList.awards[i].key).setStyles({
									'color': alerttext[2],
									'background': alerttext[1]
								});
							}
						}
					},
					onTotal: function(){
						this.setAlerts();
					},
					extraElements: function(tr, index){
						var td = new Element('td').setProperty('id', 'alert_' + (index + 1)).addClass('alert').setHTML('&nbsp;').injectInside(tr);
					},
					onHtmlBuild: function()
					{
						this.setAlerts();
					}
				}
			break;
			case 'Speedometer':
				plugin = {
					onInitialize: function(parent){
						this.awardList = parent;
						this.addEvents();
					},
					addEvents: function()
					{
						for(var i=0; i < this.awardList.awards.length; i++){
							$('awardCount_' + this.awardList.awards[i].key).getElement('input.award')
								.addEvent('focus', this.moveSpeedometer.bindWithEvent(this));	
						}
					},
					moveSpeedometer: function(e)
					{
						if (e.target.value != '') {
							var alerttext = (e.target.value.toInt() < this.awardList.meta.min) ? ['below minimum', 'below'] : 
								(e.target.value.toInt() < this.awardList.meta.low) ? ['very low', 'very_low'] : 
								(e.target.value.toInt() < this.awardList.meta.med) ? ['low', 'low'] :
								(e.target.value.toInt() < this.awardList.meta.high) ? ['ok', 'ok'] : ['best', 'best'];
							$('meter').className = '';
							$('meter').addClass(alerttext[1]);
							$('meter').setText(alerttext[0]);
						}
					},
					onHtmlBuild: function()
					{
						this.addEvents();
					},
					onIncrease: function(e)
					{
						this.moveSpeedometer(e);
					}
				}
			break;
		}
		var awards = new CS_Award_List($('projectAwards'), plugin);
	}
	
	if($('buyerRate')) var starRating = new StarRating($('buyerRate').getElement('ul'), {
		update: $('buyerRatingNumber'),
		needs_comment_message: $('needs_comments'),
		star: {
			type: 'li',
			width: 16,
			height: 18
		},
		onUpdate: function(){
			$('buyerRatingNumber').getParent().removeClass('score');
		}
	});
	if($('submission_comment')) $('submission_comment').getElement('textarea').focus();
	
	// Stuff for ajax navigation
	if ($('utilities')) {
		var myspring_link = $('utilities').getElement('.myspring_or_join');
		var login_link = $('utilities').getElement('.log_in_or_out');
		var pm_link = null;
		var request = new Json.Remote('/find/nav', {
			onComplete: function(response) {
				if (response.authenticated) {
					login_link.setText('Log out').setProperty('href', '/ezcslogout/logout');
					myspring_link.setText('mySPRING').setProperty('href', '/myspring/projects/' + response.username);
					if (response.pmcount > 0) {
						pm_link = new Element('a').addClass('mail').setProperty('href', '/privatemessage/inbox')
												  .setText(response.pmcount).injectInside(new Element('li').injectTop($('utilities')));
					}
				} else {
					login_link.addClass('login');
				}
				if (response.alertmessage) {
					var alert_message = new Element('div').setHTML(response.alertmessage)
														  .addClass('announcement').addClass('clearfix')
														  .injectTop(document.body);
				}										  
			}
		}).send();
	}
});