/**
 **************************************************************************************
 * Login require
 **************************************************************************************
 */
var loginRequiredItem = new Class({
// Item which prompts the user to log in or sign up when they interact with it
	initialize: function(element){
		this.element=(element);
		this.setup();
		
	},
	setup: function(){
		this.element.addEvents({
			'click': function(event){
				event.preventDefault();
				this.displayMessage();
			}.bind(this),
			'mouseout': function(){
				this.hideMessage.delay(6000);
			}.bind(this)
		});
	},
	displayMessage: function(){
		//alert('You must be logged in to use this feature');
		tooltip.set('html','You must be logged in to use this feature<br/>Please <a href="/wp-login.php">Log In</a> or <a href="wp-login.php?action=register">Sign Up</a>');
		tooltip.setStyles({
			'display':'block',
			'left': this.element.getPosition().x,
			'top': this.element.getPosition().y,
			'opacity': '0'			
			});
		tooltip.tween('opacity','0.9');
	},
	hideMessage: function(){
		tooltip.tween('opacity','0');
	}
});



/**
 **************************************************************************************
 * DOM ready
 **************************************************************************************
 */
window.addEvent('domready', function(e){
	if($('closeNotification')){
		var notificationTx = new Fx.Tween($('notification'), {duration: 2000});
		notificationTx.start('background-color', '#ABD2F6', '#333');
		
		$('closeNotification').addEvent('click', function(e){
			e.stop();
			$('notification').set('style', 'display: none;');
		});
	}
	
	if($('leaveComment')){
		$('leaveComment').addEvent('click', function(e){
			e.stop();
			
			new Fx.Scroll(window, {
				wait: false,
				duration: 1000,
				transition: Fx.Transitions.Quad.easeInOut
			}).toElement($('respond'));
		});
	}
	
	if($('filterEntered')){
		$('filterEntered').addEvent('click', function(e){
			e.stop();
			
			$('filterEntered').toggleClass('filterEnteredChked');
			
			if($('cmFilterDisplayOption1').checked == true){
				$('cmFilterDisplayOption1').checked = false;
			}else{
				$('cmFilterDisplayOption1').checked = true;
			}
			
			$('compFilterForm').submit();
		});
	}
	
	if($('filterNotInterested')){
		$('filterNotInterested').addEvent('click', function(e){
			e.stop();
			
			$('filterNotInterested').toggleClass('filterNotInterestedChked');
			
			if($('cmFilterDisplayOption2').checked == true){
				$('cmFilterDisplayOption2').checked = false;
			}else{
				$('cmFilterDisplayOption2').checked = true;
			}
			
			$('compFilterForm').submit();
		});
	}
	
	if($('compFilterAsc')){
		$('compFilterAsc').addEvent('click', function(e){
			e.stop();
			$('cmFilterOrderOpt1').selected = true;
			$('cmFilterOrderOpt2').selected = false;
			$('compFilterAsc').addClass('orderAscSelected');
			$('compFilterDesc').removeClass('orderDescSelected');
		});
	}
	
	if($('compFilterDesc')){
		$('compFilterDesc').addEvent('click', function(e){
			e.stop();
			$('cmFilterOrderOpt1').selected = false;
			$('cmFilterOrderOpt2').selected = true;
			$('compFilterAsc').removeClass('orderAscSelected');
			$('compFilterDesc').addClass('orderDescSelected');
		});
	}
	
	if($('featuredContests')){
		initSlideShow();
	}

	if($('sidebar')){
		var sidebarAccordion = new Fx.Accordion($$('h2.sidebarAccordionToggler'), $$('ul.sidebarAccordionContent'), { display: -1, alwaysHide: true });
	}
	
	if($('archiveInfo')){
		var archiveInfoBox = new Fx.Reveal($('archiveInfoBox'));
		
		$('archiveInfo').addEvent('click', function(e){
			e.stop();
			archiveInfoBox.toggle();
		});
	}
	
	if($('compFilterHelp')){
		var filterHelpBox = new Fx.Reveal($('filterHelpBox'));
		
		$('compFilterHelp').addEvent('click', function(e){
			e.stop();
			filterHelpBox.toggle();
		});
	}
	
	if($('addCompetitionForm')){
		new vlaDatePicker('cmCompEndDate', { separator: '-' });
		
		$('cmDateOpt1').addEvent('click', function(e){ $('cmCompEndDate').disabled = false; $('cmCompEndDateInput').removeClass('invisible'); });
		$('cmDateOpt2').addEvent('click', function(e){ $('cmCompEndDate').disabled = true; $('cmCompEndDateInput').addClass('invisible'); });
		$('cmDateOpt3').addEvent('click', function(e){ $('cmCompEndDate').disabled = true; $('cmCompEndDateInput').addClass('invisible'); });
		
		$('cmPriceOpt1').addEvent('click', function(e){ $('cmCompPricePool').disabled = false; $('cmCompPricePoolInput').removeClass('invisible'); });
		$('cmPriceOpt2').addEvent('click', function(e){ $('cmCompPricePool').disabled = true; $('cmCompPricePoolInput').addClass('invisible'); });
		$('cmPriceOpt3').addEvent('click', function(e){ $('cmCompPricePool').disabled = true; $('cmCompPricePoolInput').addClass('invisible'); });
		
		$('cmWinnersOpt1').addEvent('click', function(e){ $('cmCompNumWinners').disabled = false; $('cmCompNumWinnersInput').removeClass('invisible'); });
		$('cmWinnersOpt2').addEvent('click', function(e){ $('cmCompNumWinners').disabled = true; $('cmCompNumWinnersInput').addClass('invisible'); });
		$('cmWinnersOpt3').addEvent('click', function(e){ $('cmCompNumWinners').disabled = true; $('cmCompNumWinnersInput').addClass('invisible'); });
		
		$('cmIsLinkedOpt1').addEvent('click', function(e){
			$('cmCompLinkedURL').disabled = false;
			$('cmCompIsLinkedInput').removeClass('hidden');
			$('notLinkedText').addClass('hidden');
		});
		
		$('cmIsLinkedOpt2').addEvent('click', function(e){
			$('cmCompLinkedURL').disabled = true;
			$('cmCompIsLinkedInput').addClass('hidden');
			$('notLinkedText').removeClass('hidden');
		});
		
		$('cmCompCountriesProvincesOpt1').addEvent('click', function(e){
			$('cmCompProvincesSubEntryBox').addClass('hide');
			$('cmCompCountriesSubEntryBox').removeClass('hide');
			
			//$('cmCompIncludeQuebec').checked = true;
			//$('cmCompExcludeQuebec').checked = false;
			$('cmCompExcludeQuebec').checked = true;
			
			resetProvinces();
			selectProvinces(true);
		});
		
		$('cmCompCountriesProvincesOpt2').addEvent('click', function(e){
			$('cmCompCountriesSubEntryBox').addClass('hide');
			$('cmCompProvincesSubEntryBox').removeClass('hide');
			
			//$('cmCompIncludeQuebec').checked = false;
			$('cmCompExcludeQuebec').checked = true;
			
			resetProvinces();
		});
		
		$('cmCompExcludeQuebec').addEvent('click', function(e){
			resetProvinces();
			selectProvinces();
		});
		
		/*
		$('cmCompIncludeQuebec').addEvent('click', function(e){
			resetProvinces();
			selectProvinces(true);
		});
		*/
		
		/*
		$('quebecProvince').addEvent('click', function(e){
			if($('quebecProvince').checked){
				$('cmCompIncludeQuebec').checked = true;
				$('cmCompExcludeQuebec').checked = false;
			}else{
				$('cmCompIncludeQuebec').checked = false;
				$('cmCompExcludeQuebec').checked = true;
			}
		});
		*/
	}
	
	/*var biggest_contestsGroup = "0px";
	$$('.content').each(function(contestsGroup) {
		if(contestsGroup.getStyle('height') > biggest_contestsGroup) {
			biggest_contestsGroup = contestsGroup.getStyle('height');
		}
	});
	$$('.content').each(function(contestsGroup) {
		contestsGroup.setStyle('height', biggest_contestsGroup);
	});*/
	
	
	/* Competition stuff */
	if($$('.backToTop')){
		$$('.backToTop').each(function(toTopBtn){
			backToTopHndlr(toTopBtn);
		});
	}
	
	if($$('.shareOnFacebook')){
		$$('.shareOnFacebook').each(function(facebookBtn){
			fbLinkHndlr(facebookBtn);
		});
	}
	
	assignPrefEventHndlr();
	
	var entered = $$('.competitionBox .compPref .updatePrefEntered');
	entered.each(function(enteredBtn){
		prefTickHndlr(enteredBtn);
	});
	
	var notInterested = $$('.competitionBox .compPref .updatePrefNotInterested');
	notInterested.each(function(notInterestedBtn){
		prefCrossHndlr(notInterestedBtn);
	});
	
	setupToolTips();
	
	$$('.loginRequired').each(function(item){
		new loginRequiredItem(item);
	});
});



/**
 **************************************************************************************
 * TICK & CROSS FUNCTIONS
 **************************************************************************************
 */
function assignPrefEventHndlr(){
	$$('.remiderRecurrence').each(function(item){
		item.addEvent('click', function(e){
			addRemiderRecurrenceEvent(item);
		});
	});
	
	/*$$('.confirmOnce').each(function(item){
		item.addEvent('click', function(e){
			addConfirmOnceEvent(item);
		});
	});*/
	
	$$('.cancelPrefTick').each(function(item){
		item.addEvent('click', function(e){
			addCancelPrefTickEvent(item);
		});
	});
}

function addRemiderRecurrenceEvent(item){
	item.getParent().getPrevious('.entered').getElement('input').value = "1";
	item.getParent().getPrevious('.entered').addClass('enteredEnabled');
	// Send ajax request to update user pref
	var params =
		"pid=" + item.getParent().getPrevious('.entered').getPrevious('input').value +
		"&tick=" + item.getParent().getPrevious('.entered').getElement('input').value +
		"&recurrence=" + item.value;
	
	var req = new Request({
		method: 	'post',
		url: 		'/wp-content/plugins/competitions-manager/includes/ajax/update-pref.ajax.php',
		data: 		params,
		onSuccess: 	function(){
			// Hide the box
			item.getParent().addClass('hidden');
			// Hide the competition box
			hideCompetition(item.getParent().getParent().getParent(), 'tick');
			item.getParent().getPrevious('a.updatePrefEntered').setProperty('title', 'Unmark as Entered');
		}
	}).send();
}

function addConfirmOnceEvent(item){
	item.getParent().getPrevious('.entered').getElement('input').value = "1";
	item.getParent().getPrevious('.entered').addClass('enteredEnabled');
	// Send ajax request to update user pref
	var params =
		"pid=" + item.getParent().getPrevious('.entered').getPrevious('input').value +
		"&tick=" + item.getParent().getPrevious('.entered').getElement('input').value +
		"&recurrence=never";
	
	var req = new Request({
		method: 	'post',
		url: 		'/wp-content/plugins/competitions-manager/includes/ajax/update-pref.ajax.php',
		data: 		params,
		onSuccess: 	function(){
			// Hide the box
			item.getParent().addClass('hidden');
			// Hide the competition box
			hideCompetition(item.getParent().getParent().getParent(), 'tick');
			item.getParent().getPrevious('a.updatePrefEntered').setProperty('title', 'Unmark as Entered');
		}
	}).send();
}

function addCancelPrefTickEvent(item){
	item.getParent().addClass('hidden');
}

function hideCompetition(competitionBox, type){
	// Hide competition if hide entered is checked
	var check = null;
	
	if(type == 'tick'){
		check = $('cmFilterDisplayOption1');
	}else if(type == 'cross'){
		check = $('cmFilterDisplayOption2');
	}
	
	if(check != null){
		if(check.checked){
			// Check google ads
			var prevEl = competitionBox.getPrevious();
			var nextEl = competitionBox.getNext();
			
			if(prevEl && nextEl){
				if(prevEl.hasClass('googleLine') && nextEl.hasClass('googleAdSecene')){
					var prevGoogleAd = prevEl.getPrevious();
					
					new Fx.Reveal(
						prevGoogleAd,
						{
							onHide: function(e){
								prevGoogleAd.destroy();
								prevEl.destroy();
							}.bind(this)
						}
					).dissolve();
				}
			}
			
			new Fx.Reveal(
				competitionBox,
				{
					onHide: function(e){
						competitionBox.destroy();
					}.bind(this)
				}
			).dissolve();
			
			
			// Load a new competition
			var displayFilter = "";

			$$('.cmFilterDisplay').each(function(checkbox){
				if(checkbox.checked){
					displayFilter += "&displayFilter[]=" + checkbox.value;
				}
			});
			var params = 
				"currentPage=" + $('cmCurrentPage').value +
				displayFilter +
				"&filterType=" + $('cmFilterType').value +
				"&filterOrder=" + $('cmFilterOrder').value +
				"&categoryId=" + $('cmCategoryId').value;
			
			var compReq = new Request({
				method:	'post',
				url:	'/wp-content/themes/win-free-stuff/includes/archive_competitions.php',
				data:	params,
				onSuccess: function(responseText, responseXML){
					var response = new Element('div').set('html', responseText);
					
					// Check for content
					if(response.getElement('.competitionBox') && response.getElement('.compsListNav')){
						var lastComp = response.getElement('.competitionBox');
						var paging = response.getElement('.compsListNav');
						//var debug = response.getElement('.debug');
						
						backToTopHndlr(lastComp.getElement('.backToTop'));
						fbLinkHndlr(lastComp.getElement('.shareOnFacebook'));
						prefTickHndlr(lastComp.getElement('.compPref .updatePrefEntered'));
						prefCrossHndlr(lastComp.getElement('.compPref .updatePrefNotInterested'));
					
						if(lastComp.getElement('.remiderRecurrence')){
							lastComp.getElement('.remiderRecurrence').addEvent('click', function(e){
								addRemiderRecurrenceEvent(this);
							});
						}
						
						if(lastComp.getElement('.confirmOnce')){
							lastComp.getElement('.confirmOnce').addEvent('click', function(e){
								addConfirmOnceEvent(this);
							});
						}

						lastComp.getElement('.cancelPrefTick').addEvent('click', function(e){
							addCancelPrefTickEvent(this);
						});
						
						lastComp.getChildren('.loginRequired').each(function(loginItem){
							new loginRequiredItem(loginItem);
						});
						
						lastComp.inject($('compListing'));
						
						var compsListNav = $$('.compsListNav');
						compsListNav[0].empty();
						paging.inject(compsListNav[0]);
					}
				}
			});
			compReq.send();
		}
	}
}

function displayBox(tickEl, prefBoxEl){
	if(tickEl.getElement('input').value == "1"){
		// remove tick
		tickEl.removeClass('enteredEnabled');
		tickEl.getElement('input').value = "0";
		
		// Send ajax
		var params =
			"pid=" + tickEl.getPrevious('input').value +
			"&tick=" + tickEl.getElement('input').value +
			"&recurrence=default";
		
		var req = new Request({
			method: 	'post',
			url: 		'/wp-content/plugins/competitions-manager/includes/ajax/update-pref.ajax.php',
			data: 		params,
			onSuccess: 	function(){
				tickEl.setProperty('title', 'Mark as Entered');
			}
		}).send();
		
	}else{
		// tick
		if(!prefBoxEl.getElement('.confirmOnce')){
			prefBoxEl.removeClass('hidden');
			
		}else{
			tickEl.getElement('input').value = "1";
			tickEl.addClass('enteredEnabled');
			
			// Send ajax request to update user pref
			var params =
				"pid=" + tickEl.getPrevious('input').value +
				"&tick=" + tickEl.getElement('input').value +
				"&recurrence=never";
			
			var req = new Request({
				method: 	'post',
				url: 		'/wp-content/plugins/competitions-manager/includes/ajax/update-pref.ajax.php',
				data: 		params,
				onSuccess: 	function(){
					// Hide the competition box
					hideCompetition(tickEl.getParent().getParent(), 'tick');
					tickEl.setProperty('title', 'Unmark as Entered');
				}
			}).send();
		}
	}
}

function backToTopHndlr(el){
	el.addEvent('click', function(e){
		e.stop();
		
		new Fx.Scroll(window, {
			wait: false,
			duration: 1000,
			transition: Fx.Transitions.Quad.easeInOut
		}).toTop();
	});
}

function fbLinkHndlr(el){
	el.addEvent('click', function(e){
		e.stop();
		
		u = el.href;
		// get H2 text
		t = el.getParent().getParent().getFirst().get('text');
		window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
		
	});
}

function prefTickHndlr(el){
	el.addEvent('click', function(e){
		e.stop();
		// Select default
		var remiderRecurrence = el.getNext('.prefTickReminder').getElement('.remiderRecurrence');
		if(remiderRecurrence != null){
			remiderRecurrence.selectedIndex = 0;
		}
		
		displayBox(el, el.getNext('.prefTickReminder'));
	});
}

function prefCrossHndlr(el){
	el.addEvent('click', function(e){
		e.stop();
		
		if(el.getElement('input').value == "1"){
			el.removeClass('notInterestedEnabled');
			
			el.getElement('input').value = "0";
			
			var params = "pid=" + el.getPrevious('input').value + "&cross=" + el.getElement('input').value;
			
			var req = new Request({
				method: 	'post',
				url: 		'/wp-content/plugins/competitions-manager/includes/ajax/update-pref.ajax.php',
				data: 		params,
				onSuccess: 	function(){
					el.setProperty('title', "Mark as Not Interested");
				}
			}).send();
			
		}else{
			el.addClass('notInterestedEnabled');
			
			el.getElement('input').value = "1";
			
			var params = "pid=" + el.getPrevious('input').value + "&cross=" + el.getElement('input').value;
			
			var req = new Request({
				method: 	'post',
				url: 		'/wp-content/plugins/competitions-manager/includes/ajax/update-pref.ajax.php',
				data: 		params,
				onSuccess: 	function(){
					// Hide the competition box
					hideCompetition(el.getParent().getParent(), 'cross');
					el.setProperty('title', "Unmark as Not Interested");
				}
			}).send();
		}
	});
}


/**
 **************************************************************************************
 * GLOBALS FUNCTIONS
 **************************************************************************************
 */
function setupToolTips() {
	tooltip = new Element('div',{
		id: 'tooltip'
	});
	tooltip.inject(document.body);
	tooltip.setStyle('opacity', '0');
}


/**
 **************************************************************************************
 * FORMS FUNCTIONS
 **************************************************************************************
 */
function resetProvinces(){
	var selectedProvincesCheckBoxes = $('addCompetitionForm').elements['cm_comp_provinces[]'];

	for(var i = 0; i < selectedProvincesCheckBoxes.length; i++){
		selectedProvincesCheckBoxes[i].checked = false;
	}
}

function selectProvinces(){
	var selectedProvincesCheckBoxes = $('addCompetitionForm').elements['cm_comp_provinces[]'];
	
	for(var i = 0; i < selectedProvincesCheckBoxes.length; i++){
		selectedProvincesCheckBoxes[i].checked = true;
	}
}

function validateShareCompetitionForm(frm){
	var isReady = true;
	
	if(isStringEmpty(frm.share_from_name.value)){
		isReady = false;
		$('shareFromNameEntryBox').addClass('error');
	}else{
		$('shareFromNameEntryBox').removeClass('error');
	}
	
	if(isStringEmpty(frm.share_receiver_email.value)){
		isReady = false;
		$('shareReceiverEmailEntryBox').addClass('error');
	}else{
		$('shareReceiverEmailEntryBox').removeClass('error');
	}
	
	if(isReady){
		return true;
	}
	
	return false;
}

function validateAddCompetitionForm(frm){
	var isReady = true;
	var addCompError = "<p>Please make sure these fields are entered correctly:</p><br/><ul>";
	
	if(isStringEmpty(frm.cm_comp_title.value) || !isStringLengthOK(frm.cm_comp_title.value)){
		isReady = false;
		addCompError += "<li>Title of the competition must be less than 85 characters</li>";
		$('cmCompTitleEntryBox').addClass('error');
	}else{
		$('cmCompTitleEntryBox').removeClass('error');
	}
	
	var tinymceContent = tinyMCE.get('cmCompDesc').getContent();
	
	if(isStringEmpty(tinymceContent)){
		isReady = false;
		addCompError += "<li>Description of the competition is empty</li>";
		$('cmCompDescEntryBox').addClass('error');
	}else{
		$('cmCompDescEntryBox').removeClass('error');
	}
	
	var selectedEndDateType;
	
	for(var i = 0; i < frm.cm_comp_end_date_type.length; i++){
		if(frm.cm_comp_end_date_type[i].checked){
			selectedEndDateType = frm.cm_comp_end_date_type[i].value;
		}
	}
	
	if(selectedEndDateType == 0){
		if(!isDate(frm.cm_comp_end_date.value)){
			isReady = false;
			addCompError += "<li>Closing Date format is incorrect</li>";
			$('cmCompEndDateEntryBox').addClass('error');
		}else{
			$('cmCompEndDateEntryBox').removeClass('error');
		}
	}else if(selectedEndDateType == 1){
		$('cmCompEndDateEntryBox').removeClass('error');
	}else if(selectedEndDateType == 2){
		$('cmCompEndDateEntryBox').removeClass('error');
	}
	
	var selectedPricePoolType;
	
	for(var i = 0; i < frm.cm_comp_price_pool_type.length; i++){
		if(frm.cm_comp_price_pool_type[i].checked){
			selectedPricePoolType = frm.cm_comp_price_pool_type[i].value;
		}
	}
	
	if(selectedPricePoolType == 0){
		if(isStringEmpty(frm.cm_comp_price_pool.value) || !isWholeNumber(frm.cm_comp_price_pool.value)){
			isReady = false;
			addCompError += "<li>Total Prize Pool Value is empty</li>";
			$('cmCompPricePoolEntryBox').addClass('error');
		}else{
			$('cmCompPricePoolEntryBox').removeClass('error');
		}
	}else if(selectedPricePoolType == 1){
		$('cmCompPricePoolEntryBox').removeClass('error');
	}else if(selectedPricePoolType == 2){
		$('cmCompPricePoolEntryBox').removeClass('error');
	}
	
	var selectedNumOfWinnersType;
	
	for(var i = 0; i < frm.cm_comp_num_winners_type.length; i++){
		if(frm.cm_comp_num_winners_type[i].checked){
			selectedNumOfWinnersType = frm.cm_comp_num_winners_type[i].value;
		}
	}
	
	if(selectedNumOfWinnersType == 0){
		if(isStringEmpty(frm.cm_comp_num_winners.value) || !isWholeNumber(frm.cm_comp_num_winners.value)){
			isReady = false;
			addCompError += "<li>No. of Winners is empty</li>";
			$('cmCompNumWinnersEntryBox').addClass('error');
		}else{
			$('cmCompNumWinnersEntryBox').removeClass('error');
		}
	}else if(selectedNumOfWinnersType == 1){
		$('cmCompNumWinnersEntryBox').removeClass('error');
	}else if(selectedNumOfWinnersType == 2){
		$('cmCompNumWinnersEntryBox').removeClass('error');
	}
	
	if(isStringEmpty(frm.cm_comp_entry_source.value)){
		isReady = false;
		addCompError += "<li>The name of the site the competition is located is empty</li>";
		$('cmCompEntrySourceEntryBox').addClass('error');
	}else{
		$('cmCompEntrySourceEntryBox').removeClass('error');
	}
	
	if(!containHTTP(frm.cm_comp_url.value)){
		isReady = false;
		addCompError += "<li>The url must contain http:// or https://</li>";
		$('cmCompUrlEntryBox').addClass('error');
	}else{
		$('cmCompUrlEntryBox').removeClass('error');
	}
	
	var selectedIsLinked;

	for(var i = 0; i < frm.cm_comp_is_linked.length; i++){
		if(frm.cm_comp_is_linked[i].checked){
			selectedIsLinked = frm.cm_comp_is_linked[i].value;
		}
	}
	
	if(selectedIsLinked == 0){
		$('cmCompIsLinkedEntryBox').removeClass('error');
	}else if(selectedIsLinked = 1){
		if(isStringEmpty(frm.cmCompLinkedURL.value)){
			isReady = false;
			addCompError += "<li>The url of your site is empty</li>";
			$('cmCompIsLinkedEntryBox').addClass('error');
		}else{
			$('cmCompIsLinkedEntryBox').removeClass('error');
		}
	}
	
	var selectedCountryProvinceSeletor;

	for(var i = 0; i < frm.cm_comp_country_province_selector.length; i++){
		if(frm.cm_comp_country_province_selector[i].checked){
			selectedCountryProvinceSeletor = frm.cm_comp_country_province_selector[i].value;
		}
	}
	
	var selectedProvincesCount = 0;
	var selectedProvincesCheckBoxes = frm.elements['cm_comp_provinces[]'];

	for(var i = 0; i < selectedProvincesCheckBoxes.length; i++){
		if(selectedProvincesCheckBoxes[i].checked){
			selectedProvincesCount++;
		}
	}

	if(selectedProvincesCount == 0){
		isReady = false;
		addCompError += "<li>No province is selected</li>";
		$('cmCompProvincesSubEntryBox').addClass('error');
	}else{
		$('cmCompProvincesSubEntryBox').removeClass('error');
	}
	
	addCompError += "</ul>";
	
	if(!isReady){
		new Fx.Scroll(window, {	wait: false,
								duration: 1500,
								transition: Fx.Transitions.Quad.easeInOut}).toTop();
		
		$('AddContestError').set('html', addCompError);
		$('AddContestError').addClass("errorText");
		
		return false;
		
	}else{
		$('AddContestError').set('html', '');
		$('AddContestError').removeClass("errorText");
		
		return true;
	}
}

function validateUpdatePasswordForm(frm){
	var isReady = true;

	if(isStringEmpty(frm.cm_user_new_password.value)){
		isReady = false;
		$('cmUserNewPasswordEntryBox').addClass('error');
	}else{
		$('cmUserNewPasswordEntryBox').removeClass('error');
	}

	if(isStringEmpty(frm.cm_user_retype_password.value)){
		isReady = false;
		$('cmUserRetypePasswordEntryBox').addClass('error');
	}else{
		$('cmUserRetypePasswordEntryBox').removeClass('error');
	}
	
	if(isReady){
		if(frm.cm_user_new_password.value != frm.cm_user_retype_password.value){
			isReady = false;
			$('cmUserNewPasswordEntryBox').addClass('error');
			$('cmUserRetypePasswordEntryBox').addClass('error');
		}else{
			$('cmUserNewPasswordEntryBox').removeClass('error');
			$('cmUserRetypePasswordEntryBox').removeClass('error');
		}
	}
	
	if(isReady){
		return true;
	}
	
	return false;
}

function validateNewsletterForm(frm){
	var isReady = true;
	var isEmailReady = true;
	var signUpError = "<p>Please make sure these fields are entered correctly:</p><br/><ul>";
	
	if(!isEmail(frm.cm_email.value)){
		isReady = false;
		isEmailReady = false;
		signUpError += "<li>E-mail is invalid.</li>";
		$('cmEmailEntryBox').addClass('error');
	}else{
		$('cmEmailEntryBox').removeClass('error');
	}
	
	if(!isEmail(frm.cm_repeat_email.value)){
		isReady = false;
		isEmailReady = false;
		signUpError += "<li>Confirmation e-mail is invalid.</li>";
		$('cmRepeatEmailEntryBox').addClass('error');
	}else{
		$('cmRepeatEmailEntryBox').removeClass('error');
	}
	
	if(isEmailReady){
		if(frm.cm_email.value != frm.cm_repeat_email.value){
			isReady = false;
			signUpError += "<li>E-mail and Confirmation e-mail does not match.</li>";
			$('cmEmailEntryBox').addClass('error');
			$('cmRepeatEmailEntryBox').addClass('error');
		}else{
			$('cmEmailEntryBox').removeClass('error');
			$('cmRepeatEmailEntryBox').removeClass('error');
		}
	}
	
	if(isStringEmpty(frm.cm_first_name.value)){
		isReady = false;
		signUpError += "<li>First Name is empty.</li>";
		$('cmFirstNameEntryBox').addClass('error');
	}else{
		$('cmFirstNameEntryBox').removeClass('error');
	}
	
	if(frm.cm_agreement.checked == false){
		isReady = false;
		signUpError += "<li>Please tick the agreement.</li>";
		$('cmAgreementEntryBox').addClass('error');
	}else{
		$('cmAgreementEntryBox').removeClass('error');
	}
	
	signUpError += "<ul>";
	
	if(!isReady){
		new Fx.Scroll(window, {	wait: false,
								duration: 1500,
								transition: Fx.Transitions.Quad.easeInOut}).toTop();
		
		$('signUpError').set('html', signUpError);
		$('signUpError').addClass("errorText");
		
		return false;
		
	}else{
		$('signUpError').set('html', '');
		$('signUpError').removeClass("errorText");
		
		return true;
	}
}

function isStringEmpty(str){
	if(str == ""){ return true; }
	
	return false;
}


function isStringLengthOK(str){
	if(str.length <= 85){ return true; }
	
	return false;
}

function isDate(date){
	var reDate = /^\d{2}-[a-zA-Z]{3}-\d{4}$/;
	
	if(reDate.test(date)){
		return true;
	}
	
	return false;
}

function isEmail(email){
	var reEmail = /^.+@.+\..+$/;
	
	if(reEmail.test(email)){
		return true;
	}
	
	return false;
}

function isWholeNumber(number){
	var reWholeNum = /^\d+$/;
	
	if(reWholeNum.test(number)){
		return true;
	}
	
	return false;
}

function containHTTP(url){
	if(url.search(/http:\/\/|https:\/\//i) != -1){
		return true;
	}
	
	return false;
}


/**
 **************************************************************************************
 * SLIDE SHOW
 **************************************************************************************
 */
var featuredSlideshow;
var featuredContestAds;
var numFeaturedAds;
var featureAdsWidth;
var currentFeatureAdIndex;
var featuredSlideshowTimer;
var featureControllers;

function initSlideShow(){
	featuredSlideshow = new Fx.Scroll('contestsWrap', {
        wait: false,
        duration: 500,
        transition: Fx.Transitions.Quad.easeInOut
    });
	
	featuredContestAds = $$('div#featuredContests div.contest');
	numFeaturedAds = featuredContestAds.length;
	featureAdsWidth =	Number(featuredContestAds[0].getStyle('width').replace(/px/, "")) +
						Number(featuredContestAds[0].getStyle('margin-left').replace(/px/, "")) +
						Number(featuredContestAds[0].getStyle('margin-right').replace(/px/, ""));
						
	currentFeatureAdIndex = 0;
	
	// add listener for controllers
	$('prevFeature').addEvent('click', function(e){
		e.stop();
		
		stopSlideShow();
		
		featureControllers[currentFeatureAdIndex].removeClass('current');
		
		currentFeatureAdIndex--;

		if(currentFeatureAdIndex < 0){
			currentFeatureAdIndex = numFeaturedAds - 1;
		}
		
		featureControllers[currentFeatureAdIndex].addClass('current');
		
		var nextPos = currentFeatureAdIndex * featureAdsWidth;
		featuredSlideshow.start(nextPos, 0);
		
		startSlideShow();
	});
	
	
	$('nextFeature').addEvent('click', function(e){
		e.stop();
		
		stopSlideShow();
		
		featureControllers[currentFeatureAdIndex].removeClass('current');
		
		currentFeatureAdIndex++;

		if(currentFeatureAdIndex > numFeaturedAds - 1){
			currentFeatureAdIndex = 0;
		}
		
		featureControllers[currentFeatureAdIndex].addClass('current');
		
		var nextPos = currentFeatureAdIndex * featureAdsWidth;
		featuredSlideshow.start(nextPos, 0);
		
		startSlideShow();
	});
	
	
	featureControllers = $$('#featuredContestsControlsTop a');
	
	featureControllers.each(function(featureController){
		featureController.addEvent('click', function(e){
			e.stop();
			
			stopSlideShow();
			
			featureControllers[currentFeatureAdIndex].removeClass('current');
			featureController.addClass('current');

			currentFeatureAdIndex = Number(featureController.getElement('span').get('text'));
			
			var nextPos = currentFeatureAdIndex * featureAdsWidth;
			featuredSlideshow.start(nextPos, 0);

			startSlideShow();
		});
	});
	
	featureControllers[currentFeatureAdIndex].addClass('current');
	
	startSlideShow();
}

function startSlideShow(){
	// timer every 10 seconds
	featuredSlideshowTimer = window.setInterval('rotateSlideShow()', 10000);
}

function stopSlideShow(){
	featuredSlideshowTimer = window.clearInterval(featuredSlideshowTimer);
}

function rotateSlideShow(){
	featureControllers[currentFeatureAdIndex].removeClass('current');
	
	currentFeatureAdIndex++;

	if(currentFeatureAdIndex > numFeaturedAds - 1){
		currentFeatureAdIndex = 0;
	}
	
	featureControllers[currentFeatureAdIndex].addClass('current');

	var nextPos = currentFeatureAdIndex * featureAdsWidth;
	featuredSlideshow.start(nextPos, 0);
}