// Variável que define a posição do scroll
$D.global.POSICAO = 0;
var swfu;
var comboArea = null;

// Cria o Drag n' Drop do Scroll
$D.listener.push(window,'onload',function(){
	$D.global.ddBarra = $D.dragdrop.push('scrollSite','scrollSite',{
		type: 'normal',
		block: true,
		left: -6,
		top: -11,
		width: 1000,
		height: 41,
		ondragmove: function() {
			$D.global.POSICAO = ((parseInt($S('scrollSite').left)+6)*100)/($D.global.SIZE_BARRA-$D.global.SIZE_SCROLL);
		}
	});
	$('total').onmousewheel = wheel;
});

// Inicia os drags dos scrolls das colunas
$D.global.INIT_DRAGS_COLLS = function() {
	$D.global.DRAGS_COLLS = new Array();
	for (var i = 1; i <= $D.global.NUM_COLLS; i++) {
		$D.global.DRAGS_COLLS[i] = $D.dragdrop.push('scrollColl_'+i,'scrollColl_'+i,{
			type: 'normal',
			block: true,
			left: 193,
			top: 230,
			width: 6,
			height: 300,
			ondragmove: function() {
				
			}
		});
	}
};
$D.listener.push(window,'onload',$D.global.INIT_DRAGS_COLLS);

// Atualiza a altura das colunas
$D.global.REFRESH_COLLS = function() {
	$S('startColl').height = $D.page.visibleSize['y']+'px';
	$S('endColl').height = $D.page.visibleSize['y']+'px';
	for (var i = 1; i <= $D.global.NUM_COLLS; i++) {
		$S('itenColl_'+i).height = $D.page.visibleSize['y']+'px';
		$S('collText_'+i).height = ($D.page.visibleSize['y']-290)+'px';
		$D.global.DRAGS_COLLS[i].height = $D.page.visibleSize['y']-280;
		$S('scrollColl_'+i).top = '230px';
		var sizeTotal = $D.basic.getSize('spanCollText_'+i).y;
		var sizeDiv = $D.basic.getSize('collText_'+i).y;
		$S('scrollColl_'+i).display = (sizeTotal<sizeDiv)?'none':'';
	}
	$S('imgEndColl').marginTop = (($D.page.visibleSize['y']-$D.basic.getSize('imgEndColl').y)/2)+"px";
};
$D.listener.push(window,'onresize',$D.global.REFRESH_COLLS);
$D.listener.push(window,'onload',$D.global.REFRESH_COLLS);

// Timer para o easing da rolagem
$D.global.TIMER_COLLS = new $D.timer();
$D.global.TIMER_COLLS.interval = 20;
$D.global.TIMER_COLLS.ontime = function() {
	
	var ease = 0.3;
	
	for (var i = 1; i <= $D.global.NUM_COLLS; i++) {
		var sizeTotal = $D.basic.getSize('spanCollText_'+i).y + 20;
		var sizeDiv = $D.basic.getSize('collText_'+i).y;
		var scrollTotal = $D.global.DRAGS_COLLS[i].height - $D.basic.getSize('scrollColl_'+i).y;
		var scrollAtual = parseInt($S('scrollColl_'+i).top);
		var scrollDivNow = $('collText_'+i).scrollTop;
		var scrollDivNew = $D.findTweenValue(0, sizeTotal-sizeDiv, 230, scrollAtual, scrollTotal+230, 'linear');
		$('collText_'+i).scrollTop += (scrollDivNew-scrollDivNow)*ease;
	}
	
};
$D.listener.push(window,'onload',function(){
	$D.global.TIMER_COLLS.play();
});

// Atualiza o tamanho e posição da barra de scroll quando necessário
$D.global.POSICIONA_BARRA = function() {
	var ST = $D.global.TOTAL_SIZE;
	var SV = $D.page.visibleSize['x'];
	var dif = ST - SV;
	
	if (dif < 0) {
		$D.global.POSICAO = 0;
		$S('setaEsq').top = '-100px';
		$S('setaDir').top = '-100px';
		$S('areaScroll').top = '-100px';
	}else{
		$D.global.SIZE_SCROLL = $D.basic.getSize('scrollSite').x;
		$D.global.SIZE_BARRA = Math.max(400,$D.page.visibleSize['x']/2);
		$D.global.CENTER_BARRA = Math.ceil($D.global.SIZE_BARRA/2);
		$D.global.INIT_BARRA = Math.ceil($D.page.visibleSize['x']/2)-$D.global.CENTER_BARRA;
		
		$S('areaScroll').width = $D.global.SIZE_BARRA+'px';
		$S('areaScroll').top = ($D.page.visibleSize['y']-26)+'px';
		$S('areaScroll').left = $D.global.INIT_BARRA+'px';
		
		$S('setaEsq').top = ($D.page.visibleSize['y']-26)+'px';
		$S('setaEsq').left = ($D.global.INIT_BARRA-5)+'px';
		
		$S('setaDir').top = ($D.page.visibleSize['y']-26)+'px';
		$S('setaDir').left = ($D.global.INIT_BARRA+$D.global.SIZE_BARRA-5)+'px';
		
		$D.global.SIZE_BARRA = $D.global.SIZE_BARRA+12;
		
		$D.global.ddBarra.width = $D.global.SIZE_BARRA;
		
		$S('scrollSite').left = ((($D.global.SIZE_BARRA-$D.global.SIZE_SCROLL)*($D.global.POSICAO)/100)-6)+"px";
	}
};
$D.listener.push(window,'onresize',$D.global.POSICIONA_BARRA);
$D.listener.push(window,'onload',$D.global.POSICIONA_BARRA);

// Timer para o easing da rolagem
$D.global.TIMER_BARRA = new $D.timer();
$D.global.TIMER_BARRA.interval = 20;
$D.global.TIMER_BARRA.ontime = function() {
	
	var ease = 0.3;
	
	var ST = $D.global.TOTAL_SIZE;
	var SV = $D.page.visibleSize['x'];
	var PA = parseInt($S('total').left);
	var dif = ST - SV;
	
	if (dif < 0) {
		$D.global.POSICAO = 0;
		$S('setaEsq').top = '-100px';
		$S('setaDir').top = '-100px';
		$S('areaScroll').top = '-100px';
	}
	
	var newPos = dif * $D.global.POSICAO/-100;
	
	$S('total').left = PA + ((newPos-PA)*ease)+'px';
	
};
$D.listener.push(window,'onload',function(){
	$D.global.TIMER_BARRA.play();
});

function handle(delta) {

	if (delta < 0) $D.global.POSICAO += 5; else $D.global.POSICAO -= 5;
	
	$D.global.POSICAO = Math.min(Math.max(0,$D.global.POSICAO),100);
	
	$S('scrollSite').left = ((($D.global.SIZE_BARRA-$D.global.SIZE_SCROLL)*$D.global.POSICAO/100)-6)+'px';

}

/** Event handler for mouse wheel event.
 */
function wheel(event){
        var delta = 0;
        if (!event) /* For IE. */
                event = window.event;
        if (event.wheelDelta) { /* IE/Opera. */
                delta = event.wheelDelta/120;
                /** In Opera 9, delta differs in sign as compared to IE.
                 */
                if (window.opera)
                        delta = -delta;
        } else if (event.detail) { /** Mozilla case. */
                /** In Mozilla, sign of delta is different than in IE.
                 * Also, delta is multiple of 3.
                 */
                delta = -event.detail/3;
        }
        /** If delta is nonzero, handle it.
         * Basically, delta is now positive if wheel was scrolled up,
         * and negative, if wheel was scrolled down.
         */
        if (delta)
                handle(delta);
        /** Prevent default actions caused by mouse wheel.
         * That might be ugly, but we handle scrolls somehow
         * anyway, so don't bother here..
         */
        if (event.preventDefault)
                event.preventDefault();
	event.returnValue = false;
}

if (window.addEventListener) window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;


function blurCampo(obj,padrao){
	if(obj.value==''){
		obj.value=padrao;
	}
}
function focusCampo(obj,padrao){
	CONTATO.limparRetorno();
	if(obj.value==padrao){
		obj.value='';
	}
}

$D.combos = [];
$D.combo = function(pt){
	for (var k in pt) this[k] = pt[k];	
	
	this.newIdCombo = $D.combos.length;
	
	
	document.write('<ul id="combo_'+this.id+'_'+this.newIdCombo+'" class="'+this.className+'" style="display:none;" onmouseover="$D.combos['+this.newIdCombo+'].open();" onmouseout="$D.combos['+this.newIdCombo+'].close();">');
	
	for(var i=0; i<$(this.id).options.length; i++){
		document.write('<li onclick="$D.combos['+this.newIdCombo+'].doOnClick(this, \''+$(this.id).options[i].text+'\');" value="'+$(this.id).options[i].value+'">'+$(this.id).options[i].text+'</li>');
	}
	
	document.write('</ul>');
	
	
	this.doOnClick = function(obj, text){
		this.value = obj.value;
		this.close();
		this.onClick(obj, text);
		this.toString=function(){return"[class Combo:Event->onClick]"};
	};
	
	this.open = function(){
		$("combo_"+this.id+"_"+this.newIdCombo).style.display = 'block';
		this.onOpen();
		this.toString=function(){return"[class Combo:Event->onOpen]"};		
	}
	
	this.close = function(){
		$("combo_"+this.id+"_"+this.newIdCombo).style.display = 'none';
		this.onClose();
		this.toString=function(){return"[class Combo:Event->onClose]"};
	}
	
	this.toString=function(){return"[class Combo]"};
	$D.combos.push(this);
	return this;
}



$D.combo.prototype = {
	'id': '',
	'value': null,
	'className': '',
	'onClick': function(){},
	'onOpen': function(){},
	'onClose': function(){}
}

/*****************************************************************************/
/*###########################################################################*/
/*################################ CONTATO ##################################*/
/*###########################################################################*/
/*****************************************************************************/
var CONTATO = {}
CONTATO.valida= function(){
	var form = $('form1');
	var retorno  = true;
	
	if(form.nome.value=='' || form.nome.value == 'nome'){
		retorno  = false;
		form.nome.value = 'nome';
	}
	if(!form.email.value.isMail() || form.email.value=='' || form.email.value == 'e-mail'){
		retorno  = false;
		form.email.value = 'e-mail';
	}
	if(form.telefone.value=='' || form.telefone.value == 'tel' || form.telefone.value.length < 13){
		retorno  = false;
		form.telefone.value = 'tel';
	}	
	if(form.mensagem.value=='' || form.mensagem.value == 'mensagem'){
		retorno  = false;
		form.mensagem.value = 'mensagem';
	}
	
	return retorno;
}

CONTATO.limparRetorno = function(){
	$('retorno').innerHTML = '';	
}

CONTATO.clearCampos = function(){
	var form = $('form1');
	form.nome.value = 'nome';
	form.email.value = 'e-mail';
	form.telefone.value = 'telefone';
	form.mensagem.value = 'mensagem';
}

CONTATO.open = function(){
	var form = $('form1');
	if(this.valida()){
		$('retorno').innerHTML = 'Enviando...'
		var ajax = new $D.ajax({
			'method': 'POST',
			'url': '/contato/',
			'oncomplete': function() {			
				var json = $D.json.decode(this.text);
				if (json.erro) {
					$('retorno').innerHTML = "Erro ao enviar.";
					return false;
				}
				$('retorno').innerHTML = "Enviado com sucesso.";
				setTimeout(CONTATO.limparRetorno,3000);
				CONTATO.clearCampos();
				delete ajax;
			},
			'onerror': function(){
				$('retorno').innerHTML = "Erro ao enviar.";
				setTimeout(CONTATO.limparRetorno,3000);
				CONTATO.clearCampos();
				delete ajax;
			}
		});
		
		// PARAMETROS
		ajax.push('nome',$('form1.nome').value);
		ajax.push('email',$('form1.email').value);
		ajax.push('telefone',$('form1.telefone').value);
		ajax.push('mensagem',$('form1.mensagem').value);
		ajax.open();			
	}else{
		$('retorno').innerHTML = 'Preencha os dados.';
	}	
}

/*****************************************************************************/
/*###########################################################################*/
/*############################## SEJA UM PUB ################################*/
/*###########################################################################*/
/*****************************************************************************/
var simpleSwfUpload = function(pt) {
	for (var k in pt) this[k] = pt[k];
	try{ 
		return new SWFUpload(this);
	}catch(e){}
}
simpleSwfUpload.prototype = {
	'upload_url': "",
	'file_post_name': "pubFile",
	'file_size_limit': "10 MB",
	'file_types': "*.*",
	'file_types_description': "All Files",
	'file_upload_limit': "0",
	
	// Event handler settings
	'swfupload_loaded_handler': this.swfUploadLoaded,
	
	'file_dialog_start_handler': this.fileDialogStart,
	'file_dialog_complete_handler': this.fileDialogComplete,
	'file_queued_handler': this.fileQueued,
	
	//upload_start_handler : uploadStart,	// I could do some client/JavaScript validation here, but I don't need to.
	'upload_progress_handler': this.uploadProgress,
	'upload_error_handler': this.uploadError,
	'upload_success_handler': this.uploadSuccess,
	'upload_complete_handler': this.uploadComplete,

	// Button Settings
	'button_image_url': "img/admin/XPButtonUploadText_61x22.png",	// Relative to the SWF file
	'button_placeholder_id': "",
	'button_width': 61,
	'button_height': 22,
	
	// Flash Settings
	'flash_url': "swfupload.swf",

	'custom_settings': {
		'progress_target': "fsUploadProgress",
		'upload_successful': false
	},
	
	// Debug settings
	'debug': false,
	
	'swfUploadLoaded': function() {}, 'fileDialogStart': function() {}, 'fileDialogComplete': function() {}, 'uploadProgress': function() {}, 'uploadError': function() {}, 'uploadSuccess': function() {}, 'uploadComplete': function() {}, 'fileQueued': function() {}
}

var SEJA = {
	'timer': new Date().getFullString(),
	'ok': false,
	'focusCampo': function (obj,padrao){
		this.limparRetorno();
		if(obj.value==padrao){
			obj.value='';
		}
	},
	'blurCampo': function(obj,padrao){
		if(obj.value==''){
			obj.value=padrao;
		}
	},
	'limparRetorno': function(){
		$('retornoSejaUmPub').innerHTML = '';
	},
	'valida': function(){
		var form = $('form2');
		var retorno  = true;
		
		if(comboArea.value == null) {
			retorno = false;
			$('txtSerTxt').innerHTML = "desejo ser";
		}
		
		if(form.nome.value=='' || form.nome.value == 'nome'){
			retorno  = false;
			form.nome.value = 'nome';
		}
		
		if(!form.email.value.isMail() || form.email.value=='' || form.email.value == 'e-mail'){
			retorno  = false;
			form.email.value = 'e-mail';
		}
		
		if(form.telefone.value=='' || form.telefone.value == 'tel' || form.telefone.value.length < 13){
			retorno  = false;
			form.telefone.value = 'tel';
		}
		
		if(form.cidade.value=='' || form.cidade.value == 'cidade'){
			retorno  = false;
			form.cidade.value = 'cidade';
		}
		
		if(form.estado.value=='' || form.estado.value == 'uf' || form.estado.value.length < 2){
			retorno  = false;
			form.estado.value = 'uf';
		}
		
		if($('infoArquivoSejaUmPub').innerHTML == "arquivo PDF" || $('infoArquivoSejaUmPub').innerHTML == "somente um arquivo!"){
			retorno  = false;
			$('infoArquivoSejaUmPub').innerHTML == "arquivo PDF";
		}
		
		return retorno;
	},
	'clearCampos': function(){
		$('txtSerTxt').innerHTML = "desejo ser";
		
		var form = $('form2');
		form.nome.value = 'nome';
		form.email.value = 'e-mail';
		form.telefone.value = 'tel';
		form.cidade.value = 'cidade';
		form.estado.value = 'uf';
		$('infoArquivoSejaUmPub').innerHTML = "arquivo PDF";
		
	},
	'open': function(){
		if(this.valida()){
			$('retornoSejaUmPub').innerHTML = 'Enviando...';
			swfu.startUpload();
		}else{
			$('retornoSejaUmPub').innerHTML = 'Preencha os dados.'
		}
	},
	'uploadError': function(){
		 $('retornoSejaUmPub').innerHTML = 'Erro ao enviar!';
		 setTimeout(SEJA.limparRetorno,3000);
	},
	'uploadComplete': function(){
		var ajax = new $D.ajax({
			'method': 'POST',
			'url': '/curriculos/?t='+SEJA.timer,
			'oncomplete': function() {			
				var json = $D.json.decode(this.text);
				if (json.erro) {
					$('retornoSejaUmPub').innerHTML = "Erro ao enviar.";
					setTimeout(SEJA.limparRetorno,3000);
					return false;
				}
				$('retornoSejaUmPub').innerHTML = "Enviado com sucesso.";
				setTimeout(SEJA.limparRetorno,3000);
				SEJA.clearCampos();
				delete ajax;
			},
			'onerror': function(){
				$('retornoSejaUmPub').innerHTML = "Erro ao enviar.";
				setTimeout(SEJA.limparRetorno,3000);
				SEJA.clearCampos();
				delete ajax;
			}
		});
		
		// PARAMETROS
		ajax.push('area',comboArea.value);
		ajax.push('nome',$('form2.nome').value);
		ajax.push('email',$('form2.email').value);
		ajax.push('telefone',$('form2.telefone').value);
		ajax.push('arquivo', $('infoArquivoSejaUmPub').innerHTML);
		ajax.push('cidade',$('form2.cidade').value);
		ajax.push('estado',$('form2.estado').value);
		ajax.open();
		
		SEJA.timer = new Date().getFullString();
		swfu.upload_url = '/curriculos/upload/?t='+SEJA.timer;
	}
}

filter2 = function(txtEntrada, strValidos) {
	var txtSaida = '';
	for (var a = 0; a<txtEntrada.length; a++) {
		if (strValidos.indexOf(txtEntrada.substr(a, 1)) != -1) {
			txtSaida = txtSaida+txtEntrada.substr(a, 1);
		}
	}
	return txtSaida;
};

isNum = function(code, strValidos) {
	var strCode = String.fromCharCode(code);
	strValidos = strValidos || '%\'#$.0123456789`abcdefghi	';
	if (strValidos.indexOf(strCode)>=0) {
		return true;
	} else {
		return false;
	}
};

mask = function(strMask, ev, objData) {
	ev = ev || event;
	var key = getKey(ev);
	if (isNum(key, '%\'#$.') == true) {
		return true;
	}
	if (!(key>=37 && key<=40)) {
		var valor = filter2(objData.value, '0123456789');
		var tam = valor.length;
		var tamMask = strMask.length;
		var strOut = '';
		var intCont = 0;
		for (var a = 0; a<tamMask && intCont<=tam; a++) {
			if (strMask.substr(a, 1) == '#') {
				strOut += valor.substr(intCont++, 1);
			} else {
				strOut += strMask.substr(a, 1);
			}
		}
		objData.value = strOut;
		return true;
	}
};

function getKey(e) {
	try{
		return event?(event.keyCode?event.keyCode:(event.which?event.which:event.charCode)):null;
	}catch(f){
		return e.keyCode;	
	}
}