var FORMATOS = window.FORMATOS || {}

FORMATOS.init = function(){
	$('#formatId').change(function(e){
		mysrc = $('#formatoimg').attr('src');
		replacement = '_'+$(this).val()+'.gif';
		$('#formatoimg').attr('src', mysrc.replace(/_[0-9]+\.gif$/, (this.value>0)?replacement:'_1.gif'));
	});
	$('[@name="alteraousalva"]')
		.focus(function(e){
			var cond = ($(this).val() == 'criar')?true:false;
			$('#formPadroes [@name="action"]').val((cond)?'save':'update');
		});
	$('.mudaradio')
		.focus(function(e) {
			$(this).ancestors('p').find('[@type="radio"]').attr('checked','true');
		});
	FORMATOS.startColors();
	FORMATOS.colorPalets();
	$('#formPadroes').submit(FORMATOS.ajaxSalvaFormato);
	$('select[@name="typeId"]').change(FORMATOS.ajaxCarregaFormato)
    $('#formExcluirPadrao').submit( function (e) {
		e.preventDefault();e.stopPropagation();
		if($('#comboExcluir').val() != "-1") {
			UOLPROD.confirmAction('Tem certeza que deseja excluir o padrão de cores selecionado?', FORMATOS.ajaxExcluirFormato, null, 'padroesResult')
		} else {
			$('#comboExcluir').addClass('invalid');
			$('#padroesResult').html('<p class="msg alert">Nenhum padrão foi selecionado para exclusão.</p>');
			$('select.invalid').each(function(e){$(this).after('<img class="invalidImg" src="http://shopp.img.uol.com.br/v2006/icone-alert-mini.gif" alt="Escolher uma opção" />');});
			$('select.invalid').onechange(function(e){$(this).removeClass('invalid').siblings('.invalidImg').remove();});
		}
		});
}

FORMATOS.colorPalets = function(e){
	$('.colorpreview').click(FORMATOS.openPalet);
}

FORMATOS.openPalet = function(e){
	$(this).blur();
	e.preventDefault();e.stopPropagation();
	myID = this.id;
	$('#pCores').addClass('hidden');
	if( $('#pCores').length && $('#pCores').attr('rel') == myID){
		$('#pCores').attr('rel','');
		return;
	}
	$(this).ancestors('.bloco').position('static');
	off = $(this).offset($(this).ancestors('.bloco'));
	pTop = off.top -1;
	pLeft = off.left + off.width + 2;
	if(!$('#pCores').length) {
		var html = '<div id="pCores" style="float:left; z-index:100;"><div id="previewCor"><span>&nbsp;</span></div><table>';
		var cores = ["00","33","66", "99", "CC", "FF"]
		var r = g = b = 0;
		for(var i=1;i<=12;i++){
			html +='\n<tr>'
			for(var j=1;j<=18;j++) {
			html +='\n<td><a href="#" rel="'+cores[r]+cores[g]+cores[b]+'">&nbsp;</a></td>';
				g++;if(g==6){g=0;r++;}if(r==6){r=0;}
			}
			b++;if(i<=5) {g=0;r=0;} else {g=0;r=3;}if(b==6){b=0;}
			html +='</tr>'
		}
		html += '\n</table></div>';
		$($(this).ancestors('.bloco')).append(html);
		$('#pCores a').each(function(e){
			$(this)
				.background('#'+this.rel)
				.click(function(e){
					e.preventDefault();e.stopPropagation();
					$('[@name='+$('#pCores').attr('rel').toString()+']')
						.val(this.rel)
						.trigger('keyup');
					$('#pCores').addClass('hidden').attr('rel','');

					// chama algoritmo para verificar contraste do link em relação a cor de fundo
					if(this.rel == $('input.LPAF_1043').val()){
						var bestColor = FORMATOS.Contrast.getBestChoise(this.rel);
						$('.Wurl').css('color','#'+bestColor);
					}
                    $('#altColor').focus();
				})
				.mouseover(function(e){
					$('#previewCor span').background('#'+this.rel);
					$(this).position('relative').css('border','1px solid #fff').css('margin','-1px');
				})
				.mouseout(function(e){
					$(this).position('static').css('border','0px').css('margin','0px');
				});
		});
	} else {
		$('#pCores').removeClass('hidden');
	}
	$(this).ancestors('.bloco').position('relative');
	$('#pCores')
		.top(pTop+'px')
		.left(pLeft+'px')
		.attr('rel',myID);
}

FORMATOS.startColors = function(e){
	$('.colorinput')
		.keyup(FORMATOS.colorPreview)
		.blur(FORMATOS.colorPreview)
		.trigger('blur');
}

FORMATOS.lasOne = '-1';

FORMATOS.ajaxCarregaFormato = function(e){
    if(this.value==-1) {
        this.value = FORMATOS.lasOne;
        return;
    }
    FORMATOS.lasOne = this.value;
	if(typeof(userID)!='undefined') {
		aditional = "&userId="+userID;
	} else {
		aditional = "";
	}
	ajaxURL = 'ajaxGetAdvType.html?action=loadType&typeId='+$(this).val()+aditional;
    $(this)
        .after('<span id="loadingType"><img src="http://shopp.img.uol.com.br/v2006/icone-wait-mini.gif" alt="Carregando" /></span>');
	$.getJSON(ajaxURL, {}, function(){void(null)});
        getXMLSample();
}

FORMATOS.colorPreview = function(e){
	cond = ($(this).val().length == 3 || $(this).val().length == 6)?true:false;
	$(this).siblings('.colorpreview').find('img')
		.background(
			(cond) ? '#'+$(this).val() : 'url(http://lp.i.uol.com.br/af/bg_no_color_selected.gif) -1px 100%'
		);
	switch (this.name) {
		case "borderColor" :
			$('.borderColorRTP').css("borderColor",
				(cond) ? '#'+$(this).val() : '#336699'
			);
			break;
		case "bgColor" :
			$('.bgColorRTP').background(
				(cond) ? '#'+$(this).val() : '#FFFFFF'
			);
			break;
		case "titleColor" :
			$('.titleColorRTP').color(
				(cond) ? '#'+$(this).val() : '#0000FF'
			);
			break;
		case "descrColor" :
			$('.descrColorRTP').color(
				(cond) ? '#'+$(this).val() : '#000000'
			);
			break;
		case "urlColor" :
			$('.urlColorRTP').color(
				(cond) ? '#'+$(this).val() : '#008000'
			);
			break;
	}
        getXMLSample();
}

FORMATOS.ajaxSalvaFormato = function(e){
	e.preventDefault();e.stopPropagation();
	ajaxURL = 'ajaxConfigAdvType.html'+UOLPROD.urlAjaxForm(this);
	if($('[@value="criar"]')[0].checked) {
		ajaxURL = ajaxURL.replace(/typeId[^&]+&/, '');
	} else {
		ajaxURL = ajaxURL.replace(/typeName[^&]+&/, '');
		ajaxURL = ajaxURL.replace('action=save', 'action=update');
		ajaxURL += 'typeName='+$('[@name="typeId"] option[@value="'+$('[@name="typeId"]').val()+'"]').html();
	}
	$('#padroesResult')
		.html('<p class="msg-mini wait-mini">Salvando...</p>');
		$.getJSON(ajaxURL, {}, function(){void(null)});
}

FORMATOS.ajaxExcluirFormato = function(e){
	e.preventDefault();e.stopPropagation();
	ajaxURL = 'ajaxConfigAdvType.html'+UOLPROD.urlAjaxForm($('#formExcluirPadrao')[0]);
	$('#padroesResult')
		.html('<p class="msg-mini wait-mini">Excluindo...</p>');
		$.getJSON(ajaxURL, {}, function(){void(null)});
}

FORMATOS.Contrast = function() {
	var _private = {
		brightness : function(rgb1, rgb2) {
			var b1 = ((rgb1.r * 299) + (rgb1.g * 587) + (rgb1.b * 114)) / 1000;
			var b2 = ((rgb2.r * 299) + (rgb2.g * 587) + (rgb2.b * 114)) / 1000;
			return Math.abs(Math.round(b1-b2)); },
		rgb : function(hex) {
			hex = hex.replace('#','');
			var rgb = { r: parseInt(hex.substr(0,2), 16), g: parseInt(hex.substr(2,2), 16), b: parseInt(hex.substr(4,2), 16) };
			return rgb;
		}
	};
	var _public = {
		getBestChoise : function(hex1){
			var rgb1 = _private.rgb(hex1);
			var rgb2 = _private.rgb('ffffff');
			var rgb3 = _private.rgb('000000');
			var b1 = _private.brightness(rgb1, rgb2);
			var b2 = _private.brightness(rgb1, rgb3);
			return (b1+20)>b2 ? 'FFFFFF' : '000000';
		}
	};
	return _public;
}();

$(FORMATOS.init);

$(function(){

    $(".colorinput").keyup(function(){
        $(this).val($(this).val().toUpperCase());
        var c = $(this).val();
        var q = c.length;
        var s = "";
        for(var i = 0; i < q; i++){
            var m = c.substring(i, i+1);
            var t = m.match(/[G-Z]/);
            if(t < 1) s+=m;
        }    
        $(this).val(s);
    });

    $(".mudaradio").keyup(function(e){
        if(window.event){ 
            keycode = window.event.keyCode;
        } else if(e) {
            keycode = e.which;
        }
        if(keycode != 37 && keycode != 39){
            var str = $(this).val();
            var out = "";
            for(var i = 0; i< str.length; i++){ 
                var letra = str.substring(i,i+1);
                var a = letra.match(/[a-zA-Z0-9-.\/\/: çÇáéíóúýÁÉÍÓÚÝàèìòùÀÈÌÒÙãõñäëïöüÿÄËÏÖÜÃÕÑâêîôûÂÊÎÔÛ]/gi);           
                if(a) out += a;    
            } 
            $(this).val(out); 
        }
    });
});

function getXMLSample(){
    $("#xml-sample, #xml-sample-job").css("background","#" + $(".colorinput").eq(5).val());
    $(".peca-xml, .peca-xml-job").css({ "background": "#" + $(".colorinput").eq(1).val(), "border": "1px solid " + "#" + $(".colorinput").eq(0).val() });
    $(".peca-xml-descricao, .peca-xml-job-titulo").css("color", "#" + $(".colorinput").eq(2).val()); 
    $(".peca-xml-preco").css("color", "#" + $(".colorinput").eq(2).val()); 
    $(".peca-xml-forma, .peca-xml-job-descricao").css("color", "#" + $(".colorinput").eq(3).val()); 
    $(".peca-xml-link, .peca-xml-job-estado").css("color", "#" + $(".colorinput").eq(4).val());
    $(".peca-xml-job-rodape").css("background", "#" + $(".colorinput").eq(0).val());
    $(".peca-xml-job-anuncio").css("color", "#" + FORMATOS.Contrast.getBestChoise("#" + $(".colorinput").eq(0).val()));
}