/* EVENTHANDLER FOR DOMONLOAD
 ADD FUNCTIONS THAT SHOULD RUN ON DOM LOAD
----------------------------------------------------*/
$(document).ready(function() {
	//##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>##
		
		String.prototype.capitalize = function(){ //v1.0
			return this.replace(/\w+/g, function(a){
				return a.charAt(0).toUpperCase() + a.substr(1).toLowerCase();
			});
		};
		
		/* z-index fix for IE 6 & 7 */
		$(function() {
			var zIndexNumber = 500;
			$('div#related').children().each(function() {
				$(this).css('zIndex', zIndexNumber);
				zIndexNumber -= 10;
			});
		});
		
		$('#quicksearch').TextfieldPlaceholders();
		$('#tools').InitTools();
		
		$('#nav').InitNavigation();
		$('#subscribe-email').InitSubscribePopup();
		$('#gtranslate').InitTranslationSerive();
		$('#login-box').InitLoginBox();
		$('#interviews').InitInterviews();
		$('#add-organisation').InitAddOrganisations();
		/* $('#external-resources').InitExternalResources(); */
		
		jQuery.preLoadImages(
			'/templates/gfx/bg-nav-overlay.png'
		);
		
	//##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>##
});

$(window).load(function() {
	// manage image promo area
	$('#promo').InitPromo();
});

/* INIT xForm
----------------------------------------------------*/
var xFormPages = 0;
var xFormActivePage = 1;
(function($) {
	$.fn.InitXform = function() {
		var form = $(this);
		
		if($('.edit-profile').length > 0)
			return;
		
		if($(this).find("hr").length < 1)
			return;
		
		if($('.xformvalidator').length > 0) {
			$('input, label').hide();
			$('.xformvalidator').each(function(){
				$(this).prev().show();
				if($(this).prev().prev().is('label'))
					$(this).prev().prev().show();
				else
					$(this).parent().parent().prev().find('label').show();
			});
			$("td hr").hide();
			$('#id_matrix').before("Please fill in these fields");
			return;
		}

		// SUBMIT BUTTON and RECAPTCHA
		
		$('#article').find("#recaptcha_widget_div").css("display","none");
		$('#article').find("'#recaptcha_widget_div").css("clear","both");
		// BUTTONS
		
		strButtons = '';
		strButtons += '<div id="group-nav-bottom"><a href="#" id="xFormPrev" class="prev" style="float:left;display:block;" onclick="$(\'#xform\').XformPage(-1);return false;">Prev</a>';
		strButtons += '<a href="#" id="xFormNext" class="next" style="float:right;display:block; text-align:right;" onclick="$(\'#xform\').XformPage(1);return false;">Next</a></div>';
		
		$('#article').find("'input[type=submit]").css("display","none");
		$('#article').find("'input[type=submit]").css("float","right");
		$('#article').find("'input[type=submit]").addClass("btn");

		$('#article').find("'input[type=submit]").before(strButtons);		

		$('#article').find("'input[type=submit]").appendTo("#group-nav-bottom");
		
		$('#xform').XformPage(0);
		
	};
	$.fn.XformPage = function(page) {
		
		xFormActivePage = xFormActivePage + page;
		//alert(xFormActivePage);
		var tblTr = $('#id_matrix').find("tr");

		var hRs = 1;
		tblTr.each(function(){
			if($(this).find("hr").length > 0) hRs++;
		});
		xFormPages = hRs;
		
		var hRs = 1;
		tblTr.each(function(){
			//alert(hRs +':'+ xFormActivePage);
			if(hRs == xFormActivePage) {
				$(this).css("display","block");
			}
			else {
				$(this).css("display","none");
			}
			if($(this).find("hr").length > 0) hRs++;
		});
		//alert(xFormPages +':'+ xFormActivePage);
		if(xFormPages == xFormActivePage) {
			$('#xFormNext').css("display","none");
			$('#article').find("'input[type=submit]").css("display","block");
			$('#article').find("#recaptcha_widget_div").css("display","block");			
		}
		else {
			$('#xFormNext').css("display","block");
			$('#article').find("'input[type=submit]").css("display","none");
			$('#article').find("#recaptcha_widget_div").css("display","none");			
		}
		
		if(xFormActivePage == 1) $('#xFormPrev').css("display","none");
		else $('#xFormPrev').css("display","block");
	};
})(jQuery);

/* INIT NAVIGATION
----------------------------------------------------*/
(function($) {
	$.fn.InitNavigation = function() {
		var nav = $(this);
		var navItem = nav.find('li');
		var closeTimeOut = null;
		nav.find('a').css('z-index', '999');
		navItem.bind('mouseenter',function(navEvent){
			
			var thisMenuItemId = $(this).find('a').attr('rel');
			var currMenuItemId = $('#nav-dropmenu').attr('class');
			
			$("#nav-dropmenu").css('z-index', '899');
			
			if(thisMenuItemId != currMenuItemId){
				$('#nav-dropmenu').fadeOut('fast').delay(500).remove();
				nav.find('li').removeClass('active');
				$(this).toggleClass('active');
				var maxOffset = 950;
				var pos = $(this).position();
				var leftOffset = pos.left;
				var menuId = $(this).find('a').attr('rel');
				var currNavItem = $('#menufolds .'+ menuId).clone();
				var dropMenu = $('<div id="nav-dropmenu" class="'+ menuId +'"><div></div></div>');
				dropMenu.hide();
				dropMenu.css('left',leftOffset);
				dropMenu.css('z-index','899');
				dropMenu.find('div').append(currNavItem);
				$('form').append(dropMenu);
				var menuWidth = (dropMenu.width());
				var currOffset = (0 + leftOffset + menuWidth);
				if(currOffset > maxOffset){
					var diff = (currOffset - maxOffset);
					dropMenu.css('width', menuWidth - diff)
				}
				//dropMenu.fadeIn('fast');
				dropMenu.show();
				
				$.data(dropMenu, 'currLi', $(this));
				
				// Reorder
				nav.find('a').css('z-index', '900');
				
				$(this).find('a').bind('mouseenter', function(){
					clearTimeout(closeTimeOut);
				});
				
				var closeMenu = function() {
					dropMenu.remove();
					$.data(dropMenu, 'currLi').removeClass('active');
				}
				
				dropMenu.bind('mouseleave', function(e){
					clearTimeout(closeTimeOut);
					closeTimeOut = setTimeout(closeMenu, 400);
				});
				
				$('#header, #header .logo').bind('mouseenter', function(e){
					clearTimeout(closeTimeOut);
					closeTimeOut = setTimeout(closeMenu, 400);	
				})
				
				dropMenu.bind('mouseenter', function(e){
					clearTimeout(closeTimeOut);
				});
			}
			return false;
		});
		
		$(document).bind('click',function(){
			$('#nav-dropmenu').fadeOut('fast').delay(500).remove();
			$('#nav').find('li').removeClass('active');
		});
	};
})(jQuery);


/* INIT PAGETOOLS
----------------------------------------------------*/
(function($) {
	$.fn.InitTools = function() {
		var tools = $(this);

		tools.find('#language').find('li:gt(0)').fadeTo(0, 0.4);
		tools.find('#language').find('li:gt(1)').fadeTo(0, 0.2);
		tools.find('#language').find('li:gt(2)').hide(0);

		tools.find('#language ul').bind('mouseenter',function() {
			tools.find('#language').addClass('active');
			$(this).find('li').fadeTo('fast', 1);
			tools.find('#language').css('z-index', '1000');
			$('#login-box').css('z-index', '900');
		}).bind('mouseleave',function(){
			tools.find('#language').removeClass('active');
			$(this).find('li:gt(0)').fadeTo(0, 0.4);
			$(this).find('li:gt(1)').fadeTo(0, 0.2);
			$(this).find('li:gt(2)').hide(0);
			tools.find('#language').css('z-index', '100');
		});

		tools.find('#worldwide').bind('mouseenter',function(){
			$(this).addClass('active');
			$('div#tools').css('z-index', '1000');
		}).bind('mouseleave',function(){
			$(this).removeClass('active');
		});

	};
})(jQuery);


/* INIT PROMO
----------------------------------------------------*/
(function($) {
	$.fn.InitPromo = function() {
		
		var promo = $(this);
		var autoSwicthSeconds = 5;
		
		var promoDTs = promo.find('dt');
		var promoDDs = promo.find('dd');
		promoDDs.hide();
		promoDTs.hide();
		
		/* Create page numbers based on number of elements */
		var pages = "<ul>";
		var i=0;
		promoDDs.each(function(){
			
			i++;
			var color = "";
			
			switch(i) {
				case 1: color = "p1"; break;
				case 2: color = "p2"; break;
				case 3: color = "p3"; break;
				case 4: color = "p4"; break;
			}
			
			var anchorClass = "";
			if(i==1)
				anchorClass = "current";
			
			pages += '<li class="'+color+'"><a href="#" class="'+anchorClass+'">'+i+'</a></li>';
		})
		pages += "</ul>";
		
		promo.append(pages);
		
		var paging = promo.find('ul a');
		
		var current = promo.find('ul li a.current');
		var currentIndex = paging.index(current);
		var currentClassName = current.parent().attr('class') +' '+ current.attr('class');
		var currentDT = promo.find('dt:eq('+ currentIndex +')');
		var currentDD = promo.find('dd:eq('+ currentIndex +')');
		
		promo.find('dt:eq('+ 0 +')').addClass('p1');
		promo.find('dd:eq('+ 0 +')').addClass('p1');
		promo.find('dt:eq('+ 1 +')').addClass('p2');
		promo.find('dd:eq('+ 1 +')').addClass('p2');
		promo.find('dt:eq('+ 2 +')').addClass('p3');
		promo.find('dd:eq('+ 2 +')').addClass('p3');
		promo.find('dt:eq('+ 3 +')').addClass('p4');
		promo.find('dd:eq('+ 3 +')').addClass('p4');
		
		currentDT.addClass(currentClassName);
		currentDT.next().addClass('current');
		currentDT.show();
		currentDD.show();
		
		var switchPromo = function(newIndex) {
			
			var old = promo.find('ul li a.current');
			var oldIndex = paging.index(old);
			
			paging.removeClass('current');
			promoDTs.removeClass('current');
			promoDDs.removeClass('current');
			
			newPageNum = paging.eq(newIndex).addClass('current');
			
			var oldDT = promo.find('dt:eq('+ oldIndex +')');
			var oldDD = promo.find('dd:eq('+ oldIndex +')');
			
			var currentDT = promo.find('dt:eq('+ newIndex +')');
			var currentDD = promo.find('dd:eq('+ newIndex +')');
			
			if(oldIndex != newIndex) {
				oldDT.hide();
				oldDD.fadeOut('slow');
				
				currentDT.addClass('current');
				currentDD.addClass('current');
				
				currentDT.show();
				currentDD.fadeIn('slow');
			}
			
			return false;
		};
		
		/* Auto swicth page */
		var curPage = 1;
		var numPages = i-1;
		var intervalSwitch = function(){
				switchPromo(curPage);
				curPage >= numPages ? curPage = 0 : curPage++;
		};
		
		var autoInterval = setInterval(intervalSwitch, autoSwicthSeconds * 1000);
		
		paging.bind('click', function() {
			var currentIndex = paging.index($(this));
			switchPromo(currentIndex);
			
			// Reset interval
			//curPage = currentIndex + 1;
			//clearInterval(autoInterval);
			//autoInterval = setInterval(intervalSwitch, autoSwicthSeconds * 1000);
		});
		
		promo.bind('mouseenter', function(){
			clearInterval(autoInterval);
		});
		
		promo.bind('mouseleave', function(){
			autoInterval = setInterval(intervalSwitch, autoSwicthSeconds * 1000);
		});
	};
})(jQuery);

/* INIT SUBSCRIPTION POPUP
----------------------------------------------------*/
(function($) {
	$.fn.InitSubscribePopup = function() {
		
		var subscribe = $(this);
		var popup = $('#subscribe-popup');
		popup.hide();
		
		popup.find('div.close').bind('click', function() {
			//popup.fadeTo('fast', 0);
			popup.hide();
		})
		
		subscribe.find('a').bind('click', function() {
			popup.css('position', 'absolute');
			//popup.fadeTo('fast', 1);
			popup.show();
		});
		
	};
})(jQuery);

/* INIT TRANSLATION SERVICE
----------------------------------------------------*/
(function($) {
	$.fn.InitTranslationSerive = function() {
		
		var dropDown = $(this);
		var currentLanguage = 'en';
		
		if($('meta[http-equiv=Content-Language]')[0])
			currentLanguage = $('meta[http-equiv=Content-Language]')[0].content;
		
		dropDown.find('a').bind('click', function() {
			if(!dropDown.hasClass('active')) {
				dropDown.addClass('active');
				dropDown.css('z-index', '1000');
				$(document).bind('mousedown',function(e){
					if(e.target.nodeName != "SELECT"
					&& e.target.nodeName != "OPTION"
					&& e.target.nodeName != "A")
						dropDown.removeClass('active');
				});
			} else {
				dropDown.removeClass('active');
			}
		});
		
		if(typeof google != 'undefined') {
			google.language.getBranding('google-branding');
		
			var translate = function(toLang) {
				$.fn.translate.defaults.returnAll = true;
				$('#section').translate(currentLanguage, toLang);
				currentLanguage = toLang;
			}
			
			// Init language links
			dropDown.find('ul li a').each(function() {
				var lng = this.id.split("_")[1];
				$(this).bind('click', function() {
						translate(lng);
				});
			});
			
			// Init languages select list
			selectElm = dropDown.find('select');
			selectElm.bind('change', function() {
				translate(this.value);
				dropDown.removeClass('active');
			});
			for(var language in google.language.Languages) {
				selectElm.append("<option value='" + google.language.Languages[language] +"'>" + language.capitalize() + "</option>");
			}
		}
		
	};
})(jQuery);


/* INIT LOGIN BOX
----------------------------------------------------*/
(function($) {
	$.fn.InitLoginBox = function() {
		
		var loginBox = $(this);
		
		loginBox.find('a').bind('click', function() {
			loginBox.addClass('active');
			loginBox.find('.normal').css('display', 'block');
			$('div#tools').css('z-index', '999');
			loginBox.css('zoom', '1');
			loginBox.css('z-index', '1000');
			
			if (jQuery.browser.msie)
				$('#worldwide').css('display', 'none');
			
			$('#login-lost-password').bind('click', function() {
				loginBox.find('.normal').css('display', 'none');
				loginBox.find('.lostpassword').css('display', 'block');
			});
		});
		
		loginBox.find('.login-cancel').bind('click', function() {
			loginBox.removeClass('active');
			
			loginBox.find('.normal').css('display', 'none');
			loginBox.find('.lostpassword').css('display', 'none');
			
			if (jQuery.browser.msie)
				$('#worldwide').css('display', 'block');
		});
		
		loginBox.find('input.input').bind('focus', function() {
			this.value = "";
		});
		
	};
})(jQuery);

/* INIT INTERVIEWS
----------------------------------------------------*/
(function($) {
	$.fn.InitInterviews = function() {
		
		$(this).find('a.watch').bind('click', function(){
			
			var listPost = $(this).parent().parent();
			var vidDiv = listPost.find('div.video');
			
			var overlay = $("<div></div>");
			overlay.css('position', 'fixed');
			overlay.css('*position', 'absolute');
			overlay.css('top', '0px');
			overlay.css('left', '0px');
			overlay.css('background', '#092b38');
			overlay.css('z-index', '999');
			overlay.css('width', '100%');
			overlay.css('height', '100%');
			
			overlay.fadeTo(1, 0);
			overlay.fadeTo('slow', 0.7, function(){
				vidDiv.css('position', 'fixed');
				vidDiv.css('*position', 'absolute');
				vidDiv.css('z-index', '1000');
				vidDiv.css('top', '150px');
				vidDiv.css('left', $('body').width()/2 - vidDiv.width()/2 + 20 + 'px');
				vidDiv.css('display', 'block');
				
				$('body').append(vidDiv);
			});
			
			$('body').append(overlay);
			
			overlay.bind('click', function() {
				vidDiv.css('display', 'none');
				listPost.append(vidDiv);
				overlay.fadeTo('slow', 0, function(){
					overlay.detach();
				})
			});
			
		})
		
	};
})(jQuery);

/* INIT EXTERNAL RESOURCES MENU
----------------------------------------------------*/
(function($) {
	$.fn.InitExternalResources = function() {
		
		var dropDown = $(this);
		
		dropDown.find('a').bind('mouseenter', function() {
			dropDown.addClass('active');
		})
		
		dropDown.bind('mouseleave', function() {
			dropDown.removeClass('active');
		});
		
	};
})(jQuery);

/* INIT ADD ORGANISATION OVERLAY
----------------------------------------------------*/
(function($) {
	$.fn.InitAddOrganisations = function() {
		
		$('#gwp-wrapper').hide();
		
		$(this).bind('click', function(event) {
			$('#gwp-wrapper, #add-org-start').fadeIn();
			$('#add-organisation-overlay').animate({'height':$('#add-org-start').height()});
		});
		
		$('#gwp-wrapper .close').bind('click', function(event) {
			$('#gwp-wrapper, #suggest, #add-org-details, #thank-you').fadeOut();
		});
		
	};
})(jQuery);
	(function($) {
		$.fn.Show = function(section) {
			
			$('#add-org-start, #suggest, #add-org-details, #thank-you').fadeOut();
			$('#add-organisation-overlay').animate({'height':$('#'+section).height()});
			$('#'+section).fadeIn();
		};
	})(jQuery);

/* PRELOAD IMAGES
----------------------------------------------------*/
(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  };
})(jQuery);

/* Textfield Placeholders v1.2 - jQuery Plugin
* Copyright (c) 2009 Palle Zingmark
* Author: Palle Zingmark, www.palleman.nu
*         Philip Hofstetter, www.gnegg.ch
* Released with the MIT License: http://www.opensource.org/licenses/mit-license.php
*/
(function($) {
	$.fn.TextfieldPlaceholders = function() {
		var $hasNativeSupport = ('placeholder' in document.createElement('input'));
		return this.each(function() {
			var $parent = $(this);
			$parent.find('input:text[value=""],input:password[value=""]').each(function(i) {
				var $input = $(this);
				var $placeholder = $input.attr('placeholder');
				var $basecolors = ['#000000', 'rgb(0, 0, 0)'];
				var $color = $input.css('color');
				var $hascolor = jQuery.inArray($color, $basecolors);
				if (typeof $placeholder == 'undefined' || $placeholder == '') {
					$placeholder = $parent.find('label[for="' + $input.attr('id') + '"]').text();
				}
				if (typeof $placeholder == 'string' || $placeholder != '') {
					if ($hasNativeSupport) {
						$input.attr('placeholder', $placeholder);
						return;
					}
					if ($input.attr('type') == 'password') {
						var $proxy = $('<input type="text" />');
						var $original_input = $input;
						$proxy.attr('class', $input.attr('class'));
						$proxy.attr('style', $input.attr('style'));
						$proxy.insertAfter($input);
						$input.hide();
						$input = $proxy;
					}
					$input.attr('value', $placeholder);
					$input.attr('title', $placeholder);
					if ($hascolor || $hascolor != -1) {
						$input.css('color', '#aeaeae');
					}
					$input.bind('focus', function() {
						if ($input.attr('value') == $placeholder) {
							if ($original_input) {
								$input.hide();
								$original_input.show();
								$input = $original_input;
								$input.focus();
							}
							$input.attr('value', '');
							$input.css('color', $color);
						}
					});
					($original_input || $input).bind('blur', function() {
						if ($input.attr('value') == $placeholder || $input.attr('value') == '') {
							if ($original_input) {
								$original_input.hide();
								$proxy.show();
								$input = $proxy;
							}
							$input.attr('value', $placeholder);
							if ($hascolor || $hascolor != -1) {
								$input.css('color', '#aeaeae');
							}
						}
					});
				}
			});
		});
	};
})(jQuery);


/* WRITE TO FIREBUG CONSOLE
----------------------------------------------------*/
var Console = function() {
	return {
		Log: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.log(msg, args) },
		Info: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.info(msg, args) },
		Warn: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.warn(msg, args) },
		Error: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.error(msg, args) }
	}
} ();