/**************************************************

Filename:		global.js
Date Modified:	August 8, 2011
Modified By:	John O'Neill

Dependencies:	

Description:	Global javascript functions

**************************************************/

// Create namespace and specify some meta-information
Global = {};
Global.NAME = "Global";
Global.VERSION = 1.0;

/**************************************************/

/**************************************************

Declare constants

/**************************************************/

Global.SIMPLE_GEO_KEY = '7wPDZ37GmmPWL93gu4Afvb36Lfh2Czdv';

/**************************************************

Window resize listener

/**************************************************/

$(document).ready(function(){

	$(window).resize(function(){

		var docHeight = parseInt($(document).height());
		var mainHeight = parseInt($('#main').height()); 
		var larger = (docHeight > mainHeight) ? docHeight : mainHeight; 
		
		$('html').css('min-height',larger);
		$('body').css('min-height',larger);
		$('#backwrap1').css('min-height',larger);
		$('#backwrap2').css('min-height',larger);
		$('#sitewrap').css('min-height',larger);

	})

	/******/

	// finds input fields
	var inputs = $('input:text');
	var length = inputs.length;

	// goes through text inputs on page
	// if element has defaultVal attribute, 
	// append Global onfocus & onblur methods
	for (var i = 0; i < length; i++)
	{
		var e = inputs[i];
		var defaultText = e.getAttribute('data-defaultVal');

		if (defaultText)
		{
			$(e).val(defaultText);
		}
			
		// only goes through input fields with a defaultVal
		if (!defaultText) continue;

		$(e).css('color', '#c7c7c7');

		var onfocusContent = $(e).attr('onfocus');
		if ((onfocusContent != undefined) && (onblurContent != ''))
		{
			var finalChar = onfocusContent.charAt(onfocusContent.length-1);
			if (!(finalChar === ';')) 
				onfocusContent = onfocusContent.concat(';');
		}
		else
			onfocusContent = '';

		$(e).attr('onfocus',onfocusContent+'Global.textInputOnFocus(this);');

		var onblurContent = $(e).attr('onblur');
		if ((onblurContent != undefined) && (onblurContent != ''))
		{
			var finalChar = onblurContent.charAt(onblurContent.length-1);
			if (!(finalChar === ';')) 
				onblurContent = onblurContent.concat(';');
		}
		else
			onblurContent = '';
			
		$(e).attr('onblur',onblurContent+'Global.textInputOnBlur(this);');
	}
	
	

})

window.onload = function() {

	// resizes the site's various wrappers and 
	// containers to ensure that sizes/backgrounds
	// are not shortened by amount of content
	var docHeight = $(document).height();
	var mainHeight = $('#main').height();

	var larger = (docHeight > mainHeight) ? docHeight : mainHeight;

	$('html').css('min-height',larger);
	$('body').css('min-height',larger);
	$('#backwrap1').css('min-height',larger);
	$('#backwrap2').css('min-height',larger);
	$('#sitewrap').css('min-height',larger);

}

// Handle account tab
$(function() {
	$('#accountLink').bind('click', function() {
		var dropdown = $('#accountDropdown');
		dropdown.toggle();
		$(document).one('click', function() {
			//if (dropdown.is(':visible'))
			//	dropdown.toggle();
		});
	});
});

/**************************************************

Advertisements

/**************************************************/

$(document).ready(function() {
	// Declare vars
	var pageHeight = '';
	var container = '';
	var areAdsLoaded = false;
	
	// Force advertisement container placement
	$(window).bind('resize', function() {
	//alert("Javascript call to adds");
		container = $('.ad-container');
		var containerWidth = parseInt(container.width());
		var page = $('.page'); 
		// Set page dimensions
		pageHeight = parseInt(page.height());
		var pageWidth = parseInt(page.width());
		var pagePos = page.offset();
		var pageLeft = parseInt(pagePos.left); 
		
		if (pageLeft < containerWidth + 15) {
			container.hide();
		} 
		else {
			container.show();
		}
		var pageTop = pagePos.top;
		var newLeft = pageLeft + pageWidth; // + 1 + 15;
		var newTop = pageTop + 300;
		container.css('left', newLeft);
		//container.css('top', newTop);
		if (!areAdsLoaded) {
			
			// Load advertisements
			// Call ajax
			$.ajax({
				url: './ajax/adAjax.php',
				type: 'get', 
				data: {
			    	action: 'getAds',
			    	pageHeight: pageHeight
			    },
				dataType: 'html',
				success: function(response) {
				
			    	container.html(response);
				}
			});
			areAdsLoaded = true;
		}
	});
	$(window).trigger('resize');
});

/**************************************************

Global function for display ajax feedback.
For example, feedback saying that a message was saved

/**************************************************/

Global.ajaxFeedback = function(element, opts) {
	// Set initial options
	var opts = $.extend(
	    {
	    	msg: 'Saved',
	    	delay: 1000,
	    	addClass: '',
	    	removeClass: ''
	    },
	    opts || {}
	);
	element.hide().html(opts.msg).fadeIn('fast').delay(opts.delay).fadeOut('fast')
		.removeClass(opts.removeClass).addClass(opts.addClass);
}

/**************************************************

If user leaves input field empty, replace value
with textfield's defaultVal. If user types in info, 
do not replace with defaultVal.

/**************************************************/

Global.textInputOnFocus = function(e)
{
	var defaultText = e.getAttribute("data-defaultVal");
	if (!defaultText) return false;

	var value = jQuery.trim(e.value);

	// only reset if input value is default value
	if (value == defaultText)
		e.value='';

	// formatting for altered input fields
	if ($(e).attr('id') != 'globalSearch') {	// disable effect for certain fields
		$(e).css('color', '#5E5E5E');
	}
	$(e).addClass('inputFieldChanged');

	return false;
}

Global.textInputOnBlur = function(e)
{
	var defaultText = e.getAttribute("data-defaultVal");
	if (!defaultText) return false;

	var value = jQuery.trim(e.value);

	// only reset if input value is empty
	if (value == '')
	{
		$(e).removeClass('inputFieldChanged');
		$(e).css('color', '#c7c7c7');
		e.value = defaultText;
	}
	
	return false;
}

// escape string of special HTML characters
Global.escapeHTML = function(unsafeString)
{
	return unsafeString
      		.replace(/&/g, "&amp;")
      		.replace(/</g, "&lt;")
      		.replace(/>/g, "&gt;")
      		.replace(/"/g, "&quot;")
      		.replace(/'/g, "&#039;");
}

$(document).ready(function() {
	/* This is basic - uses default settings */
	$("a#prompt").fancybox({
		'type'	      : 'ajax',
		'scrolling'   : 'no',
		'overlayShow' : false,
		'showCloseButton' : false,
		'transitionIn' : 'none',
		'transitionOut' : 'none',
		'autoDimensions' : true
	}); 
});



//This is for the floating feedback button
$(document).ready(function() { 
	/* This is basic - uses default settings */ 
	$("a#feedbackButton").fancybox({
	    onComplete: function(){ 
			   $("#feedbackForm").bind('submit',function(){
				 var sPage = window.location.pathname;
				 var isAnonymous = $(this).find('input[name=isAnonymous]').is(':checked');
				 var sType = $(this).find('select').val();
				 var sMessage = $(this).find('textarea[name=message]').val();
				 if (sMessage == '') {
				 	return false;
				 }
				 
					//=====================================================================
					// Call ajax
					$.ajax({
						url: './ajax/feedbackAjax.php',
						type: 'post', 
						data: {
							action: 'processFeedback',
							type: sType,
							page: sPage,
							isAnonymous: isAnonymous,
							message: sMessage 
						},
						dataType: 'html',
						success: function(response) { 
							$.fancybox(response);
						}
					}); 
				 return false;
				 }); 
		},
		type : 'ajax'
	});
	

});

// Remove from array
(function($) {
	$.removeFromArray = function(value, arr) {
    	return jQuery.grep(arr, function(elem, index) {
        	return elem !== value;
    	});
    }
})(jQuery);

// Ajax setup
$.ajaxSetup({
	error: function(response) {
		console.log(response);
	}
}); 

function doThreadCategory(a){
 var b = $(a).children().text;
 alert(b);
}
