$(function(){

	cqlook.loader.init();
	Cufon.replace('h2', {fontFamily: 'dinprolight'});
	Cufon.replace('.btn, nav li a, footer ul a, footer strong, #perguntas h2, .pins h4, .pins h3, .expertform h4, .infoResumo h3', {fontFamily: 'dinpromedium'});
	Cufon.replace('.search label,.post h2, .answersTools label, #favoriteModal h2, .userPostsTabs, .aboutPins dt, #embedModal h2', {fontFamily: 'dinproregular'});
	Cufon.replace('.manyLiked, .profile dt, #faq dl em', {fontFamily: 'dinprobold'});
	
	$('#buscaAtivo').toggle(
	function(){
		$(this).addClass('buscaAtivo')
		$('#fechar').show();
		$('#busca').show();
		$('#abrir').hide();
		$('.idiomas').hide();
		$('.img_seta').hide();
		$('.img_seta2').show();
	},
	function(){
		$(this).removeClass('buscaAtivo')
		$('#fechar').hide();
		$('#busca').hide();
		$('#abrir').show();
	});
	
	$('.buscabt').click(function(){
		$('#trata').submit();
	});
	
	$('#mundo').toggle(
		function(){
			$('.idiomas').show();
			$('.img_seta').show();
			$('.img_seta2').hide();
			$('#buscaAtivo').removeClass('buscaAtivo')
			$('#fechar').hide();
			$('#busca').hide();
			$('#abrir').show();
		},
		function(){
			$('.idiomas').hide();
			$('.img_seta').hide();
			$('.img_seta2').show();
	});
	
	$('.inputPlaceHolder').inputPlaceHolder();

	$('#swfModal, #mediaModal, #messageModal, #favoriteModal, #wentModal, #privateModal, #removeModal').overlay({
		top: 100, closeOnClick: false, oneInstance: false,
		mask: {
			color: '#000000',
			loadSpeed: 1100,
			opacity: 0.7
	}});
	if($(document).width()<800){
		FB.Canvas.setSize({ width: 760, height: $('#fb-rootbody').height()+75});
		$("#questions select, .expertsbox select").uniform();
	}
	$('#embedModal').overlay({
		top: 20, closeOnClick: false, oneInstance: false,
		mask: {
			color: '#000000',
			loadSpeed: 1100,
			opacity: 0.7
	}});
	
	/* Localization setup */
	$.tools.validator.localize('pt', {
		':email'  		: 'E-mail inválido',
		'[required]'	: 'Preencha o campo obrigatório'
	});	
		
	cqlook.search.init();
	login.init();
	aside.init();
	footer.init();
	embedQuestion();
	
	//Convidar amigos
	$('.btn-fr').click(function() {
	
		top.location.href = 'http://www.facebook.com/dialog/apprequests?app_id=199653013384676&redirect_uri=' + escape('http://apps.facebook.com/comquelookteste/') + "&message=" + 'Com que look eu vou? é um ambiente que ajuda a tirar todas as suas dúvidas sobre o que vestir. Você pode perguntar, responder e até testar suas habilidades de consultor de estilo';
	
	});
	
	$("body").ajaxSuccess(function(el, xhr, set) {		
		try {			
			var jsonobj = $.parseJSON(xhr.responseText);							
			var user_id = $.parseJSON(jsonobj.data).id;
						
			if(jsonobj.pins != undefined && jsonobj.pins.length > 0 && (user_id != undefined && typeof(user_id) != undefined && user_id != 'undefined' && typeof(user_id) != 'undefined')) {				
				showPins(jsonobj, user_id);
			}
		} catch(e) {}
	});
	
	
$(".answer textarea, textarea#description").
		keyup(answerLimiter).bind('paste', answerLimiter);	
});

function showPins(pins, user_id)
{
	var modal;
	
    div = '<div id="pins_container">';
    for(i = 0; i < pins.length; i++) {
        div +=  '<div id="pin_modal_'+i+'" class="s_modal">';
        div +=  '   <a href="#" class="close_modal right"><img src="/images/fechar_alerta.gif" /></a>';
        div +=  '   <div class="top_pin">'
        div +=  '       <img src="/images/pins/'+pins[i].type+'.png" />';
        div +=  '       <h3>'+pins[i].name+'</h3>';
        div +=  '   </div>';
        div +=  '   <div class="n_modal">';
        div +=  '       <p>'+pins[i].description+'</p>';
        div +=  '   </div>';
        div +=  '   <img src="/images/bottom_pin.png" />';
        div +=  '</div>';
    }
    div += '</div>';
    $('body').append(div);
    
    first_modal = $("#pin_modal_0");
    setModalPosition(first_modal);
    first_modal.show();
    $('#pins_container .close_modal').click(function(e) {
       e.preventDefault();
       $(this).parent().remove();
       modal = $("#pins_container").find(".s_modal:first");
       if(modal) {
           setModalPosition(modal);
           modal.show();
       }
   });
}

function setModalPosition(el) {
	
    var screenSize = new Array();
    if(!window.innerHeight){
            screenSize["height"] = document.documentElement.clientHeight;
            screenSize["width"] = document.documentElement.clientWidth;
    } else {
            screenSize["height"] = window.innerHeight;
            screenSize["width"] = window.innerWidth;
    }
    el.css({
        top	: screenSize["height"] / 2,
        left	: screenSize["width"] / 3,
        position: 'fixed'
    });

}

var answerLimiter = function() {

	var max = 1000;
			textarea = $(this),
			numChars = textarea.val().length,
			remaining = max - numChars;
	
	if (numChars >= max)
		textarea.val(textarea.val().slice(0, max - 1));
	
	if (remaining < 0)
		remaining = 0;
};

var embedQuestion = function() {

	$('.embedAction').click(function(){
	
		var aHref = $(this),
			postId = aHref.attr('data-post-id'),
			modal = $('#embedModal'),
			snippet = '<object width="520" height="270" type="application/x-shockwave-flash" data="' + baseHref + 'swf/EmbedQuestion.swf" name="_321730645" id="_321730645">'+
					'<param value="true" name="allowfullscreen">' +
					'<param value="always" name="allowscriptaccess">'+
					'<param value="high" name="quality">'+
					'<param value="window" name="wmode">'+
					'<param value="DOUBT_ID=' + postId +'&amp;BASE_URL=' + baseHref + '" name="flashvars">'+
					'<embed src="' + baseHref + 'swf/EmbedQuestion.swf" FlashVars="DOUBT_ID=' + postId +'&amp;BASE_URL=' + baseHref + '" name="flashvars" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="520" height="270"></embed>'+
					'</object>';			
			
		modal.find('textarea').val(snippet);
			
			
		modal.find('#swfQuestion').empty().flashembed({
			src: "/swf/EmbedQuestion.swf",
			wmode: 'window'
		},{
			DOUBT_ID: postId,
			BASE_URL: baseHref
		});	
		

		modal.data('overlay').onClose = function() {
			modal.find('#swfQuestion').empty();
		};
		
		modal.data('overlay').load();
		
		ZeroClipboard.setMoviePath( baseHref + 'js/ZeroClipboard.swf' );
		
		var clip = null;
		
		clip = new ZeroClipboard.Client();
		
		clip.addEventListener('mousedown', function (client) {
			clip.setText(snippet);
			$('#embedModal textarea').hide();
			$('#embedModal textarea').fadeIn('slow');
		});
		
		clip.setHandCursor(true);
		
		clip.glue( 'embedCopy', 'embedModalWrapper');		
	});
};

var invite = function(){

	var cfg, modal, message, friends;

	return {

		init: function(cfgParam) {

			cfg = cfgParam;

			modal = $('#inviteModal').data('overlay'),
			modal.onClose = cfg.onClose || function() {};

			$('#inviteSend').unbind('click').click(invite.send)
			//$('#inviteCancel').unbind('click').click(modal.close);

			message = $('#inviteMessage'),
			friends = $('#inviteFriends');

			message.val('');
			friends.val('');
		},

		open: function() {
			modal.load();
		},

		send: function() {

			var valid = true,
				friendsList = friends.val().split(','),
				data = {
          'type': cfg.type,
					'friends': friendsList,
					'message': message.val(),
                                        'link'   : $("#shareUrl").val()
				};

			for (var i = 0; i < friendsList.length; i++) {
				friendsList[i] = $.trim(friendsList[i]);
				if ( ! validateEmail(friendsList[i])) {
					valid = false;
				}
			}

			if ( ! valid) {
				$('#invalidFriends').show();
				return;
			}

			$.getJSON(cfg.service, { 'json': JSON.stringify(data) }, function(json){
				if (!json || !json.success) {
					cqlook.showMessageModal('Ocorreu um erro!', 'error');
					return;
				}

				cqlook.showMessageModal(cfg.messages.success, 'ok');
			});
		}
	};
}();

cqlook.search = {
	init: function() {
		$('.search-action').click(function(){
			if ($('.search input').val() == "O que você procura?" || $('.search input').val() == "") {
				cqlook.showMessageModal('Você não digitou nada no campo de busca!', 'warning');
				return;
			}
			$('.search').submit();
		});
	}
};

var login = {
	init: function(){
		$('.btn-login a').click(function(){
			login.checkStatus(true);
			if ($('.btn-login a').hasClass('on')) $('.btn-login a').removeClass('on'); else $('.btn-login a').addClass('on');
		});
		
		login.valida();
	},
	expand: function() {
		
		$('html, body').animate({scrollTop:50}, 'slow')	;
		
		$('#form-recover').fadeOut();
		$('#form-login').slideToggle();
		$('#form-login #login').focus();
		$('#form-login .error').toggle();
		$(this).toggleClass('on');			
	},
	checkStatus: function(isClick) {
		
		if ( $('#form-login').is(':hidden')) {
			login.expand();
		}
		else {
			if (isClick) {
				login.expand();
			}
			$('#form-login #login').focus();
		}
	},	
	valida: function(){
		
		$('#form-login .btn').click(function(){
			$('#form-login').submit();
		});
		
		$('.switch-form').click(function(e){
			e.preventDefault();
			var aHref = $(this),
					which = aHref.attr('data-form');
			$('.form-login').fadeOut(function(){
				$('#form-' + which).fadeIn();
			});
		});			
			
		
		$('#form-recover .btn').click(function(){
		
			var login = $("#login-recover");
					
			if ( ! login.data('validator').checkValidity() ) {
				return;
			}
			
			$.getJSON('/services/user/recover_password', {email: login.val()}, function(json){
				
				if (json.success === true) {
					$('#login-recover').val('');
					$('.form-login').slideUp();
					if ($('#content').width() == 680) {
					cqlook.showMessageModal('Sua senha foi recuperada.<br />Ela foi enviada para o seu e-mail!', 'ok', function() { $('#modalLogin').data('overlay').load(); });
					} else{
					cqlook.showMessageModal('Sua senha foi recuperada.<br />Ela foi enviada para o seu e-mail!', 'ok');
					}
					return;
				}
				if ($('#content').width() == 680) {
				cqlook.showMessageModal('Não foi possível recuperar sua senha ;-(', 'error', function() { $('#modalLogin').data('overlay').load();});		} else{
				cqlook.showMessageModal('Não foi possível recuperar sua senha ;-(', 'error');
				}
			});
			
    });
		
		$('#form-login #login, #form-login #password').keydown(function(e){
			if (e.which === 13) {
				$('#form-login .btn').click();
			}
		});
		
		$("#login-recover").validator({
			position: 'top left', 
			offset: [-12, -90],
			message: '<div><em class="recover" /></div>',
			lang: 'pt'
		});
	
		$('#form-login').validator({ 
			position: 'top left', 
			offset: [-12, 0],
			message: '<div><em/></div>',
			lang: 'pt'
		}).submit(function(e) { 
			var form = $('#form-login');
			if (!e.isDefaultPrevented()) {
				if ($('#bodyfb').width() == 758) {
					$.post('/index-facebook.php/login?', form.serialize(), function(result) {
						// alert(result);
						var json = $.parseJSON(result);	
						// alert(json.success);
						if (json.success === true)  {
							_gaq.push(['_trackPageview(\'/login-por-facebook.htm\')']);
							location.href = json.data.redirect + 'index-facebook.php';
						}else{
							if (json.error_code == 'invalid_fb') {
								cqlook.showMessageModal('Esta conta do Com que look vou? já esta associada a outra conta de Facebook. Favor tente com outras informações de acesso.<br />E caso você seja proprietário desta conta no Com que look vou?, favor entrar em Meu Perfil >> Área de Redes Sociais  e trocar o seu vinculo de conta para o correto', 'error', function() { $('#modalLogin').data('overlay').load(); });
							} else if (json.error_code == 'invalid_login')
								cqlook.showMessageModal('Login ou senha inválidos!', 'error', function() { $('#modalLogin').data('overlay').load(); });
							return false;
						}
					});
				} else {
					$.post('/login?', form.serialize(), function(result) {
						// alert(result);
						var json = $.parseJSON(result);	
						// alert(json.success);
						if (json.success === true)  {
							_gaq.push(['_trackPageview(\'/login-por-site.htm\')']);
							location.href = json.data.redirect;
						}else{
							form.data("validator").invalidate({"login": "Login ou senha inválidos"});
							return false;
						}
					});
				
				}
			}
		});
	}
}

var aside = {
	
	init: function(){
		aside.experts();
	},
	
	experts: function(){
		
		var current,
			divs = $('.info-experts'); 
		
		var inSide = function() {
			divs.hide();
			current = $(this).find('.info-experts');
			current.fadeIn();
		};
		
		var outSide = function() {
			current.fadeOut();
		};
		
		$('.fashion-experts li, .fashion-experts h5').
			hover(inSide, outSide);
	}
};

var footer = {
    init: function() {
		footer.share();
		footer.lightbox();
		footer.topo();
		footer.faq();
    },
	share: function(){
		// facebook e twitter share
		$('footer .btn-fb a, footer .btn-twitter a').click(function(e){
			e.preventDefault();
			
			var aHref = $(this).attr("href");
			
			if ($('.question').attr('[data-permalink')) {
				aHref = $('.question').attr('[data-permalink');
			}
			
			window.open(aHref);
			//util.popup(aHref);
		});
	},
	lightbox: function(){
		$('a[rel]').overlay({
			mask: {
				color: '#000',
				loadSpeed: 200,
				opacity: 0.7
			},
			onBeforeLoad: function() {
				var wrap = this.getOverlay().find('.modal-content');
				wrap.load(this.getTrigger().attr("href") + ' .modal-content', function(){
					Cufon.refresh();
				});
				footer.faq();
			},
			onLoad: function(){
				footer.faq();
			}
		});
	},
	topo: function(){
		if($(window).width()>=1100) {
			$('#main').append('<a href="#topo" id="btn-ir-topo">Voltar ao topo</a>');
			$('#btn-ir-topo').click(function(e){
				e.preventDefault();
				$('html, body').animate({scrollTop:50}, 'slow');
			});
			if($(window).scrollTop() > $(window).height()){			
				$('#btn-ir-topo').fadeIn();
			}
			$(window).scroll(function(){
				var $scrollingDiv = $(".boxnav");
				if($(window).scrollTop() > $(window).height()){			
					$('#btn-ir-topo').fadeIn();
				}else{
					$('#btn-ir-topo').fadeOut();
				}
			});

		}
	},
	faq: function(){
		footer.faq_i = 1;
		$('#faq dt').each(function(){
			$(this).prepend('<em>'+footer.faq_i+'</em>');
			footer.faq_i++;
			if(footer.faq_i>32) footer.faq_i = 1;
		});
		Cufon.refresh();
	}
};

var util = {
	popup: function(url){
		var width = 800;
		var height = 360;
		var left = parseInt((screen.availWidth/2) - (width/2));
		var top = parseInt((screen.availHeight/2) - (height/2));
		var windowFeatures = "width=" + width + ",height=" + height + ",status,resizable,left=" + left + ",top=" + top + "screenX=" + left + ",screenY=" + top;
		window.open(url, "Share", windowFeatures);
	}
}
