/**
 * global.js
 * @author Martin Bean <martin@digitalpop.co.uk>
 * @todo Minimize file when deploying on live server
 **/

$(document).ready(function() {
	// $(document).pngFix(); // global PNG fix
	initBBCode('textarea.bbcode');
	advancedSearch();
	advertiserForm();
	closeFacebox();
	commentsHover();
	commentsWall();
	confirmDelete();
	confirmLogout();
	// crudeAccordion();
	externalLinks();
	faqAnimation();
	// hoverClass();
	imageSwapper('#additional_review_images li a', '#main_review_image img');
	inputDefault('#login #username', 'Email address');
	inputDefault('#login #password', 'Password');
	inputDefault('#register #email', 'Email address');
	inputDefault('#register #first_name', 'First name');
	navigationFade();
	popupContent();
	// redeemProduct();
	smsDropdown();
	toggleBBLinkDropdown();
	validateSubmit('#update_status', '#new_status');
	// validateSubmit('form.comments', 'textarea[name="comment"]');
	// wallComments();
	
	$('.sifr').sifr({path:'yikes.swf'});
});

//
function advancedSearch() {
	var speed = 'fast';
	$('div#advanced_search').hide();
	$('a#show_advancedSearch').click(function() {
		if ($('a#show_advancedSearch').text() == 'More search options') {
			$('a#show_advancedSearch').text('Less search options');
		} else {
			$('a#show_advancedSearch').text('More search options');
		}
		$('div#advanced_search').slideToggle(speed);
		return false;
	});
};

//
function advertiserForm() {
	$('#enquire_form').hide();
	$('#enquire_button').show();
	$('#enquire_button').click(function() {
		$('#enquire_button').fadeTo(500, 0.01).slideUp();
		$('#enquire_form').slideDown();
		return false;
	});
};

//
function closeFacebox()
{
	$('a.close_window').click(function() {
		$.facebox.close();
		return false;
	});
};

// 
function commentsHover() {
	$('.wall li').each(function() {
		$(this).hover(function() {
			$(this).addClass('hover');
		}, function() {
			$(this).removeClass('hover');
		});
	});
};

//
function commentsWall() {
	var speed = 230;
	$('form.comments fieldset').hide();
	$('a.add_comment').click(function() {
		$('.wall fieldset').slideUp(speed);
		var targetElm = $(this).attr('href');
		var parentElm = $(targetElm).parent().parent();
		$(parentElm).fadeIn(speed);
		$(targetElm).focus();
		return false;
	});	
};

//
function confirmDelete() {
	$('a.delete').click(function() {
		return confirm('Are you sure you wish to delete this item?');
	});
};

// confirmation dialog when logout link is clicked
function confirmLogout() {
	$('a.logout, .logout a').click(function() {
		return confirm('Are you sure you wish to log out?');
	});
};

// makes a basic accordion out of an element
function crudeAccordion() {
	$('.crude_accordion fieldset').hide();
	$('.crude_accordion fieldset#basic_information, .crude_accordion fieldset.actions').show();
	$('.crude_accordion h2 a').click(function() {
		var url = this.href.split('#');
		var speed = 'fast';
		$('#' + url[1]).slideToggle(speed);
		return false;
	});
};

// opens external links in a new window; also applies a class and note to title attribute
function externalLinks() {
	$('a[rel=external], a[rel=advert]').each(function() {
		if ($(this).attr('title') == '') {
			var children = $(this).children();
			if ($(children[0]).is('img')) {
				var newTitle = $(children[0]).attr('alt');
			} else {
				var newTitle = $(this).html();
			}
			/*
			if ($(this).next().is('img')) {
				var newTitle = $(this).next().attr('alt');
			} else {
				var newTitle = $(this).html();
			}
			*/
		} else {
			var newTitle = $(this).attr('title');
		}
		newTitle += ' (opens in a new window)';
		$(this).attr('title', newTitle);
		$(this).addClass('external');
		$(this).click(function () {
			window.open($(this).attr('href'));
			return false;
		});
	});
};

//
function faqAnimation() {
	/*
	var speed = 'fast';
	$('.faq_content').hide();
	$('.faq_title').click(function() {
		$('.faq_content').slideUp(speed);
		$(this).next('.faq_content').slideDown(speed);
	});
	*/
};

//
function hoverClass() {
	$('#content *').hover(function() {
		$(this).addClass('hover');
	}, function() {
		$(this).removeClass('hover');
	});
};

//
function goTo(url) {
	window.location.href=url;
}

// swaps target image with thumb href
function imageSwapper(thumb, target) {
	$(thumb).click(function() {
		$(target).attr('src', this.href);
		return false;
	});
};

// 
function initBBCode(elm) {
	$('.bbcode_palette').show();
	$(elm).bbcodeeditor({
		bold:$('.bbcode_palette .bold'),
		italic:$('.bbcode_palette .italics'),
		underline:$('.bbcode_palette .underline'),
		//link:$('.bbcode_palette .url'),
		link:false,
		quote:$('.bbcode_palette .quote'),
		code:false,
		image:$('.bbcode_palette .image'),
		usize:false,
		dsize:false,
		nlist:false,
		blist:false,
		litem:false,
		back:false,
		forward:false,
		back_disable:'sprite e_back_disabled',
		forward_disable:'sprite e_forward_disabled',
		exit_warning:false,
		preview:false
	});
};

//
function inputDefault(element, defaultValue) {
	var loOpacity = 0.5;
	var hiOpacity = 1;
	var speed = 'fast';
	// sets input value to blank if the input contains the default value
	$(element).parents('form').submit(function() {
		if ($(element).val()==defaultValue) {
			$(element).val('');
		}
	});
	// if input is empty, sets value to default value
	if ($(element).val()=='') {
		$(element).fadeTo(speed, loOpacity);
		$(element).val(defaultValue);
	}
	// empties input on focus
	$(element).focus(function() {
		$(element).fadeTo(speed, hiOpacity);
		$(element).val('');
	});
	// sets input back to default value if empty on blur
	$(element).blur(function() {
		if ($(element).val()=='') {
			$(element).fadeTo(speed, loOpacity);
			$(element).val(defaultValue);
		}
	});
};

//
function insertBBLink(text, elm) {
	var val = $(elm).val();
	$(elm).val(val + ' ' + text);
	$('#insert_link').hide();
	$('.bbcode_palette a.url').toggleClass('hover');
	return false;
};

// inserts text into an element
function insertText(text, elm) {
	if ($(elm).is('textarea') || $(elm).is('input')) {
		// alert('elm is a textarea or input; inserting text ' + text);
		var currentVal = $(elm).val();
		$(elm).val(currentVal + text);
		return true;
	} else {
		return false;
	}
};

//
function launchGame(portNo, roomId, roomDescription, userId) {
	alert(
		'Port number is ' + portNo + "\r\n" +
		'Room ID is ' + portId + "\r\n" +
		'Room description is ' + roomDescription + "\r\n" +
		'user ID is ' + userId + "\r\n"
	);
	return false;
}

// 
function navigationFade() {
	return false;
};

//
function popupContent() {
	$('a[rel=popup]').click(function() {
		var target = (this.href + ' #content > *');
		var loading = $('<div id="popup_content"><div style="text-align:center;"><img src="' + facebox_img + 'loading.gif" /></div></div>');
		$(loading).load(target, null, function() {
			$.facebox(loading);
		});
		return false;
	});
};

//
function postAJAX(page, args, callback) {
	$.post(page, args, callback, 'json');
}

function redeemProduct(argument) {
	$.getJSON('http://127.0.0.1/woohoobingo.com/ajax/shop/redeem.php', function(data) {
		if (data.status == 'Success') {
			$('#purchase_status').addClass('success');
			$('#purchase_status p').html(data.title + ' purchased');
		} else {
			$('#purchase_status').html(data.status);
		}
	});
};

//
function reviewFeedback(review_id, member_id, type) {
	var destURL = 'http://woohoodev/ajax/review_feedback/' + review_id + '/' + member_id + '/' + type;
	// alert(scriptURL); return false;
	$.getJSON(destURL, function(data) {
		if (data.result==0) {
			alert(data.error);
		} else {
			// update positive total if required
			if (type=='positive') {
				var posElm = '#review_' + review_id + ' strong.positive';
				var posVal = $(posElm).html();
				var posNew = parseInt(posVal);
				posNew++;
				$(posElm).html(posNew);
			}
			// update total
			var totalElm = '#review_' + review_id + ' strong.total';
			var totalVal = $(totalElm).html();
			var totalNew = parseInt(totalVal);
			totalNew++;
			$(totalElm).html(totalNew);
		}
	});
};

//
function smsDropdown()
{
	var target = $('.sms_sub');
	if ($('#sms_signup:checked').length == 0) {
		$(target).hide();
	}
	$('#sms_signup').click(function() {
		$(target).slideToggle('fast');
	});
}

//
function toggleBBLinkDropdown() {
	var targetElm = "#insert_link";
	$(targetElm).hide();
	$('.bbcode_palette a.url').click(function() {
		$(targetElm).toggle();
		if ($(targetElm).is(':visible')) {
			$('.bbcode_palette a.url').addClass('hover');
		} else {
			$('.bbcode_palette a.url').removeClass('hover');
		}
	});
};

// disables submit button and halts form submission is required field is blank
function validateSubmit(formElm, fieldElm) {
	var submitButton = $(formElm + ' input[type=submit]');
	if ($(fieldElm).val()=='') {
		$(submitButton).attr('disabled', 'disabled');
		$(submitButton).addClass('disabled');
	}
	$(fieldElm).keyup(function() {
		if ($(fieldElm).val()=='') {
			$(submitButton).attr('disabled', 'disabled');
			$(submitButton).addClass('disabled');
		} else {
			$(submitButton).removeAttr('disabled');
			$(submitButton).removeClass('disabled');
		}
	});
	$(formElm).submit(function() {
		if ($(fieldElm).val()=='') {
			return false;
		} else {
			return true;
		}
	});
};

// this function is mint
function wallComments() {
	$('form.comments ol li').hide();
	$('form.comments ol li:last').show();
	
	// handle "View all" link being clicked
	$('.view_all_comments a').click(function() {
		var parentElm = $(this);
		$(parentElm + ' ol li').show();
		return false;
	})
};
