// JavaScript Document
var ContestEntry = new Class({
	Extends: Page,
	
	uploadObj: null,
	messageObj: null,
		
	setBanner: null,
	setCaption: null,
	setDescription: null,
	setContestEntryForm: null,
	setUploadControl: null,
	setUploadControlStub: null,
	setSubmitButton: null,
	
	initialize: function(pageState) {
		this.parent('contest-entry', pageState);
		
		this.addEvent('entryPersisted', this.entryPersisted);
		
		this.uploadObj = new Upload();
		this.messageObj = new Message();
		
		this.setBanner = this.setBlock.pass(['divBanner', 'banner'], this);
		this.setCaption = this.setBlock.pass(['divCaption', 'caption'], this);
		this.setDescription = this.setBlock.pass(['divDescription', 'description'], this);
		this.setContestEntryForm = this.setBlock.pass(['divContestEntryForm', 'contestEntryForm'], this);
		this.setUploadControl = this.setBlock.pass(['divUploadControl', 'uploadControl', false], this);
		this.setUploadControlStub = this.setBlock.pass(['divUploadControl', 'uploadControlStub'], this);
		this.setSubmitButton = this.setBlock.pass(['divSubmitButton', 'submitButton'], this);
	},
	
	requestPersistContestEntry: function(formValues) {
		return {
			server: 'ContestEntryServer',
			handler: 'persistContestEntry',
			params: [formValues]
		};
	},
	
	validateUploadControl: function() {
		if ( $defined($('txtFileName')) ) {
			if ( $chk( $('hidFileID').value ) ) {
				Validation.removeAdvice($('txtFileName'));
				return true;
			} else {
				Validation.advise($('txtFileName'), 'This contest is submission based. Please upload a submission, then resend this form.', '172px');
				return false;
			}
		} else {
			return true;
		}
	},
	persistContestEntry: function(form) {
		if (Validation.validateForm(form) && this.validateUploadControl()) {
			this.addRequest(this.requestPersistContestEntry(form.getFormValues()));
			this.sendRequests();
			form.reset();
		} else {
			this.messageObj.message('The form contains validation errors. Please correct and resend.', true);
		}		
	},
	
	afterContentUpdate: function(responseClass) {
		switch (responseClass) {
			case 'uploadControl':
				this.uploadObj.initializeControl('spnEntryImage');
				break;
		}
	},
	entryPersisted: function(photoId) {
		this.messageObj.message('Thank you for your submission. Good luck in the contest.');
		if (photoId) location.href = 'entry-list.php?contestId=' + this.pageState.id;
	}
});
