var DEBUG = new Array();

if (typeof(SiteFramework) != 'function'){
	var SiteFramework = function (){};
}

SiteFramework.prototype.debugMode = true;
SiteFramework.prototype._DEBUG = {};
SiteFramework.prototype.ajaxRequest = {};
SiteFramework.prototype.popupSize = { w : '500', h : '600' };
SiteFramework.prototype.CMSmact = {
	'module'    : '',
	'id'        : '',
	'action'    : '',
	'inline'    : ''
};

SiteFramework.prototype.debug = function (data, label){
	if (this.debugMode){
		var d = new Date();
		label = d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds() + '.' + d.getMilliseconds() + ' ' + label;
		this._DEBUG[label] = data;
	}
}

SiteFramework.prototype.parseMact = function (mact){
	var parts = mact.split(',');
	this.CMSmact.module = parts[0];
	this.CMSmact.id     = parts[1];
	this.CMSmact.action = parts[2];
	this.CMSmact.inline = parts[3];
}

SiteFramework.prototype.CMSfieldValue = function (form, fieldName){
	fieldName = this.CMSmact.id+fieldName;
	if (form[fieldName] == undefined){
		return false;
	}
	return form[fieldName];
}

SiteFramework.prototype.findNode = function (element, nodeName){
	var lim    = 0;
	while (element.nodeName != nodeName && element.nodeName != 'BODY' && lim < 1000){
		element = element.parentNode;
		lim++;
	}
	if (element.nodeName == nodeName){
		return element;
	}
	return false;
}

SiteFramework.prototype.ajaxSubmitForm = function (element){
	if (typeof(element) == 'string'){
		element = $(element);
	} else if (typeof(element.element) == 'function'){
		element = element.element();
	}

	if (typeof(element.nodeName) == 'string'){
		var url    = window.location.href;
		var method = 'get';
		var params = '';

		form = this.findNode(element, 'FORM');
		if (form == false){ return false; }

		url = form.action;
		method = form.method;
		params = $(form).serialize();

		var ajaxId = Math.round(Math.random() * 999999) + 1000000;
		this.ajaxRequest[ajaxId] = {
			'url'    : url,
			'params' : params,
			'method' : method,
			'form'   : form
		}

		if (params.length > 0){
			params += '&'
		}
		params += '_ajaxId='+ajaxId;

		new Ajax.Request(url, {
			'method'     : method,
			'parameters' : params,
			'onFailure'  : function(transport){ alert('AJAX request failed :('); }
		} );
	}

	return false;
}

SiteFramework.prototype.ajaxRequest = function(url){
	if (typeof(url) == 'object'){
		if (typeof(url.element) == 'function'){
			var element = url.element();
			element = this.findNode(element, 'A');
			if (element == false){ return false; }
			url = element.href;
		}
	}
	if (url.length > 0){
		new Ajax.Request(url, {
			'onFailure'  : function(transport){ alert('AJAX request failed :('); }
		} );
	}
	return false;
}

SiteFramework.prototype.requestPopup = function (element){
	if (typeof(element) == 'string'){
		element = $(element);
	} else if (typeof(element.element) == 'function'){
		element = element.element();
	}

	element = this.findNode(element, 'A');
	if (element == false){ return false; }

	this.openPopup(element.href);

	return false;
}

SiteFramework.prototype.openPopup = function (url){
	myLightWindow.activateWindow( {
		href    : url,
		title   : '',
		author  : '',
		caption : null,
		width   : this.popupSize.w,
		height  : this.popupSize.h,
		type    : 'page'
	} );
	return false;
}

SiteFramework.prototype.UpdatePopup = function(content){

	var openNew = (myLightWindow.element == null);

	myLightWindow.element = Object.extend({
		href       : '',
		title      : '',
		author     : '',
		caption    : '',
		rel        : null,
		top        : null,
		left       : null,
		type       : 'inline',
		showImages : null,
		height     : 300,
		width      : this.popupSize.w,
		loadingAnimation : null,
		iframeEmbed : null,
		form        : null
	});

	// Set the window type
	myLightWindow.contentToFetch = '';
	myLightWindow.windowType = 'inline';

	myLightWindow._clearWindowContents(true);
	myLightWindow._addLoadingWindowMarkup();

	if (openNew){
		myLightWindow._getScroll();
		myLightWindow._browserDimensions();
		myLightWindow._setupDimensions();
		myLightWindow._toggleTroubleElements('hidden', false);
		myLightWindow._displayLightWindow('block', 'hidden');
		myLightWindow._setStatus(true);
		myLightWindow._monitorKeyboard(true);
		myLightWindow._prepareIE(true);
	}

	$('lightwindow_contents').innerHTML += content;

	myLightWindow.resizeTo.height = $('lightwindow_contents').scrollHeight+(myLightWindow.options.contentOffset.height);
	myLightWindow.resizeTo.width = $('lightwindow_contents').scrollWidth+(myLightWindow.options.contentOffset.width);
	myLightWindow._processWindow();

	return false;
}

SiteFramework.prototype.closePopup = function(){
	myLightWindow.deactivate()
	return false;
}

SiteFramework.prototype.redirect = function(url){
	var parts = url.split('&amp;');
	url = '';
	parts.each( function (element){
		if (url.length > 0){
			url += '&';
		}
		url += element;
	} );
	if (url.length > 0){
		window.location = url;
	}
	return false;
}

SiteFramework.prototype.formValidationResult = function(result){
	if (typeof(result) != 'object' || typeof(result._ajaxId) == 'undefined' || typeof(this.ajaxRequest[result._ajaxId]) == 'undefined'){
		return false;
	}
	var ajaxData = this.ajaxRequest[result._ajaxId];
	this.formValidationErrors(ajaxData.form, result.errors);
	delete(this.ajaxRequest[result._ajaxId]);
}

SiteFramework.prototype.formValidationErrors = function (form, errors){
	var fields = $(form).getElements();
	fields.each( function (element){
		$(element.parentNode).removeClassName('error');
		var test = element.parentNode.getElementsBySelector('.error-message');
		var block = element.parentNode.getElementsBySelector('.error-message').first();
		if (typeof(block) == 'object'){
			if (typeof(errors[element.name]) == 'string'){
				element.parentNode.addClassName('error');
				block.innerHTML = errors[element.name];
			} else {
				block.innerHTML = ''
			}
		}
	} );
	return false;
}

SiteFramework.prototype.updateCookie = function (params){
	if (typeof(params) == 'object'){
		this.debug(params, 'UpadteCookie');
		for (var varKey in params.data){
			var varName = params.key+'['+varKey+']';
			this.addCookie(varName, params.data[varKey], params.expDays);
		}
	}
}

SiteFramework.prototype.addCookie = function (name, value, expDays){
	if (expDays){
		var date = new Date();
		date.setTime(date.getTime()+(expDays*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	} else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

SiteFramework.prototype.readCookie = function (key, varKey){
	var nameEQ = key+'['+varKey+']'+'=';
	var ca = document.cookie.split(';');
	for (var i=0; i < ca.length; i++){
		var c = ca[i];
		while (c.charAt(0) == ' ') c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
	}
	return '';
}

SiteFramework.prototype.validateEmail = function (email, checkEmpty){
	if (checkEmpty == true && email.length == 0){
		return false;
	}
	var emailRegExp = new RegExp("^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~]+\\.)+[a-zA-Z]{2,5}\$");
	if (email.length != 0 && emailRegExp.test(email) == false){
		return false;
	}
	return true;
}

SiteFramework.prototype.Base64 = {
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;

		input = this._utf8_encode(input);

		while (i < input.length) {

			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);

			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;

			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}

			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

		}

		return output;
	},

	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;

		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

		while (i < input.length) {

			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));

			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;

			output = output + String.fromCharCode(chr1);

			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}

		}

		output = this._utf8_decode(output);

		return output;

	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}

//	---------------------------------------------------- Font changer
SiteFramework.fontMode = new Array('14px','16px','18px');
SiteFramework.currentFontMode  = 0;

SiteFramework.toggleFontSize = function(){
	var i = this.currentFontMode + 1;
	if (i >= this.fontMode.length){
		i = 0;
	}
	document.body.style.fontSize = this.fontMode[i];
	this.currentFontMode = i;
}


//	---------------------------------------------------- Toolkits
if (typeof(Toolkits) == 'undefined'){
	var Toolkits = new SiteFramework();
}

//	---------------------------------------------------- Collateral
if (typeof(Collateral) == 'undefined'){
	var Collateral = new SiteFramework();
}

Collateral.entryList  = {};
Collateral.DOMlist    = 'collateral_list';
Collateral.DOMorder   = 'collateral_selected';
Collateral.orderForm  = null;
Collateral.CMSparams  = {
	'goto'     : '',
	'module'   : '',
	'action'   : '',
	'varpref'  : '',
	'returnid' : ''
};

Collateral.init = function (CMSparams){
	this.DOMlist = $(this.DOMlist).select('ul').first();
	this.DOMorder = $(this.DOMorder).select('ul').first();
	this.CMSparams = CMSparams;
	if (typeof(FlyPreview) == 'object'){
		document.observe("dom:loaded", function (){ FlyPreview.init(); } );
	}
}

Collateral.loadList = function (list){
	if (typeof(list) == 'object'){
		for (var id in list){
			this.entryList[list[id].id] = {
				'id'       : list[id].id,
				'title'    : list[id].title,
				'thumbUrl' : list[id].thumburl,
				'selected' : false,
				'thumb'    : null
			};
			if (list[id].thumburl.length > 0){
				this.entryList[list[id].id].thumb = document.createElement('IMG');
				this.entryList[list[id].id].thumb.src = list[id].thumburl;
				this.entryList[list[id].id].thumb.border = 0;
			}
		}
	}
	this.createDOMlist();
}

Collateral.createDOMlist = function (){
	for (var id in this.entryList){
		var block = this.createEntryBlock(id);
		if (typeof(FlyPreview) == 'object' && this.entryList[id].thumb != null){
			FlyPreview.addTarget(block, this.entryList[id].thumb);
		}
		this.DOMlist.appendChild(block);
	}
}

Collateral.createEntryBlock = function (id, addHidden){
	var wrap = document.createElement('LI');
	wrap.entryId = id;
	Event.observe(wrap, 'click', function (event){ Collateral.onSelectEntry(event); });

	var block = document.createElement('P');
	block.innerHTML = this.entryList[id].title;
	wrap.appendChild(block);

	if (addHidden){
		var block   = document.createElement('INPUT');
		block.type  = 'hidden';
		block.name  = this.CMSparams.varpref+'order[]';
		block.value = this.entryList[id].id
		wrap.appendChild(block);
	}

	if (this.entryList[id].selected == true){
		$(wrap).addClassName('selected');
	}
	return wrap;
}

Collateral.onSelectEntry = function (event){
	var element = Event.element(event);
	if (typeof(element) == 'object'){
		if (element.nodeName == 'P'){
			element = element.parentNode;
		}
		if (typeof(element) == 'object' && element.entryId){
			this.toggleSelection(element.entryId);
		}
	}
}

Collateral.toggleSelection = function (id){
	if (this.entryList[id].selected == true){
		this.entryList[id].selected = false;
	} else {
		this.entryList[id].selected = true;
	}
	this.updateEntryList();
	this.updateOrderList();
}

Collateral.updateEntryList = function (){
	this.DOMlist.childElements().each( function (object){
		if (object.nodeName == 'LI' && object.entryId){
			if (Collateral.entryList[object.entryId].selected == true && object.hasClassName('selected') == false){
				object.addClassName('selected');
			} else if (Collateral.entryList[object.entryId].selected == false && object.hasClassName('selected') == true){
				object.removeClassName('selected');
			}
		}
	} );
}

Collateral.updateOrderList = function (){
	this.DOMorder.childElements().each( function (object){
		object.remove();
	} );

	for (var id in this.entryList){
		if (this.entryList[id].selected == true){
			$(this.DOMorder).appendChild(this.createEntryBlock(id, true));
		}
	}
}

Collateral.sendOrder = function (event){
	var hasSelected = false;
	for (var id in this.entryList){
		if (this.entryList[id].selected == true){
			hasSelected = true;
		}
	}
	if (hasSelected){
		if (typeof(event) != 'undefined' && typeof(event.element) == 'function'){
			var form = Event.element(event);
			form = this.findNode(form, 'FORM');
			if (form == false) return false;
			this.orderForm = form;
		} else if (this.orderForm != null){
			var form = this.orderForm;
		} else {
			return false;
		}
		this.ajaxSubmitForm(form);
	} else {
		alert('No items selected in order');
	}
}

Collateral.orderSuccess = function (){
	alert('Your order was placed successfuly');
}

//	---------------------------------------------------- FlyPreview
if (typeof(FlyPreview) != 'object'){
	var FlyPreview = {};
}

FlyPreview.window  = null;
FlyPreview.targets = {};

FlyPreview.init = function (){
	var block = document.createElement('DIV');
	block.id = 'FlyPreviewContainer';
	this.window = document.createElement('DIV');
	this.window.id = 'FlyPreviewWindow';
	this.window.style.display = 'none';
	this.window.style.position = 'absolute';
	this.window.appendChild(block);
	document.body.appendChild(this.window);
}

FlyPreview.addTarget = function (element, content){
	if (typeof(element) == 'string'){
		element = $(element);
	}
	var uid = Math.round(Math.random() * 9999) + 1000;
	this.targets[uid] = {
		'element' : element,
		'content' : content
	}
	Event.observe(element, 'mouseover', function (event){ FlyPreview.onMouseOver(event, uid); } );
	Event.observe(element, 'mousemove', function (event){ FlyPreview.onMouseMove(event); } );
	Event.observe(element, 'mouseout' , function (event){ FlyPreview.onMouseOut(event); } );
}

FlyPreview.onMouseOver = function (event, uid){
	var container = $('FlyPreviewWindow').childElements().first();
	container.childElements().each( function (element){
		element.remove();
	} );
	var element = Event.element(event);
	if (typeof(this.targets[uid].content) == 'object'){
		container.appendChild(this.targets[uid].content);
	} else if (typeof(this.targets[uid].content) == 'string'){
		$(container).innerHTML = this.targets[uid].content;
	}
	if (container.innerHTML.length > 0){
		this.onMouseMove(event);
		this.window.style.display = '';
	}
}

FlyPreview.onMouseMove = function (event){
	$('FlyPreviewWindow').style.top = Event.pointerY(event)+'px';
	$('FlyPreviewWindow').style.left = Event.pointerX(event)+20+'px';
}

FlyPreview.onMouseOut = function (event){
	this.window.style.display = 'none';
}

//	---------------------------------------------------- RSSfeed
if (typeof(RSSfeed) == 'undefined'){
	var RSSfeed = new SiteFramework();
}

RSSfeed.subscribe = function (element){
	if (typeof(element.element) == 'function'){
		element = Event.element(element);
	}
	var form = this.findNode(element, 'FORM');
	if (form == false) return false;
	var dropDown = $(form).findFirstElement();
	if (typeof(dropDown) == 'object'){
		var feedUrl = dropDown.value;
		if (feedUrl.length > 0){
			window.location.href = feedUrl;
		}
	}
	return false;
}

//	---------------------------------------------------- SiteSearch
if (typeof(SiteSearch) == 'undefined'){
	var SiteSearch = new SiteFramework();
}

SiteSearch.defaultText = '';
SiteSearch.DOMform     = null;
SiteSearch.DOMfield    = null;

SiteSearch.init = function (params){
	this.defaultText = params.default_text;
	this.DOMform = $(params.form_id);

	if (typeof(this.DOMform) == 'object'){
		Event.observe(this.DOMform.searchinput, 'mousedown', function (event){ return SiteSearch.onMouseDown(event); } );
		if (this.DOMform.searchinput.value.length == 0){
			this.DOMform.searchinput.value = SiteSearch.defaultText;
		}
	}
}

SiteSearch.onMouseDown = function (event){
	var element = Event.element(event);
	if (element.value == this.defaultText){
		element.value = '';
	}
	return true;
}

SiteSearch.doSearch = function (event){
	if (this.DOMform.searchinput.value == this.defaultText || this.DOMform.searchinput.value.length == 0){
		this.DOMform.searchinput = '';
		alert('No keywords selected');
	} else {
		this.DOMform.submit();
	}
}

SiteSearch.doFilter = function (element){
	if (typeof(element) == 'string'){
		element = $(element);
	} else if (typeof(element.element) == 'function'){
		element = Event.element(element);
	}
	var form = this.findNode(element, 'FORM');
	if (typeof(form) == false) return false;
	var dropDown = form.findFirstElement();
	if (typeof(dropDown) == 'object'){
		this.DOMform[this.CMSmact.id+'filter_module'].value = dropDown.value;
	}

	this.DOMform.submit();

	return false;
}

//	---------------------------------------------------- DocFilter
if (typeof(DocFilter) != 'object'){
	var DocFilter = {};
}

DocFilter.init = function (){};

DocFilter.submit = function (event){
	var limit = 0;
	object = Event.element(event);
	while (object.nodeName != 'A' && object.nodeName != 'BODY' && limit < 1000){
		limit++;
		var object = object.parentNode;
	}
	if (object.nodeName != 'A'){
		return false;
	}
	limit = 0;
	var form = object
	while (form.nodeName != 'FORM' && form.nodeName != 'BODY' && limit < 1000){
		limit++;
		var form = form.parentNode;
	}
	if (form.nodeName != 'FORM'){
		return false;
	}
	var url = object.href;
	new Ajax.Request(url, {
		method: 'get',
		parameters: $(form).serialize(),
		onFailure: function(transport){ alert('AJAX request failed :('); }
	} );
	return false;
};

DocFilter.reset = function (event){
	var limit = 0;
	object = Event.element(event);
	while (object.nodeName != 'A' && object.nodeName != 'BODY' && limit < 1000){
		limit++;
		var object = object.parentNode;
	}
	if (object.nodeName != 'A'){
		return false;
	}
	var url = object.href;
	new Ajax.Request(url, {
		method: 'get',
		onFailure: function(transport){ alert('AJAX request failed :('); }
	} );
	return false;
}

DocFilter.updatePage = function (){
	var queryParams = window.location.search.toQueryParams();
	if (typeof(queryParams.pagenumber) == 'string'){
		queryParams.pagenumber = '1';
	}
	var queryStr = '?';
	for (var key in queryParams){
		queryStr += key+'='+queryParams[key]+'&';
	}
	queryStr += 'parsed=1';
	window.location.search = queryStr;
}

//	---------------------------------------------------- Competition
if (typeof(Competition) == 'undefined'){
	var Competition = new SiteFramework();
}

Competition.fileFieldId = 'videoUploadField';
Competition.uploadFormId = 'videoUploadForm';
Competition.cookieKey = 'Competition';
Competition.maxUploadFileSize = 1024*1024*10;
Competition.fieldsDefault = {
	'first_name'  : 'First Name*',
	'last_name'   : 'Last Name*',
	'college'     : 'College*',
	'email'       : 'Email*',
	'_email'      : 'Confirm Email*',
	'title'       : 'Title of your video*',
	'description' : 'Description of your video*'
};

Competition.init = function (params){
	if (params.cookieKey){
		this.cookieKey = params.cookieKey;
	}
	if (params.maxUploadFileSize){
		this.maxUploadFileSize = params.maxUploadFileSize;
	}

	for (var varKey in this.fieldsDefault){
		var fieldName = 'data['+varKey+']';
		var field = $(fieldName);
		field.varKey = varKey;
		var cookieData = this.readCookie(this.cookieKey, varKey);
		if (cookieData == ''){
			field.value = this.fieldsDefault[varKey];
			field.observe('focus', function (event){ Competition.onFocusField(event); } );
			field.observe('blur', function (event){ Competition.onBlurField(event); } );
		} else {
			field.value = cookieData;
		}
	}

	var field = $('data[agree]');
	var cookieData = this.readCookie(this.cookieKey, 'agree');
	field.checked = (cookieData != '');

	$j(document).ready(function() {
		$j("#"+Competition.fileFieldId).uploadify({
			'uploader'       : 'lib/uploadify/uploadify.swf',
			'script'         : 'uploadfile.php',
			'scriptData'     : {},
			'fileDesc'       : 'Video files',
			'fileExt'        : '*.flv; *.mov; *.avi; *.mpg; *.mp4; *.wmv;',
			'folder'         : 'uploads/Competition/',
			'queueID'        : 'fileUploadQueue',
			'buttonImg'      : 'images/CollegesWeekTheme/button_browse.png',
			'width'          : 69,
			'height'         : 22,
			'onSelect'       : function (event, queueID, fileObj){ return Competition.onSelectFile(event, queueID, fileObj); },
			'onComplete'     : function (event, queueID, fileObj, response, data){ return Competition.onUploadComplete(event, queueID, fileObj, response, data); },
			'auto'           : false,
			'multi'          : false
		});
		$('data[file_name]').parentNode.style.display = 'block';
	});
	return false;
}

Competition.onFocusField = function (event){
	var element = event.element();
	if (element.value == this.fieldsDefault[element.varKey]){
		element.value = '';
	}
}

Competition.onBlurField = function (event){
	var element = event.element();
	if (element.value == ''){
		element.value = this.fieldsDefault[element.varKey];
	}
}

Competition.onSelectFile = function (event, queueID, fileObj){
	var filed = $('data[file_name]');
	filed.value = '';
	filed.parentNode.removeClassName('error');
	if (fileObj.size >= this.maxUploadFileSize){
		var block = filed.parentNode.getElementsBySelector('.error-message').first();
		if (typeof(block) == 'object'){
			var maxMb = Math.round( this.maxUploadFileSize / (1024 * 1024) );
			block.innerHTML = 'Selected file is to big (max. upload file size is '+maxMb+'MB)';
			filed.parentNode.addClassName('error');
		}
		return false;
	}
	filed.value = fileObj.name;
	$('fileUploadQueue').childElements().each( function (element){ element.remove(); } );
	return true;
}

Competition.onUploadComplete = function (event, queueID, fileObj, response, data){
	response = eval('('+response+')');
	this.debug( {
		'event' : event,
		'queueID' : queueID,
		'fileObj' : fileObj,
		'response' : response,
		'data' : data
	}, 'FileUploadResult' );
	var block = null;
	block = document.createElement('SPAN');
	$(block).addClassName('percentage');
	block.innerHTML = response.errorMsg
	block = document.createElement('DIV').appendChild(block).parentNode;
	$(block).addClassName('uploadifyQueueItem');
	if (response.errorCode == 'ok'){
		$(block).addClassName('uploadifySuccess');
	} else {
		$(block).addClassName('uploadifyError');
	}
	$('fileUploadQueue').appendChild(block);

	$('data[title]').value = this.fieldsDefault['title'];
	$('data[description]').value = this.fieldsDefault['description'];
	$('data[file_name]').value = '';

	return true;
}

Competition.doUpload = function (){

	var postData = { 'module' : 'Competition', 'action' : 'uploadfile' };
	var errors = {};
	var cookie = {
		'key'     : this.cookieKey,
		'expDays' : 365,
		'data'    : {}

	};
	var haveErrors = false;


	for (var varKey in this.fieldsDefault){
		var fieldName = 'data['+varKey+']';
		var field = $(fieldName);

		if (field.value == '' || field.value == this.fieldsDefault[varKey]){
			errors[fieldName] = 'This field is required';
			haveErrors = true;
		} else {
			if (varKey != 'title' && varKey != 'description'){
				cookie.data[varKey] = field.value;
			}
			postData[fieldName] = field.value;
		}
	}

	if (this.validateEmail($('data[email]').value) == false){
		errors['data[email]'] = 'Invalid e-mail address';
		haveErrors = true;
	} else if ($('data[email]').value != $('data[_email]').value) {
		errors['data[_email]'] = 'You need confirm e-mail address';
		haveErrors = true;
	}

	var field = $('data[agree]');
	if (field.checked == false){
		errors['data[agree]'] = 'You need to agree with the Terms and Conditions';
		haveErrors = true;
	} else {
		cookie.data['agree'] = field.value;
		postData['data[agree]'] = field.value;
	}

	postData['data[prize]'] = $('data[prize]').value;

	var field = $('data[file_name]');
	if (field.value == ''){
		errors['data[file_name]'] = 'You need to select video file';
		haveErrors = true;
	}

	this.formValidationErrors($('videoUploadForm'), errors);

	if (haveErrors == false){
		this.updateCookie(cookie);

		for (var n in postData){
			if (n.substr(0, 4) == 'data'){
				postData[n] = $j.URLEncode(postData[n]);
			}
		}

		$j('#videoUploadField').uploadifySettings('scriptData', postData);
		$j('#videoUploadField').uploadifyUpload();

	}

//	return false;
}
