/**
 * Stars Vote
 * @author Stewan Pacheco
 */
function stars_vote() {	
	$("div#stars-wrapper").stars({
		captionEl: $("#stars-cap")
	});
	$("#stars-wrapper").stars("select", 0);
	
	$("div#stars-wrapper-disabled").stars({
		disabled: true	
	});
	$('div#stars-wrapper, div#stars-wrapper-disabled').fadeIn(500);	
}

function header_menu() {
	
	$('input[name="q"]').click(function(){
		$(this).select();
	})
	
	$("div.topbar ul.list").each(function(){
		$(this).children('li:first').css('margin-top','10px');
		$(this).children('li:last').css('margin-bottom','10px');
	})
	
	$("div.category_large div.ads ul").each(function(){
		//console.debug($(this).children('li:last'));
		$(this).children('li:last').css('border','none');
	})
	
	//top bar menu
    $("div.topbar div.icon_header_seta").bind("mouseenter",function(){
    	var $menu = $(this).next('ul.list');	
    	var $menus = $('div.topbar ul.list');	
		$menus.prev('div.icon_header_seta').removeClass('icon_header_seta_hovered');
		$menus.hide();
		$menu.show();
       
    }).bind("mouseleave",function(){
    	var $menu = $(this).next('ul.list');
    	//altero o estilo
    	$(this).addClass('icon_header_seta_hovered');
    	//
    	$menu.bind("mouseleave",function(){    		
    		$menu.prev('div.icon_header_seta').removeClass('icon_header_seta_hovered');
			$menu.hide();	       
	    });
    	$('div.contentbar,div.headerbar').bind("mouseenter",function(){    		
    		$menu.prev('div.icon_header_seta').removeClass('icon_header_seta_hovered');
			$menu.hide();	       
	    });
    });
	
	//category menu
    $("div.headerbar div.click").bind("mouseenter",function(){
    	var $menu = $(this).next('ul.list');	
    	var $menus = $('div.headerbar ul.list,div.headerbar div.input div.anc');
    	//console.debug($menus);
		$menus.prev('div.click').removeClass('click_hovered');
		$menus.hide();
		$menu.show();
       
    }).bind("mouseleave",function(){
    	var $menu = $(this).next('ul.list, div.anc');
    	//altero o estilo
    	$(this).addClass('click_hovered');
    	//
    	$menu.bind("mouseleave",function(){    		
    		$menu.prev('div.click').removeClass('click_hovered');
			$menu.hide();	       
	    });
    	$('div.contentbar,div.headerbar, div.topbar').bind("mouseenter",function(){    		
    		$menu.prev('div.click').removeClass('click_hovered');
			$menu.hide();	       
	    });
    });
    
    //category menu click
    $("div.headerbar ul.list_category a").bind("click",function(){
    	var selected = $(this).html();
    	var slug = $(this).attr('slug');    	
    	ajax_cat_sel_sub(slug);
    });
    
    //input query click
    $("div.headerbar div.click").bind("click",function(){ 
    	var $form = $('div.headerbar form');
    	var $input = $('div.headerbar form input.q').val();    	
    	//if ($input != 'palavra-chave' && $input != '') //user pode buscar somente por categoria    	
    	$form.submit();    		
    });
    

}
function subcat_click() {
	//subcategory menu click
    $("div.headerbar ul.list_subcategory a").live("click",function(){		    	
    	var selected = $(this).html();
    	var slug = $(this).attr('slug');
    	set_subcat(selected, slug);
    });
}

function ajax_mount_sub(html) {
	$('div.select_subcategory ul.list_subcategory').html(html);	
}

function ajax_cat_sel_sub(slug) {	
	//ajax pra pegar as subcats
	$.post(BASE_URI+'ads/ajax_subcats', { cat_slug: slug },function(data) {	
		//console.debug(data);
		if (data == null) {
			unset_subcat('');
			ajax_mount_sub('');
			set_cat('','');
		}else{
			unset_subcat('Selecione');
			ajax_mount_sub(data.html);
			set_cat(data.cat.title,data.cat.slug);
		}
    
	},'json'); 
}

function ajax_test_catsub(slug) {
	//ajax pra pegar as subcats
	$.post(BASE_URI+'ads/ajax_test_catsub', { cat_slug: slug },function(data) {
		if (data.sub) {			
	    	set_subcat(data.sub.title, data.sub.slug);
	    	//ajax_mount_sub(data.html);
		}
		
		if (data.cat) {			
	    	set_cat(data.cat.title, data.cat.slug);	    
	    	//ajax_mount_sub(data.html);
		}
		ajax_mount_sub(data.html);
		
	},'json'); 
}

function set_subcat(selected, slug) {
	$('div.select_subcategory div.key p').html(selected);
	$('div.select_subcategory input[name="s"]').val(slug);	
}

function set_cat(selected, slug) {
	$('div.select_category div.key p').html(selected);
	$('div.select_category input[name="c"]').val(slug);
}

function unset_subcat($msg) {
	$('div.select_subcategory div.key p').html($msg);
	$('div.select_subcategory input[name="s"]').val('');	
}

function set_query(q) {	
	$('div.headerbar input[name="q"]').val(q);		
}

function anc_alert(type,msg,timer) {
	if (!timer)
		var timer = 10*1000;
	else
		var timer = timer*1000;
	//type = warning, error, success, info
	//$("div#alertbar div.alert-message").fadeOut(100, function(){$(this).remove(); });
	var html;
	var d = new Date();
	var t = d.getMilliseconds();
	html = '<div class="alert-message '+type+' '+t+'"><a class="close" href="#" onclick="return false">×</a><p>'+msg+'</p></div>';
	
	$(html).appendTo('div#alertbar');
	//$("div#alertbar div.alert-message").alert();
	
	//fechar automaticamente as notificações
	setTimeout('close_alert(0.2,'+t+')',timer);
	
	$('div.'+t+' a.close').bind('click',function(){
		close_alert(0.2,t);
	});
}

/**
 * Função para fechar todas as notificações depois de algum tempo 
 */
function close_alert(speed, quem) {  
	
	var myDiv = jQuery("."+quem);
	myDiv.clearQueue(); //impedir os bugs de acumulação de clicks

	myDiv.stop(true,true).animate({
		//opacity: 0,
		height: 'toggle'
	}, (speed*1000), function() {
	    // Animation complete.
		 myDiv.remove();
	});	 

}

function login_g() {
	var login_params=
	{
		showTermsLink: 'false'
		,height: 30
		,width: 300
		,containerID: 'logwrap'
		,UIConfig: '<config><body><controls><snbuttons buttonsize="30" /></controls></body></config>'
		/*,buttonsStyle: 'fullLogo'*/
		,autoDetectUserProviders: ''
		,facepilePosition: 'bottom'
	}
	gigya.services.socialize.showLoginUI(conf,login_params);
}



function chars_limit(textarea, limit, infodiv) {

	var text = textarea.value;
	var textlength = text.length;
	var info = document.getElementById(infodiv);

	if (textlength > limit) {
		info.innerHTML = 'Limite de ' + limit
				+ ' caracteres atingido';
		textarea.value = text.substr(0, limit);
		return false;
	} else {
		info.innerHTML = (limit - textlength)
				+ ' caracteres restantes';
		return true;
	}

}

function fix_binding() {	
	// remove layerX and layerY
	var all = $.event.props,
	    len = all.length,
	    res = [];
	while (len--) {
	  var el = all[len];
	  if (el != 'layerX' && el != 'layerY') res.push(el);
	}
	$.event.props = res;	
}

function twipsy() {	
	$('div.twipsy').remove();
	$('a[rel="twipsy"]').twipsy({
        live: true,
        delayOut: 5
    });
}

function social_footer() {
    var social_logo = new gigya.services.socialize.UserAction();
    social_logo.setUserMessage("Conheça o anunciando.net");
    social_logo.setTitle("Classificados Online");
    social_logo.setLinkBack("http://www.facebook.com/pages/Anunciando/336654953025656");
    social_logo.setDescription("Um ótimo site de classificados na internet.");
    social_logo.addActionLink("Confira", "http://www.anunciando.net");
    social_logo.addMediaItem({ type: 'image', src: 'http://images.anunciando.net/anc_small_logo.png', href: 'http://www.anunciando.net' });						
    var showShareBarUI_params_social_logo=
    { 
        containerID: 'social_logo',
        shareButtons: 'Facebook-Like,Google-plusone',
        userAction: social_logo,
        lang: 'pt-br'
    }
    gigya.services.socialize.showShareBarUI(conf,showShareBarUI_params_social_logo);
}

function create_cat_click() {	
	$('div.categories p.title').live('click',function() {
		
		var pTitle = $(this);
		var pCheckAll = $('div.categories p.check img.selected');
		var pCheckedAll = $('div.categories p.checked');		
		var slug = $(this).attr('cat');	
		
		$.scrollTo( 'div.cats', 800 );
		$('form.create input#cat').val(slug);			
		$('div.subcategories').addClass('loader');
		
		pCheckAll.stop().fadeOut();
		pCheckedAll.removeClass('checked',500);
		$('div.setao img').css('width','0');
		$('div.subcategories ul').html('');
		$('form.create input#subcat').val('');
		
		pTitle.prev().children('img.selected').slideDown(100);
		
		$('div.setao img').animate({				  
			 //   left: '+=50',
			    width: '28px'
			  }, 500, function() {
					$.post(BASE_URI+'ads/ajax_subcats_all', { cat_slug: slug },function(data) {	
						$('div.subcategories').removeClass('loader');
						//console.debug(pTitle.prev().children('img.selected'));			
						
						pTitle.addClass('checked',100);
						//console.debug(data.html);
						if (data.html != undefined) {	
							$('div.subcategories h2').fadeIn();
							$('div.subcategories ul').css('display','none').html(data.html).fadeIn(100);				
						}else{
							pTitle.removeClass('checked',100);	
							$('div.subcategories ul').css('display','none').html('A categoria <strong>'+data.cat.title+'</strong> não possui nenhuma subcategoria no momento.').fadeIn(100);	
						}
						
						$('div.cats p.suggest').fadeIn();
						$('div.cats p.suggest input.suggestion').val('');
				    
					},'json');
		}); 
	});
}
function create_subcat_click() {
	$('div.subcategories').removeClass('loader');	
	$('div.subcategories p.title').live('click',function() {
		
		var pTitle = $(this);
		var pCheckAll = $('div.subcategories p.check img.selected');
		var pCheckedAll = $('div.subcategories p.checked');		
		var slug = $(this).attr('cat');		
		
		$('form.create input#subcat').val(slug);
		pCheckAll.stop().fadeOut();
		pCheckedAll.removeClass('checked',500);
	
		
		pTitle.prev().children('img.selected').slideDown(100);
		$('div.cats p.suggest').fadeOut();
		$('div.cats p.suggest input.suggestion').val('');

	});
}

function create_check_body (alertClass) {
	if (!alertClass) var alertClass = 'alert';
	$('textarea[name="ads_body"]').live("keyup",function(){
		var result = check_body(alertClass);
    	//console.debug(result);
    	if (result === false) {
    		$('input#check_body').val('0');
    		hide_forbid_message('ads_body',alertClass);
    	}else{
    		$('input#check_body').val('1');
    		slide_forbid_message('ads_body',alertClass);
    	}
	});	
}

function create_check_title(alertClass) {
	if (!alertClass) var alertClass = 'alert';
    $('input[name="ads_title"]').live("keyup",function(){		    	
    	var result = check_subject(alertClass);
    	
    	if (result === false) {
    		$('input#check_title').val('0');
    		hide_forbid_message('ads_title',alertClass);
    	}else{
    		$('input#check_title').val('1');
    		slide_forbid_message('ads_title',alertClass);
    	}
    });
}

function create_get_all_cities() {
$('select[name="ads_state"]').bind('change',function() {
	var state = $(this).val();
		
	$.post(BASE_URI+'ads/ajax_get_all_cities', { uf: state },function(data) {
		if (data != undefined)
		$('select[name="ads_city"]').html(data.html);   
	},'json');	
	});
$('select[name="ads_state"]').trigger('change');
}

function format_price(inputName) {	
	$('#'+inputName).priceFormat({
	    prefix: 'R$ ',
	    centsSeparator: ',',
	    thousandsSeparator: '.'
	});
}

function busca_cep() {
	$('input[name="ads_zipcode"]').bind('blur',function() {
		var cep = $(this).val();
		jQuery.post(BASE_URI+'ads/busca_cep', { cep: cep },function(data) {	
			
			if (data != undefined && data.status == 'ok') {
				$('input[name="ads_street"]').val(data.result.logradouro+ ', número - ' + data.result.bairro);    
				$('select[name="ads_state"]').val(data.result.estado);
				$('select[name="ads_state"]').trigger('change');
				var func = "create_set_city('"+data.result.cidade+"')";
				setTimeout(func,1000);
			}
		},'json');
	});
}

function create_set_city(city) {	
	$('select[name="ads_city"]').val(city);
}

function create_action_next(etapa) {
	if (etapa == 2) {
		jQuery('div.actions input.next').bind('click',function(){
			var val_bkp = $(this).val();
			var botao = $(this);			
			
			jQuery(this).removeClass('next').addClass('next-off').val('enviando › aguarde..').attr('val_bkp',val_bkp);
			
			var post = {};
			jQuery('form.create input, form.create select, form.create textarea').each(function(i){								
				if ($(this).attr('name') == 'ads_interesse') {
					var value = $('form.create input:checked').val();
					if (value != undefined) {					
					post['ads_interesse'] = value;					
					}
				}else{
					var key = $(this).attr('name');
					var value = $(this).val();								
					post[key] = value;				
				}				
			});		
			
			jQuery.post(BASE_URI+'ads/create_ajax', post,function(data) {				
				if (data.msg) {
					jQuery.scrollTo( 'div.headerbar', 800 );	
					anc_alert(data.type,data.msg);				
					botao.removeClass('next-off').addClass('next').val(val_bkp).removeAttr('val_bkp');	
				}else if (data.ads_id) {
					$('input#ads_id').val(data.ads_id);
					//postar pra etapa3
					var $form = $('form.create');
					$form.submit();
				}
			},'json');
		});
	}else if(etapa == 1) {
		jQuery('div.actions input.next').bind('click',function(){
			var cat = $('input#cat').val();			
			if (cat == '') {
				jQuery.scrollTo( 'div.headerbar', 800 );	
				anc_alert('error','<h3>Atenção</h3> <p>Selecione ao menos uma categoria antes de prosseguir</p>');
			}else{
				if ($('body').attr('uid') != undefined) {
			    	var $form = $('form.create');		    	
			    	$form.submit();
				}
			}
		});
	}else if(etapa == 3) {
		jQuery('div.actions input.next').bind('click',function(){
			//postar pra revisao (final)
			var $form = $('form.create');
			$form.submit();
		});
	}else if(etapa == 'final') {
		jQuery('div.actions input.next').bind('click',function(){
			//postar pra revisao (final)
			var $form = $('form.create');
			$form.submit();
		});
	}
}

function create_action_prev(etapa) {
	//if (etapa == 3) {
		jQuery('div.actions button.prev').bind('click',function(){
			var url = jQuery('form.create').attr('prev_url');			
			jQuery.loadpage(url); // with history as default
		});
	//}
}

function create_uploadify() {
	$(function() {
		//var uri = '/ads/uploadify/'+$('form.create').attr('request_uri');
		var uri = '/ads/uploadify/'+$('input#ads_id').val()+'/'+$('input#user_id').val();
		//alert(uri);
		$('#custom_file_upload').uploadify({
		'uploader'       : '/uploadify/uploadify.swf',
		'script'         : uri,
		'cancelImg'      : '/uploadify/cancel.png',
		'folder'         : '/uploads/uploadify',
		'multi'          : true,
		'auto'           : true,
		'fileExt'        : '*.jpg;*.gif;*.png',
		'fileDesc'       : 'Arquivos de imagem (.JPG, .GIF, .PNG)',
		'queueID'        : 'custom-queue',
		'queueSizeLimit' : 3,
		'simUploadLimit' : 3,
		'sizeLimit'   : 512000, //~500k //102400 ~100k
		'removeCompleted': false,
		'onSelectOnce'   : function(event,data) {
		$('#status-message').text(data.filesSelected + ' arquivos foram adicionados a fila de envio.');
		},
		'onAllComplete'  : function(event,data) {
		$('#status-message').text(data.filesUploaded + ' arquivos enviados, ' + data.errors + ' errors.');
		}
		});
	});
}

function indexes_category_large_more() {
	$(function(){
		$('div.category_large a.mais').live('click',function(){
			var cat_id = $(this).attr('cat_id');
			var cat_unique_id = $(this).attr('cat_unique_id');
			var $ul = $('ul.popCat-'+cat_unique_id);
			var offset = $ul.attr('offset');
			var ranking = $ul.attr('ranking');
			var $amais = $(this);
			var i = $ul.attr('i');
			
			//console.debug($ul);
			
			$.post(BASE_URI+'ads/indexes_more/', { cat_id: cat_id, offset: offset,ranking: ranking, i:i },function(data) {
				if (data != null) {
					offset = parseInt(offset) + 3;
					$ul.attr('offset',offset);
					$ul.hide();
					$ul.html('');
					//console.debug(data);
					$ul.html(data);
					$ul.fadeIn();	  
					twipsy();
				}else{
					var amais_text = $amais.find('p').html();
					amais_text = str_replace('Outros anúncios', 'Nenhum resultado - ', amais_text);
					$amais.find('p').html(amais_text);
					$amais.find('p strong').html('Voltar');					
					$amais.removeClass('mais').addClass('voltar');			
				}
				
			},'json');
		})
		
		$('div.category_large a.voltar').live('click',function(){
			var cat_id = $(this).attr('cat_id');
			var cat_unique_id = $(this).attr('cat_unique_id');
			var $ul = $('ul.popCat-'+cat_unique_id);	
			var $avoltar = $(this);
			var i = $ul.attr('i');
			
			
			$.post(BASE_URI+'ads/indexes_more/', { cat_id: cat_id, offset: 0, limit: 3, i:i },function(data) {
				
					
					$ul.attr('offset','3');
					
					if (data != null) {
						$ul.hide();
						$ul.html('');
						$ul.html(data);	  
						$ul.fadeIn();
						twipsy();
					}
			
					var catName = $avoltar.attr('cat_name');
					$avoltar.find('p').html('Outros anúncios <strong>desta categoria</strong>');								
					$avoltar.removeClass('voltar').addClass('mais');					
				
			},'json');
		})
	})
}

function indexes_category_large() {
	jQuery(function($) {
		$('div.category_large').bind('mouseenter',function(){
			$(this).css('opacity','1');
			$('div.main div.category_large').not(this).css('opacity','0.6');
		});
		$('div.contentbar').hover(function(){
			$('div.main div.category_large').css('opacity','1');	
		});
	});
}

function indexes_rank_click() {
	jQuery(function($){
		$('div.ranklink a').live('click',function(){
			var rank = ($(this).attr('rank'));
			$('div.rank div.container').hide();
			$('div.rank div.'+rank).fadeIn();
		})
	})
}

function str_replace (search, replace, subject, count) {
    // Replaces all occurrences of search in haystack with replace  
    // 
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/str_replace
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Gabriel Paderni
    // +   improved by: Philip Peterson
    // +   improved by: Simon Willison (http://simonwillison.net)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   bugfixed by: Anton Ongson
    // +      input by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    tweaked by: Onno Marsman
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   input by: Oleg Eremeev
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Oleg Eremeev
    // %          note 1: The count parameter must be passed as a string in order
    // %          note 1:  to find a global variable in which the result will be given
    // *     example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
    // *     returns 1: 'Kevin.van.Zonneveld'
    // *     example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
    // *     returns 2: 'hemmo, mars'
    var i = 0,
        j = 0,
        temp = '',
        repl = '',
        sl = 0,
        fl = 0,
        f = [].concat(search),
        r = [].concat(replace),
        s = subject,
        ra = Object.prototype.toString.call(r) === '[object Array]',
        sa = Object.prototype.toString.call(s) === '[object Array]';
    s = [].concat(s);
    if (count) {
        this.window[count] = 0;
    }
 
    for (i = 0, sl = s.length; i < sl; i++) {
        if (s[i] === '') {
            continue;
        }
        for (j = 0, fl = f.length; j < fl; j++) {
            temp = s[i] + '';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp).split(f[j]).join(repl);
            if (count && s[i] !== temp) {
                this.window[count] += (temp.length - s[i].length) / f[j].length;
            }
        }
    }
    return sa ? s : s[0];
}


