var CONSTANT_IDLE_TIMEOUT = 7000,
	CONSTANT_TABSWITCH_INTERVAL = 7000,
	CONSTANT_VOTE_PRO = 'VOTE_PRO',
	CONSTANT_VOTE_CONTRA = 'VOTE_CONTRA',
	CONSTANT_ARGUMENT_PRO = 'ARGUMENT_PRO',
	CONSTANT_ARGUMENT_CONTRA = 'ARGUMENT_CONTRA';

var gettext = function(string) {
	return LOCALE_STRINGS[string] ? LOCALE_STRINGS[string] : string;
}
	
$(function() {
	$('.datepicker').datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: LOCALE_DATE_FORMAT
    });
	
	var timeout;
	$('.searchtext').keyup(function() {
		if($(this).attr('rel')) {
			if($(this).attr('value').length > 2) {
				idRequest = $(this).attr('value');
				strCommand = $(this).attr('rel');
				if($(this).attr('callback')) {
					strCallback = $(this).attr('callback');
				} else {
					strCallback = null;
				}	
				timeout = window.setTimeout("doAjax(idRequest,strCommand,strCallback)",200);	
			}	
		}		
	});

	
	/*
	 * attribute ajax[0] : controller
	 * attribute ajax[1] : target field
	 * attribute ajax[2...n] : objects to be sent
	 */	
	$('.ajaxKeyup').keyup(function() {
		if($(this).attr('rel')) {
			
			idRequest = $(this).attr('id');
			strCommand = $(this).attr('rel');
			
			if($(this).attr('callback')) {
				strCallback = $(this).attr('callback');
			} else {
				strCallback = null;
			}	

			doAjax2(idRequest,strCommand,strCallback);
		}
	});

	$('.ajaxsuggest').keyup(function(){
		elem = $(this);
		if (elem.attr('rel')) {
			rel = elem.attr('rel');
			val = elem.attr('value');
			if (val.length>2) {
				$.get('/ajax/'+rel+'/v/'+val,function(html){
					var suggest = $('#suggest'),
						$selection = $('#page2-initiative_keywords');
					if(html!='') {
						suggest.html(html);
						suggest.css('display','block');
						suggest.find('a').click(function(){
							var $this = $(this),
								value = $this.attr('href'),
								label = $this.text(),
								$newOption = $('<option />').attr({
									value: value
								})
								.text(label);
							$selection.append($newOption);
							elem.attr('value', '');
							suggest.css('display','none');
							return false;
						});
					} else {
						suggest.css('display','none');
					}
				});
			}
		}
	});

	$('.ajaxsuggest').focus(function(){
		elem = $(this);
		suggest = $('#suggest');
		var offset = elem.offset();
		suggest.html('');
		suggest.css('top',(offset.top+18)+'px');
		suggest.css('left',offset.left+'px');
	});

	$('.ajaxsuggest').blur(function(){
		window.setTimeout(function(){
			suggest = $('#suggest');
			suggest.html('');
			suggest.css('display','none');
		},300);		
	});

	$('#new_article').click(function(){
		var elem = $(this);
		var checked = elem.attr('checked');
		if(checked==false){
			$('.roc').addClass('readonly');
		} else {
			$('.roc').removeClass('readonly');
		}
	});

	$('#new_article').each(function(){
		var elem = $(this);
		var checked = elem.attr('checked');
		if(checked==false){
			$('.roc').addClass('readonly');
		} else {
			$('.roc').removeClass('readonly');
		}
	});
	
	$('.openclose').click(function() {
		$('.articleList').toggle();
		return false;
	});	
	
	$('.formPopulateProduct').click(function() {
		if ( $(this).attr('rel') ) {
//			window.clearTimeout(timeout);
			idRequest = $(this).attr('id');
			strCommand = $(this).attr('rel');
			if ( $(this).attr('callback') ) {
				strCallback = $(this).attr('callback');
			} else {
				strCallback = null;
			}	
			strCommandArray = splitRelAttr( strCommand );
// update form			
			$.get( baseUrl + '/ajax/' + strCommandArray['strAction'], strCommandArray['strParams'] , function(data) {
		// TODO auto detect data type and update val or html
				arrayFields = data.split('%%');
				for( x in arrayFields ) {
					if ( arrayFields[x] ) {
						arrayTmp = arrayFields[x].split('::');
						elementName = "#" + arrayTmp[0];
						formArray[arrayTmp[0]] = arrayTmp[1]; 
						if ( $(elementName).length ) {
							$(elementName).val(arrayTmp[1]);
						}
					}
				}
// now process wg_id
				strCommand = $('#nav_id').attr('rel');
				strCommandArray = splitRelAttr( strCommand );
				$.get( baseUrl + '/ajax/' + strCommandArray['strAction'], strCommandArray['strParams'] , function(data) {
					strTargetElement = "#" + strCommandArray['strTargetElement'];
					$(strTargetElement).html(data);
					$(strTargetElement).val(formArray['wg_id']);
// now process wug_id
					strCommand = $('#wg_id').attr('rel');
					strCommandArray = splitRelAttr( strCommand );
					$.get( baseUrl + '/ajax/' + strCommandArray['strAction'], strCommandArray['strParams'] , function(data) {
						strTargetElement = "#" + strCommandArray['strTargetElement'];
						$(strTargetElement).html(data);
						$(strTargetElement).val(formArray['wug_id']);					
					});
				});			
			});
		}
	});
	
});
function resizeContext(){
	if(height == null){
		height = $(document).height() - 110;
	}
	$('#context-frame').css('height', height);
}
function resizeMap(){
	var width = $(document).width();
	var margin = -1*((width-990)/2);
	$('.map').css('width', width).css('margin-left', margin);
	$("#map").css({
		//height: 500,
		width: width
	});
}
$(window).resize(function(){
	resizeContext();
	resizeMap();
});
function splitRelAttr( strCommand ) {
	// split .rel attribute to get action, target field and params
	returnArray = new Array;
	returnArray['strParams'] = '';
	arrayTmp = strCommand.split('%%');
	strParams = '';
	for( x in arrayTmp ) {
		switch(x) {
			case "0":
				returnArray['strAction'] = arrayTmp[x];
				break;
			case "1":
				returnArray['strTargetElement'] = arrayTmp[x];
				break;
			default:
			  	strElement = arrayTmp[x];
				$strValue = $("#" + strElement).val();
				returnArray['strParams'] += strElement + '=' + encodeURIComponent($strValue) + '&';
		    	break;
		}
	}
	return returnArray;
}

function doAjax(idRequest,strCommand,strCallback) {
	aryCommand = strCommand.split('|');
	
	strModel = '';
	strAction = '';
	strTargetElement = '';
	//
	if(aryCommand.length > 1) {
		jQuery.each(aryCommand,function() {
			aryAction = this.split('%%');
			var strModel = aryAction[0];
			var strAction = aryAction[1];
			if(aryAction[2]) {	
				var strTargetElement = '#' + aryAction[2];
			}
			if(aryAction[3]) {
				strPara = aryAction[3];
			} else {
				strPara = '/';
			}	
		
			//alert('multi - model: ' + strModel + ' - action: ' + strAction + ' -  target :' +  strTargetElement);
	
			/* */
			$.get('/ajax/' + strAction + strPara, {id:idRequest,m:strModel}, function(data) {
				if(strTargetElement) {
					$(strTargetElement).html(data);
				}
			});	
		});				
	} else {
		aryAction = strCommand.split('%%');
		strModel = aryAction[0];
		strAction = aryAction[1];
		if(aryAction[2]) {	
			var strTargetElement = '#' + aryAction[2];
		}
		if(aryAction[3]) {
			strPara = aryAction[3];
		} else {
			strPara = '/';
		}				
		
		//alert('model: ' + strModel + ' - action: ' + strAction + ' -  target :' +  strTargetElement);
		$.get('/ajax/' + strAction + strPara, {id:idRequest,m:strModel}, function(data) {
			if(strTargetElement) {
				$(strTargetElement).html(data);
			}
		});				
	}		
	
	if(strCallback) {
		if(typeof window[callback] == 'function') window[strCallback]();
	}	
}

var ajaxWithArguments = function(idRequest, $arguments) {
	
};


function doAjax2(idRequest,strCommand,strCallback) {
	arrayTmp = strCommand.split('%%');
	strParams = '';
	for( x in arrayTmp ) {
		switch(x) {
			case "0":
				strAction = arrayTmp[x];
				break;
			case "1":
				strTargetElement = arrayTmp[x];
				break;
			default:
			  	strElement = arrayTmp[x];
				$strValue = $("#" + strElement).val();
			  	strParams += strElement + '=' + encodeURIComponent($strValue) + '&';
		    	break;
		}
	}
	$.get(
		baseUrl + '/ajax/' + strAction, 
		strParams, 
		function(data) { // TODO auto detect data type and update val or html
			returnArray =  new Array();
			if ( strTargetElement ) {
				$("#" + strTargetElement).html(data);
			}
		}
	);
		
	if(strCallback) {
		if(typeof window[strCallback] == 'function') window[strCallback]();
	}		
	
	return;
}

var GeneralJS = {
		clearValue:		function() {
							var args = GeneralJS.clearValue.arguments;
							for(y=0;y<args.length;y++){
								$('#'+args[y]).attr('value','');
							}
						},
						
		togglePlaceholder: function($elements) {
			$elements.each(function($i, element) {
				var $element = $(element),
					placeholderValue = $element.attr('placeholder');
				if (placeholderValue) {
					$element.attr('value', placeholderValue);
					$element.focusin(function() {
						if ($element.attr('value') == placeholderValue) {
							$element.attr('value', '');
						}
					});
					$element.blur(function() {
						if ($element.attr('value') == '') {
							$element.attr('value', placeholderValue);
						}
					});					
				}								
			});								
		}						
};


var ajaxChange = function(elements) {
	$(elements).change(function() {
		var $this = $(this),
			$categoryValueElement = $('#page2-initiative_hidden_category_id');
			$siblingsOfThisCategoryInput = $this.nextAll();

		$categoryValueElement.attr('value', $this.attr('value'));
		$siblingsOfThisCategoryInput.each(function(i, sibling) {
			if (i > 0) {
				$(sibling).remove();
			}
		});	
		
		if ($this.attr('value')) {
			if($this.attr('rel')) {
	//			window.clearTimeout(timeout);
				
				idRequest = $this.attr('id');
				strCommand = $this.attr('rel');
				
				if($this.attr('callback')) {
					strCallback = $this.attr('callback');
				} else {
					strCallback = null;
				}	
	
	//			timeout = window.setTimeout("doAjax(idRequest,strCommand,strCallback)",500);
				doAjax2(idRequest,strCommand,strCallback);
			}
		}
	});
};

var selectboxUiOptions = {
	style: 'dropdown',
	menuWidth: 275
	//format: addressFormatting
};


Shadowbox.init({
	adapter: 'jquery',
	handleOversize: 'resize',
	modal: true,
	displayCounter: false,
	displayNav: false,
	enableKeys: false,
	players:  ['html', 'iframe'],
});
Shadowbox.dynamicResize = function(w, h){
	var resizeContent = function(w, h) {
		$('#sb-body').animate({height: h});			
	};
	if (content) {
		content.width = w;
    	h = Math.min(h, $(window).height());
    	//content.height = h;
    	//console.log({'Resizing': {w: w, h:h}});    	
    	resizeContent(w, h);    	
    }
};


var getAjaxControllerUri = function(action) {
	return new Array(baseUrl, 'ajax', action).join('/');
};

var applyMaxChars = function(elements) {
	$(elements).each(function(i, elementWithMaxLength) {
		var $elementWithMaxLength = $(elementWithMaxLength),
			maxChars = $elementWithMaxLength.attr('maxlength'),
			$maxCharsNotice = $elementWithMaxLength.nextAll('.max-chars-notice:first'),
			$maxChars = $maxCharsNotice.find('.max-chars:first'),
			$charsLeft = $maxCharsNotice.find('.chars-left:first');
		$maxChars.text(maxChars);
		$charsLeft.text(maxChars);
		
		$elementWithMaxLength.keyup(function() {
			var currentChars = $elementWithMaxLength.val().length,
				charsLeft = maxChars - currentChars;
			$charsLeft.text(charsLeft);
			if (charsLeft < 0) {
				$maxCharsNotice.addClass('error');
			} else {
				$maxCharsNotice.removeClass('error');
			}
		});
	});
}; 


var height = null;

$(document).ready(function(){
	
	resizeMap();
	
	$('a.external').click(function(e) {
		e.preventDefault();
		window.open($(this).attr('href'));
	});
	
	$('#tabInitiative a.tab').click(function(){
		return GeneralJS.tabClick($(this));
	});
	
	$('#search-form').submit(function() {
		var $query = $(this).find('#search'),
			query = $query.val(),
			placeholderValue = $query.attr('placeholder');
		if (!query || query == placeholderValue) {
			$query.attr('placeholder', gettext('SEARCH_TERM_ERROR'));
			return false;
		}
	});
	
	if ($.browser.msie) {
		GeneralJS.togglePlaceholder($('input'));
	}
	
	$('select.ui-widget').selectmenu(selectboxUiOptions);		
	
	
		// Intercept "Abort" submission on new inititiative form to close shadow
	$('#new-initiative #button_exit-element input[type="submit"]').click(function (e) {
		e.preventDefault();
		window.parent.Shadowbox.close();
		return false;
	});
	
		// Focus new initiative title input
	$('#page1-initiative_text').focus();
	
		// Initiative suggestions
	applyMaxChars($('input[maxlength], textarea[maxlength]'));
	
		// Chars left notice
	var maxChars = $('#new-initiative #page1-initiative_text').attr('maxlength');
	$('#new-initiative #max-chars-notice #max-chars').text(maxChars);
	$('#new-initiative #max-chars-notice #chars-left').text(maxChars);
	
	$("#new-initiative #page1-initiative_text").keyup(function() {
		var $this = $(this),
			$maxCharsNotice = $('#new-initiative #max-chars-notice'),
			$charsLeft = $maxCharsNotice.find('#chars-left'),
			currentChars = $(this).val().length,
			charsLeft = maxChars - currentChars;	
		
		$charsLeft.text(charsLeft);
		if (charsLeft < 0) {
			$maxCharsNotice.addClass('error');
		} else {
			$maxCharsNotice.removeClass('error');
		}
		if (currentChars > 3) {
			$.ajax({
				url: getAjaxControllerUri('searchinitiativekeyword'),
				data: {initiative_text: $this.attr('value')},
				success: function(initiativeLinks) {
					if (initiativeLinks) {
						var $initiativeLinks = $(initiativeLinks),
							$initiativeSuggestionsHtml = $('<div />');
						$initiativeLinks.each(function(i, initiativeLink) {
							var $initiativeLink = $(initiativeLink);
							$initiativeLinkButton = $(initiativeLink).clone();
							$initiativeLinkButton
								.text(gettext('VIEW_INITIATIVE'))
								.addClass('button');
							$initiativeLink.addClass('label');
							$initiativeSuggestionsHtml.append($initiativeLink);
							$initiativeSuggestionsHtml.append($initiativeLinkButton);
						});
						$('#new-initiative #initiative-suggestions').html($initiativeSuggestionsHtml.html());
						$('#new-initiative #initiative-suggestions-label').css('visibility', 'visible');
					} else {
						$('#new-initiative #initiative-suggestions-label').css('visibility', 'hidden');
						$('#new-initiative #initiative-suggestions').empty();
					}
				}
			});
		} else {
			$('#new-initiative #initiative-suggestions').empty();
			$('#new-initiative #initiative-suggestions-label').css('visibility', 'hidden');
		}
	});
	
	var initiativeCategoryChangeFunction = function(categorySelectbox) {
		var $this = $(categorySelectbox),
			parsedSelectboxId = parseInt($this.attr('id').match(/\d$/)),
			selectboxId = isNaN(parsedSelectboxId) ? 1 : parsedSelectboxId + 1,
			$categoryValueElement = $('#page2-initiative_hidden_category_id' + selectboxId),
			$finalCategoryValueElement = $('#page2-initiative_hidden_category_id'),
			$siblingsOfThisCategoryInput = $this.nextAll();

		$siblingsOfThisCategoryInput.each(function(i, sibling) {
			if (i > 0) {
				$(sibling).remove();
			}
		});
		for (var i=selectboxId; i<5; i++) {
			$('#page2-initiative_hidden_category_id'+i).attr('value', null);
		}
		
		if ($this.attr('value')) {
			$categoryValueElement.attr('value', $this.attr('value'));
			$finalCategoryValueElement.attr('value', $this.attr('value'));

			$.ajax({
				url: getAjaxControllerUri('getcategory'),
				data: {
					'page2-initiative_hidden_category_id': $finalCategoryValueElement.attr('value')
				},
				success: function(childCategoriesOfSelectedCategory) {
					var $childCategoriesOfSelectedCategory = $(childCategoriesOfSelectedCategory);
					if ($childCategoriesOfSelectedCategory.length > 1) {
						var numberOfSelectboxes = $('.initiative-category').length,
							$newCategorySelectbox = $this.clone().empty(),
							newCategorySelectboxId = $newCategorySelectbox.attr('id') + numberOfSelectboxes;
		
						$newCategorySelectbox
						.attr({
							id: newCategorySelectboxId,
							name: 'page2[initiative_category_id' + numberOfSelectboxes + ']'
						})
						.append($childCategoriesOfSelectedCategory);
						$this.parent().append($newCategorySelectbox);
						
						$newCategorySelectbox
						.change(function() {
							initiativeCategoryChangeFunction($newCategorySelectbox);
						})
						.selectmenu(selectboxUiOptions);					
					}
				}
			});
		} else {
			$categoryValueElement.attr('value', null);
			$finalCategoryValueElement.attr('value', null);
		}
	};
	
	$('#page2-initiative_category_id').change(function() {
		var $this = $(this),
			parsedSelectboxId = parseInt($this.attr('id').match(/\d$/)),
			selectboxId = isNaN(parsedSelectboxId) ? 1 : parsedSelectboxId + 1,
			$categoryValueElement = $('#page2-initiative_hidden_category_id' + selectboxId),
			$finalCategoryValueElement = $('#page2-initiative_hidden_category_id'),
			$siblingsOfThisCategoryInput = $this.nextAll();

		$siblingsOfThisCategoryInput.each(function(i, sibling) {
			if (i > 0) {
				$(sibling).remove();
			}
		});
		for (var i=1; i<5; i++) {
			$('#page2-initiative_hidden_category_id'+i).attr('value', null);
		}
		
		if ($this.attr('value')) {
			$categoryValueElement.attr('value', $this.attr('value'));
			$finalCategoryValueElement.attr('value', $this.attr('value'));
			$.ajax({
				url: getAjaxControllerUri('getcategory'),
				data: {
					'page2-initiative_hidden_category_id': $finalCategoryValueElement.attr('value')
				},
				success: function(childCategoriesOfSelectedCategory) {
					var $childCategoriesOfSelectedCategory = $(childCategoriesOfSelectedCategory);
					if ($childCategoriesOfSelectedCategory.length > 1) {
						var numberOfSelectboxes = $('.initiative-category').length,
							$newCategorySelectbox = $this.clone().empty(),
							newCategorySelectboxId = $newCategorySelectbox.attr('id') + numberOfSelectboxes;
	
						$newCategorySelectbox
						.attr({
							id: newCategorySelectboxId,
							name: 'page2[initiative_category_id' + numberOfSelectboxes + ']'
						})
						.append($childCategoriesOfSelectedCategory);
						$this.parent().append($newCategorySelectbox);
						
						$newCategorySelectbox
						.change(function() {
							initiativeCategoryChangeFunction($newCategorySelectbox);
						})
						.selectmenu(selectboxUiOptions);					
					}
				}
			});
		} else {
			$categoryValueElement.attr('value', null);
			$finalCategoryValueElement.attr('value', null);
		}
	});
	
	for (var i = 1; i < 5; i++) {
		var initiativeCategorySelectboxValue = $('#page2-initiative_hidden_category_id' + i).attr('value'),
			selectedOptionOfChildCategories = i < 4 ? $('#page2-initiative_hidden_category_id' + (i + 1)).attr('value') : null;
		if (initiativeCategorySelectboxValue) {
			var $sampleSelectbox = $('#page2-initiative_category_id');
			$.ajax({
				url: getAjaxControllerUri('getcategory'),
				data: {
					'page2-initiative_hidden_category_id': initiativeCategorySelectboxValue
				},
				async: false,
				success: function(childCategoriesOfSelectedCategory) {
					var $childCategoriesOfSelectedCategory = $(childCategoriesOfSelectedCategory);
					if ($childCategoriesOfSelectedCategory.length > 1) {
						var numberOfSelectboxes = $('.initiative-category').length,
							$newCategorySelectbox = $sampleSelectbox.clone().empty(),
							newCategorySelectboxId = $newCategorySelectbox.attr('id') + numberOfSelectboxes;
						
						$childCategoriesOfSelectedCategory.each(function(i, option) {
							var $option = $(option);
							if ($option.attr('value') == selectedOptionOfChildCategories) {
								$option.attr('selected', 'selected');
							}
						});

						$newCategorySelectbox
						.attr({
							id: newCategorySelectboxId,
							name: 'page2[initiative_category_id' + numberOfSelectboxes + ']'
						})
						.append($childCategoriesOfSelectedCategory);
						$sampleSelectbox.parent().append($newCategorySelectbox);

						$newCategorySelectbox
						.change(function() {
							initiativeCategoryChangeFunction($newCategorySelectbox);
						})
						.selectmenu(selectboxUiOptions);
					}
				}
			});
		} else {
			break;
		}
	}
			
	
	$('#page2-initiative_region_id').change(function() {
		$('#page2-initiative_country_id').empty();
		$('#page2-initiative_country_id-element .ui-selectmenu-status').text('');		
	});
	
	
		// Unhide city lookup field if selected region is country
	$('#new-initiative #page2-initiative_region_country').change(function() {
		var $this = $(this),
			selectedRegionValue = $this.attr('value'),
			$cityLookupField = $('#page2-initiative_town-element'),
			$cityLookupFieldNotice = $('#new-initiative-city-notice');
		switch (selectedRegionValue) {
			case 'COUNTRY':	// Country
				$cityLookupField.css('display', 'block');
				$cityLookupFieldNotice.css('visibility', 'visible').effect('highlight', {color: '#00a9ac'}, 3000);
				break;
			default:
				$cityLookupField.val('');
				$cityLookupField.css('display', 'none');
				$cityLookupFieldNotice.css('visibility', 'hidden');
				break;
		}
	});
	
	$('#new-initiative #page2-button_delete_keyword').click(function(e) {
		e.preventDefault();
		$('#page2-initiative_keywords option:selected').each(function(i, option) {
			$(option).remove();
		});
		return false;
	});
	
	$('#new-initiative #page2-button_add_keyword').click(function(e) {
		e.preventDefault();
		
		var $keywordElement = $('#page2-keyword'),
			keyword = $keywordElement.attr('value'),
			$keywordsElement = $('#page2-initiative_keywords');
		
		$.get(baseUrl+'/ajax/addkeyword', {keyword: keyword}, function(response) {
			if (response.match(/\d+/)) {
				var newKeywordId = response,
					$newKeyword = $('<option />');
						
				$newKeyword.attr({value: newKeywordId}).text(keyword);		
				$keywordsElement.append($newKeyword);
			}
		});
		
		$keywordElement.attr('value', '');
		$keywordElement.focus();
		
		return false;
	});
	
	$('#new-initiative #page2-button_save').click(function(e) {
		$('#page2-initiative_keywords option').attr('selected', 'selected');
	});
	
	$('#login-close-button').click(function(e) {
		e.preventDefault();
		$('#header-tab-myglobo .content').hide();
	});
	$('.login').click(function(e) {
		var $loginContent = $('#header-tab-myglobo .content');
		if ($loginContent.css('display') == 'block') {
			$loginContent.slideUp();
		} else {
			$loginContent.slideDown();
			$('#header-tab-myglobo #user_username').focus();
		}		
	});
	
		// Tabs
	var tabHoverFunction = function(tab) {
		var $tab = $(tab),
		cssClass = 'current';
		if (!$tab.hasClass(cssClass)) {
			var $tabs = $tab.parent().find('.tab'),
				$tabHeader = $tab.find('.header'),
				$tabContent = $tab.find('.content');
			$tabs.removeClass(cssClass);
			$tab.addClass(cssClass);
		}
	};
	$('.real-tabs .tab').click(function() {
		tabHoverFunction($(this));					
	});
		
	$('#initiative-categories .real-tabs .tab').mouseover(function() {
		tabHoverFunction($(this));
	});
	
		// Idle event actions: tab switching at landing page
	var tabSwitcherIntervalId;
	var tabSwitcher = function(tabs, cmd) {
		switch (cmd) {
			case 'start':
				tabSwitcherIntervalId = setInterval(function() {
					tabSwitcherFunction(tabs);
				}, CONSTANT_TABSWITCH_INTERVAL);
				break;
			case 'stop':
				clearInterval(tabSwitcherIntervalId);
				break;
		}							
	};
	var tabSwitcherFunction = function(tabs) {
		var $tabs = $(tabs),
			cssClass = 'current',
			numberOfTabs = $tabs.length,
			$currentTab = null,
			nextTabIndex = null,
			$nextTab = null;
		$tabs.each(function(i, tab) {
			var $tab = $(tab);
			if ($tab.hasClass(cssClass)) {
				$currentTab = $tab;
				nextTabIndex = ((i+1) % numberOfTabs);
				$nextTab = $tabs.eq(nextTabIndex);
			};			
		});
		$currentTab.removeClass(cssClass);
		$nextTab.addClass(cssClass);
	};
	if ($('#initiative-start').length > 0) {
		$(document).bind('idle.idleTimer', function() {
			tabSwitcher('#initiative-start .tab', 'start');
		});
		$(document).bind('active.idleTimer', function() {
			tabSwitcher('#initiative-start .tab', 'stop');
		});
		
		$.idleTimer(CONSTANT_IDLE_TIMEOUT);
	}
		
	$('#initiative-categories .real-tabs .tab, #initiative-categories .more').click(function() {
		clearInterval(tabSwitcherIntervalId);
		$(document)
			.unbind('idle.idleTimer')
			.unbind('active.idleTimer');
	});
	
		// Geo search form
	$('#geo-search #geo-search-region').change(function() {
		var $this = $(this),
			$nextSelectbox = $('#geo-search #geo-search-country'),
			$uiWidgetOfNextSelectbox = $('#geo-search #geo-search-country-button'),
			$locationInput = $('#geo-search #geo-search-location'),
			$geoCodeInput = $('#geo-search #geo-search-geocode');
		$nextSelectbox.remove();
		$uiWidgetOfNextSelectbox.remove();
		$locationInput.attr('value', '');
		$geoCodeInput.val('');
		$this.closest('form').submit();
	});	
	$('#geo-search #geo-search-country').change(function() {
		var $this = $(this),
			$locationInput = $('#geo-search #geo-search-location'),
			$geoCodeInput = $('#geo-search #geo-search-geocode');
		$locationInput.attr('value', '');
		$geoCodeInput.val('');
		$this.closest('form').submit();
	});
	
	
		// Get next initiatives
	/*
	$('#initiative-categories .more').click(function(e) {
		e.preventDefault();
		
		var $this = $(this),
			currentPageOffset = $this.attr('href').match(/page=(\d+)/)[1],
			nextPageOffset = currentPageOffset * 1 + 1;

		$.ajax({
			url: $this.attr('href'),
			success: function(data, success) {
				var $data = $(data);
				if ($data.length > 0 && $data[0].tagName !== 'P') {
					$this.before($data);
					$data.slideDown();				
					$this.attr('href', $this.attr('href').replace(/page=\d+/, 'page='+nextPageOffset));
				} else {
					$this.css('display', 'none');
				}
			}
		});
	});
	*/
	
		// Initiative vote form
	var $initiativeVoteForm = $('#initiative-vote-form');
	if ($initiativeVoteForm) {
		$('#initiative-vote-view #initiative-vote-pro').click(function() {
				$('input#initiative-vote-attitude', $initiativeVoteForm).attr('value', CONSTANT_VOTE_PRO);
		});
		$('#initiative-vote-view #initiative-vote-contra').click(function() {
			$('input#initiative-vote-attitude', $initiativeVoteForm).attr('value', CONSTANT_VOTE_CONTRA);
		});
	}	
		// Initiative argument form
	var $initiativeArgumentForm = $('#initiative-argument-form');
	if ($initiativeArgumentForm) {
		$('#initiative-vote-view #arguments-pro .create-argument').click(function() {
			$('.initiative-argument-attitude', $initiativeArgumentForm).text('Pro');
			$('input#initiative-argument-attitude', $initiativeArgumentForm).attr('value', CONSTANT_ARGUMENT_PRO);
		});
		$('#initiative-vote-view #arguments-contra .create-argument').click(function() {
			$('.initiative-argument-attitude', $initiativeArgumentForm).text('Contra');
			$('input#initiative-argument-attitude', $initiativeArgumentForm).attr('value', CONSTANT_ARGUMENT_CONTRA);
		});
	}	
		
	$('.implement-me').click(function(e) {
		e.preventDefault();
		alert(gettext('COMING_IN_NEXT_RELEASE'));
		return false;
	});
	
	$.datepicker.setDefaults($.datepicker.regional[LOCALE]);
	/*
	$('input.date').datepicker({
		dateFormat: 'dd.mm.yy',
		altField: $(this).parent().find('.normalised-date'),
		altFormat: 'yy-mm-dd',
		firstDay: 1,
		showTime: false,-
		time24h: true,
		altTimeField: $(this).parent().find('input.time')
	});
	*/
	$('input#activity-start-date').datepicker({
		dateFormat: LOCALE_DATE_FORMAT,
		altField: '#activity-normalised-start-date',
		altFormat: 'dd-mm-yy',
		firstDay: LOCALE_FIRST_WEEKDAY,
		showTime: false,
		time24h: LOCALE_TIME_HAS_24_HOURS,
		altTimeField: $(this).parent().find('input.time')
	});
	$('input#activity-end-date').datepicker({
		dateFormat: LOCALE_DATE_FORMAT,
		altField: '#activity-normalised-end-date',
		altFormat: 'dd-mm-yy',
		firstDay: LOCALE_FIRST_WEEKDAY,
		showTime: false,
		time24h: LOCALE_TIME_HAS_24_HOURS,
		altTimeField: $(this).parent().find('input.time')
	});
	
	
	$('.real-tabs').each(function(i, tabbed) {
		var $this = $(tabbed),
			$tabs = $this.find('.tab'),
			maxContentHeight = null,
			contentElementContainers = new Array();
		
		$tabs.each(function(j, tab) {
			var $tab = $(tab),
				$contentElementOfThisTab = $tab.find('.content'),
				$containerOfContentElement = $contentElementOfThisTab ? $contentElementOfThisTab.parent() : null;
			contentElementContainers.push($containerOfContentElement);
			maxContentHeight = Math.max(maxContentHeight, $contentElementOfThisTab.outerHeight());
		});
		$.each(contentElementContainers, function(j, contentElementContainer) {
			var $contentElementContainer = $(contentElementContainer);
			$contentElementContainer.height(maxContentHeight);
		});
	});
	
	var photoUploadShadowboxOptions = {
		player: 'inline', 
		content: '#account-photoupload-form-shadowbox', 
		height: 300, 
		width: 400 
	};
	$('#myglobo-account-more-details #button_photo').click(function(e) {
		e.preventDefault();
		Shadowbox.open(photoUploadShadowboxOptions);
	});
	var $photoUploadErrorList = $('#account-photoupload-form .errors'),
		$photoUploadErrors = $('#account-photoupload-form .errors li');
	if ($photoUploadErrors.length > 0) {
		var $errorContainer = $('#myglobo-account-more-details #button_photo-element');
		$errorContainer.append($photoUploadErrorList);
		//Shadowbox.open(photoUploadShadowboxOptions);		
		
	}
	
	$('#myglobo-account-credentials #user_password').keyup(function(){
		var passwordStrength = passwordStrengthPercent($('#myglobo-account-credentials #user_password').val(), $('#myglobo-account-credentials #user_username').val());
		$('#password-strength').html(passwordStrength + '%');
	});
	
	$('.favourite-initiative-selection').change(function() {
		var $this = $(this);
		$('#favourite-being-updated').val($this.val());
		$this.parents('form:first').submit();
	});
	
		// Argument focus
	$('.create-argument').click(function(e) {
		e.preventDefault();
		Shadowbox.open({
			player: 'html',
			content: $('#initiative-argument-form-shadowbox').html(),
			//height: 200,
			options: {
				onFinish: function() {
					$('.initiative-argument-form .initiative-argument-body').focus();					
					applyMaxChars($('.initiative-argument-body'));
				}
			}			
		});
	});
	
	resizeContext();
});
