var initialized = false;
var onAuthLink = '';
var onAuthMessage = '';
var loginFormName = 'top-';
var menuOffset = 130;
var timeout	= 500;
var reload = true;
var oldAddress = null;
var loaded = false;

function filterQuery(q){
	var result = '';
	
	var parts = q.split('&');
	
	for(var i = 0; parts != null && i < parts.length; i++){
		var subParts = parts[i].split('=');
		
		if(subParts != null && subParts.length == 2){
			if(subParts[0] != 'tag' && subParts[0] != 'app'){
				if(result != '') result += ',';
				
				result += parts[i];
			}
		}
	}
	
	return result;
}

function functionChange(event){
	if($.address.value().toLowerCase() == oldAddress){
		history.go(-1); 
		return;
	}

	if(!reload){
		reload = true;
		return;
	}
	
	AuthenticationPanel.close();
	WindowPopUp.close();
	Shadowbox.close();

	var names = $.map(event.pathNames, function(n) {
		return n;
	}).concat(event.parameters.id ? event.parameters.id.split('.') : []);

	if(event.pathNames != null && event.pathNames != ''){
		if(event.queryString != null && event.queryString != ''){
			query = filterQuery(event.queryString);
		} //else if(initialized) query = '';
		else query = '';
	}
	else{
		if(!loaded)
			query = filterQuery(query);
		else window.location = window.location;
	}
	
	var newUsername = names[0];
	var newApp = names[1];

	if(newUsername != null && newUsername.toLowerCase() != newUsername){
		if(newApp == null || newApp == '') newApp = '';
		else newApp = '/' + newApp;

		$.address.value('/' + newUsername.toLowerCase() + newApp + ((event.queryString != null && event.queryString != '') ? ('?' + event.queryString) : ''));
		return;	
	}
	
	if(username == null && newUsername == null){
		window.location = '/Comunidade.jsp';
	}

	if(newApp == null || newApp == ''){
		if(newUsername != null || app == null)
			newApp = 'home';
		else newApp = app;
	}
	
	if(newUsername == null)
		newUsername = username;
	
	var dataString = 'owner=' + newUsername;
	
	if(authenticatedUsername != null && authenticatedSession != null)
		dataString += '&username=' + authenticatedUsername + '&sessionID=' + authenticatedSession;

	if(!initialized){
		initMenuLinks();
		VisitsApplication.add();

		$("#content").load("/Comunidade/appLoader.jsp?owner=" + newUsername + "&app=" + newApp + "&queryString=" + query);
	}
	else{
		if(username == newUsername && app == newApp)
			refreshContent(dataString, event.queryString);
		else{
			if(username != newUsername){
				VisitsApplication.add();
			}

			$("#content").load("/Comunidade/appLoader.jsp?owner=" + newUsername + "&app=" + newApp + "&queryString=" + query);
		}
	}

	if($('#menu_comunidade_' + app) != null){
		$('#menu_comunidade_' + app).removeClass('menu_comunidade_link_selected');
	}
	
	app = newApp;

	if($('#menu_comunidade_' + app) != null){
		$('#menu_comunidade_' + app).addClass('menu_comunidade_link_selected');
	}
	
	username = newUsername;
	
	loaded = true;
	$.address.title('OptimusTAG - ' + username + ' - ' + app);
	
	initialized = true;
	
	oldAddress = $.address.value().toLowerCase();
}

function getAvailableHeight() {
	getMovieName('website').setAvailableHeight($(window).height());
}


function openCollections(username,sessionID,id,owner) {
	Shadowbox.open({
		player: 'swf',
		content: '/Comunidade/swf/Flip.swf?username='+username+'&sessionID='+sessionID+'&id='+id+'&owner='+owner,
		width: 840,
		height: 596
	});
}

function openVideo(url,nrPosition,bSmall) {
	Shadowbox.open({
		player: 'swf',
		content: '/Comunidade/swf/VideoPlayerStandAlone.swf?url='+url+'&nrPosition='+nrPosition+'&small=false',
		width: 441,
		height: 390
	});
}

function openImage(url) {
	Shadowbox.open({
		player: 'img',
		content: url
	});
}

function scrollTop(){
	$(window).scrollTop(0);
}

function followLink(link){
	$.address.value(link);
}

function enterMenuLink(area){
	if($('#menu_comunidade_' + area).hasClass('menu_comunidade_link_disabled'))
		return;
		
	$.address.value('/' + username + '/' + area);
}

function initMenuLinks(){
	$('#menu_comunidade_home').bind('click', function(){ enterMenuLink('home');});
	$('#menu_comunidade_perfil').bind('click', function(){ enterMenuLink('perfil');});
	$('#menu_comunidade_rede').bind('click', function(){ enterMenuLink('rede');});
	$('#menu_comunidade_galeria').bind('click', function(){ enterMenuLink('galeria');});
	$('#menu_comunidade_blog').bind('click', function(){ enterMenuLink('blog');});
	$('#menu_comunidade_comentarios').bind('click', function(){ enterMenuLink('comentarios');});
}

function loadContent(appPath, dataString, queryString){
	HTMLApplicationContainer.unload();

	window.onscroll = scrollingDetector;
	
	$('#website_main').html('<div id="website" style="width:100%; height:100%;background-color:#000;"></div>');
	
	var flashvars = {};
	var params = {
		wmode: 'transparent',
		allowFullScreen: 'false',
		base: '/Comunidade/swf'
	};
	var attributes = { };

	var data = dataString;
	if(data == null || data == ''){
		if(queryString != null){
			data = queryString;
		}
	}
	else if(queryString != null && queryString != ''){
		data = data + '&' + queryString;
	}
	
	//swfobject.embedSWF(appPath + '?' + data, 'website', '100%','100%', '9.0.0', 'expressInstall.swf', flashvars, params, attributes);
}

function refreshContent(dataString, queryString){
	var data = dataString;
	if(data != null && data != '' && queryString != null && queryString != '')
		data += '&' + queryString;
	else if(data == null || data == ''){
		if(queryString == null || queryString == '')
			data = '';
		else data = queryString;
	}
	
	try{
		refreshHTMLContent(data);
	}catch(error){
		try{
			getMovieName('website').refreshContent(data);
		} catch(error){}
	}
}

function getParam(name, params){
	var obj = splitDataString(params);
	
	return obj[name];
}

function splitDataString(params){
	if(params == null) return null;

	var elements = params.split('&');
	var obj = new Object;
	
	for(var i = 0; i < elements.length; i++){
		var element = elements[i];
		var parts = element.split('=');
		obj[parts[0]] = parts[1];
	}

	return obj;
}

function setSwfSize(width, height){
	$('#content').height(height);
	$('#website_main').height(height);
}

function getMovieName(movieName){
	if (navigator.appName.indexOf('Microsoft') != -1)
		return window[movieName];
	else
		return document[movieName];
}

function scrollingDetector(event){
	cancelEventPropagation(event);
	
	var val = $(window).scrollTop();

	var threshold = 3000 - $(window).height();
	
	if(val >= threshold){
		try{
			getMovieName('website').reposition(val - threshold);
			$('#website_main').css('margin-top', val - threshold);
		} catch(error){}
	}
	else{
		try{
			getMovieName('website').reposition(0);
			$('#website_main').css('margin-top', 0);
		} catch(error){}
	}
}

function advanced_search(isAdvanced){
	if(isAdvanced)
		$.address.value('/ua/pesquisa');
	else{
		var search_param = $('#pesquisa_texto').val();
		
		if(search_param == 'Pesquisar') return;
		$.address.value('/ua/pesquisa?keyword=' + search_param);
	}
}

function getDateDiff(current, date){
	var diff = current - date;

	 diff = diff / 60000;
		
	if(diff / 60 < 1){
		var minutes = Math.floor(diff);
			
		if(minutes == 1) return "1 minuto";
		else return minutes + " minutos";
	} else if(diff / (60 * 24) < 1){
		var hours = Math.floor(diff / 60);
			
		if(hours == 1) return "1 hora";
		else return hours + " horas";
	} else if(diff / (60 * 24 * 30) < 1){
		var days = Math.floor(diff / 60 / 24);
			
		if(days == 1) return "1 dia";
		else return days + " dias";
	} else if(diff / (60 * 24 * 365) < 1){
		var months = Math.floor(diff / 60 / 24 / 30);
			
		if(months == 1) return "1 m\u00EAs";
		else return months + " meses";
	} else{
		var years = Math.floor(diff / 60 / 24 / 365);
			
		if(years == 1) return "1 ano";
		else return years + " anos";
	}
}

function cancelEventPropagation(e){
	var event = e ? e : window.event;
	
	if(event.stopPropagation)
    	event.stopPropagation();
  	if(event.preventDefault)
    	event.preventDefault();
  	
  	event.cancelBubble = true;
  	event.cancel = true;
  	event.returnValue = false;
}

function mouseScroll(event, element){
	cancelEventPropagation(event);
	
	event = event ? event : window.event;
  	
  	var wheelData = event.detail ? -event.detail : event.wheelDelta/40;
  	wheelData =(window.opera) ? -wheelData : wheelData;
  	
  	$(element).scrollTop($(element).scrollTop() - wheelData);
}

function openPrivatePage(){
	$('#content').css('height', null);
	$('#content').load("/Comunidade/html/private_page.html");
}

function openRestrictedPage(user){
	$('#content').css('height', null);
	
	UserMenu.hide();
	
	$('#content').load("/Comunidade/html/restricted_page.html");
}

