// AUXILIARES
json=function(){function f(n){return n<10?"0"+n:n
	}Date.prototype.toJSON=function(){return[this.getUTCFullYear(),"-",f(this.getUTCMonth()+1),"-",f(this.getUTCDate()),"T",f(this.getUTCHours()),":",f(this.getUTCMinutes()),":",f(this.getUTCSeconds()),"Z"].join("")
	};
	var m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};
	function stringify(value){var a,i,k,l,r=/["\\\x00-\x1f\x7f-\x9f]/g,v;
	switch(typeof value){case"string":return r.test(value)?'"'+value.replace(r,function(a){var c=m[a];
	if(c){return c
	}c=a.charCodeAt();
	return"\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16)
	})+'"':'"'+value+'"';
	case"number":return isFinite(value)?String(value):"null";
	case"boolean":case"null":return String(value);
	case"object":if(!value){return"null"
	}a=[];
	if(typeof value.length==="number"&&!(value.propertyIsEnumerable("length"))){l=value.length;
	for(i=0;
	i<l;
	i+=1){a.push(stringify(value[i])||"null")
	}return"["+a.join(",")+"]"
	}for(k in value){if(value.hasOwnProperty(k)){if(typeof k==="string"){v=stringify(value[k]);
	if(v){a.push(stringify(k)+":"+v)
	}}}}return"{"+a.join(",")+"}"
	}}return{stringify:stringify,parse:function(text){if(/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/b-u]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){return eval("("+text+")")
	}return false
	}}
}();;
lineSize = function (lineMax , texto) {
	
	var countTmp = 0;
	var testeTmp ='';
	for(x=0; x<=texto.length; x++) {
		
		if(countTmp == lineMax) {
			
			testeTmp+='<br>';  countTmp=0;
			
			//if(texto.charAt((x+1)
			
		}
		//alert([texto.charAt(x), texto[x]])
		testeTmp+=texto.charAt(x);
		
		countTmp++;
	}
	return testeTmp;
}

function isValidURL(url){
    var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
    if(RegExp.test(url)){
        return true;
    }else{
        return false;
    }
}

function isValidEmail(email){
    var RegExp = /^((([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.))*([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.)[\w]{2,4}|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$/
    if(RegExp.test(email)){
        return true;
    }else{
        return false;
    }
} 
function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects
	 for(var item in arr) {
	  var value = arr[item];
	 
	  if(typeof(value) == 'object') { //If it is an array,
	   dumped_text += level_padding + "'" + item + "' ...\n";
	   dumped_text += dump(value,level+1);
	  } else {
	   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
	  }
	 }
	} else { //Stings/Chars/Numbers etc.
	 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}
getContentAjax = function  (url , data, callback) {
	$.ajax({
		type: "POST",
		url: url,
		data: data,
		success: function(msg){
			eval(callback);
		}
	});
}

positionElement = function  (target, top, left) {
	$(target).css({top : top , left : left , visibility: 'visible'});
}
sizeToResize = function (widthOriginal, heightOriginal, widthMax, heightMax) {

	var widthResized = widthOriginal;
	var heightResized = heightOriginal;
	
	if ((widthOriginal > widthMax) || (heightOriginal > heightMax)) {
		
		var rate = widthOriginal / widthMax;
		
		if(heightOriginal / rate > heightMax) {
			var rate = heightOriginal / heightMax;
		}
		
		widthResized = Math.round(widthOriginal / rate);
		heightResized = Math.round(heightOriginal / rate);
		
	}
	
	return {width: widthResized, height: heightResized};
}
truncate =  function(text, length, ellipsis) {
	
	if(typeof(text.length) != 'undefined' && text.length > length) {
			
		if(typeof(ellipsis) == 'undefined' || typeof(text.length) == 'undefined') {
			var ellipsis = '';
		}
		text = text.slice(0, (length-ellipsis.length))+ellipsis;
	}
	
	return text;
}
maxLength = function(campo , maxLength , callback){ 
	
	var _THIS = $(campo);
	
	var maxLength = parseInt(maxLength);
	
	var tamanho = _THIS.val().length+1;
	
	if (tamanho > maxLength) {  
		_THIS.val(truncate(_THIS.val() , maxLength , '')); 
		tamanho = maxLength+1;
	}
	eval (callback)
	return true;  
}  
/*########### Marca e Dermarcar os inputs das perguntas #########*/
selectAllQuestions = function (action) {
	
	if(action == 'checked') {
		$('.checkBoxAnswer').attr('checked' , action);
	}else {
		$('.checkBoxAnswer').attr('checked' , '');
	  }
}
/*########### END Marca e Dermarcar os inputs das perguntas #########*/

responseAnswer = function (form) {
	var formId = $(form).parent().attr('id'); 
	var answerId = formId.replace('formAnswer', '');
	var answer = $('#'+formId+' textarea').val();
	var who = $('#answer'+answerId+' #nameUser').html();
	var question = $('#answer'+answerId+' .blockQuestionAnswer').html();
	
	
	if( $('#'+formId+' textarea').attr('title') != answer) {
		var url = 'ajax.php';
		var data = 'action=responseAnswer&answer='+encodeURIComponent(answer)+'&answerId='+answerId;
		var callback = 'callbackAjaxActions("responseAnswer" , msg)';
		
		$('#answer'+answerId).slideUp();

		getContentAjax(url , data, callback);

		postActivieNewResponse(truncate(question, 85, '...'), who);
		
	}else {
		
		makeBoxAlert('errorMsg' , getMsg(10));
	}
}
deletAllAnswer = function () {
	
	var answerId = '';
	
	$("input:checkbox[@class='checkBoxAnswer']").each(function(x , y) {
		if(y.checked) {
			var id = y.value.replace('Answer' , '');
			answerId +='answerId[]='+id+'&';
			$('#answer'+id).slideUp('fast');
		}else {
			
		}
	})
	
	if(answerId == '') {
		makeBoxAlert('errorMsg' , getMsg(9));
	}else {
		var url = 'ajax.php';
		var data = 'action=deleteAnswer&'+answerId;
		var callback = 'callbackAjaxActions("deleteAllAnswer" , msg)';
		
		getContentAjax(url , data, callback);
	}
}
delAnswer = function (answerId) {
	
	var answerId = answerId.replace('delAnswer' , '');
	var url = 'ajax.php';
	var data = 'action=deleteAnswer&answerId[]='+answerId;
	var callback = 'callbackAjaxActions("deleteAnswer" , msg)';
	$('#answer'+answerId).slideUp('slow' , function () {$(this).remove();})
	
	getContentAjax(url , data, callback);
}
makeQuestion = function (idOwner) {	

	var question = $('#formAnswer textarea').val();
	var anonimo = ($('#formAnswer #anonimo').attr('checked') == true) ? 'true' : 'false';
	var url = 'ajax.php';
	var data = 'action=newQuestion&idOwner='+idOwner+'&question='+encodeURIComponent(question)+'&anonimo='+anonimo;
	var callback = 'callbackAjaxActions("newQuestion" , msg)'; 
	getContentAjax(url , data, callback);
}
follow = function (idUser) {
  
  var idUser = idUser;
  var url = 'ajax.php';
  var data = 'action=follow&userId='+idUser;
  var callback = 'callbackAjaxActions("follow", msg)';
  getContentAjax(url , data, callback);
}
unFollow = function (idUser) {
  
  var idUser = idUser;
  var url = 'ajax.php';
  var data = 'action=unfollow&userId='+idUser;
  var callback = 'callbackAjaxActions("unFollow", msg)';
  getContentAjax(url , data, callback);
	
}
getMsg = function (idMsg) {
	var msgs = Array();
	msgs [0] = 'Pergunta Enviada Com Sucesso!!!';
	msgs [1] = 'Erro ao Enviar Pergunta!!!';
	msgs [2] = 'Por Favor, Digite uma Pergunta!';
	msgs [3] = 'Pergunta Respondida Com Sucesso!!!';
	msgs [4] = 'Erro ao Responder Pergunta!!!';
	msgs [5] = 'Pergunta Excluída Com Sucesso!!!';
	msgs [6] = 'Erro ao Excluir Pergunta!!!';
	msgs [7] = 'Perguntas Excluídas Com Sucesso!!!';
	msgs [8] = 'Erro ao Excluir Perguntas!!!';
	msgs [9] = 'Selecione no mínimo uma pergunta a ser excluída!';
	msgs [10] = 'Digite sua resposta para esta pergunta.';
	msgs [11] = 'Digite sua resposta para as perguntas selecionadas.';
	msgs [12] = 'Erro ao atualizar seus dados, tente novamente.';
	msgs [13] = 'Dados atualizados com sucesso!';
	msgs [14] = 'Parabéns, você está seguindo agora!';
	msgs [15] = 'Seguido apagado com sucesso.';
	msgs [16] = 'Endereço apenas letras e números com o mínimo de 4 e o máximo de 20 caracteres!';
	msgs [17] = 'Selecione um Estado!';
	
	return msgs[idMsg];
}
callbackAjaxActions = function (action , status) {
	var type = 'warnMsg';
	var msg  = '';
	
	if(status) {type = 'successMsg'}else {type = 'errorMsg'}
	
	switch(action)	
	{
		case 'newQuestion':
			
			if(status) {msg = getMsg(0)}else {msg = getMsg(1)}

			makeBoxAlert(type , msg);
			
			$('#formAnswer textarea').val('');
			$('#formAnswer #anonimo').attr('checked' , false);

			break;
			
		case 'responseAnswer':
			
			if(status) {msg = getMsg(3)}else {msg = getMsg(4)}
		 	
			makeBoxAlert(type , msg);
		  	
			break;
			
		case 'deleteAnswer':
			
			if(status) {
				msg = getMsg(5);
			}else {
				msg = getMsg(6);
				
			}
		 	
			makeBoxAlert(type , msg);
			
			break;
			
		case 'deleteAllAnswer':
			
			if(status) {
				msg = getMsg(7);
			}else {
				msg = getMsg(8);
				
			}
			
		  	makeBoxAlert(type , msg);
			window.location.href= window.location.href;
			
			break;
		case 'getCities':
			
			var msg = '<option value="0">Selecione uma Cidade</option>';
			
			var citys = eval(status)
		//	alert(citys[0])
			for( x in citys) {
				//alert(status.x);
				//alert(status[x]);
				msg +='<option title="'+citys[x].city+'" value="'+citys[x].id+'">'+citys[x].city+'</option>'
			}
			
			$('#city').html(msg);
			
		break;
		
		case 'follow':
			makeBoxAlert('successMsg' , getMsg(14));
		break;
			
		case 'unFollow':
			makeBoxAlert('successMsg' , getMsg(15));
		break;
			
		default:
	}	

}
makeBoxAlert = function (type , msg) {

	$('.alertBoxs').attr('id' , type).show();
	$('.alertBoxs span').html(msg);
	setTimeout("$('.alertBoxs').slideUp()" , 3000)
}
configBackGround = function (action, arg) {
		switch(action)	
	{
		case 'repeat':
			$('html').css('background-repeat' , arg);
			break;
		case 'position':
			$('html').css('background-position' , arg);
			break;
		case 'attachment':
		
			$('html').css('background-attachment' , arg);
			break;
		case 'image':
			$('html').css('background-image' , 'url('+arg+')');
			break;
		case 'delIimage':
			$('html').css('background-image' , 'none');
			$('#userPhotoHidden').val('');
			$('#uploadPhotoImg').attr('src' , 'images/noImage.png');
			break;
		case 'color':
			$('html').css('background-color' , arg);
			break;
		case 'makeAll': 
			if(!arg[0]) {
				if(arg[1].length > 8 || arg[4].length > 1) { 
					$('html').css('background-image' , arg[1]); 
					$('html').css('background-position' , arg[2]);
					$('html').css('background-repeat' , arg[3]);
					$('html').css('background-attachment' , arg[5]);
				}
				if(arg[4].length > 1) { $('html').css('background-color' , arg[4]); }
			}
			
			break;
		default :
		
	}
}
configFormBackGround = function (action, arg) {
		
		switch(action)	
	{
		case 'repeat':
			$('#background_repeat option[value='+arg+']').attr('selected' , 'selected');
			break;
		case 'position':
			$('#background_posi option[value='+arg+']').attr('selected' , 'selected');
			break;
		case 'attachment':
			$('#background_scroll option[value='+arg+']').attr('selected' , 'selected');
			break;
		case 'color':
			f.setColor(arg);
			break;
		case 'makeAll':
			for (x in arg) {
				configFormBackGround(arg[x][0] , arg[x][1]);
			}
			break;
		default :
		
	}
	
}
configFormCitys = function (uf , city) {
	if(city == '') {
		
	}else {
		loadCitys(uf);
		setTimeout("$('#states option[value="+uf.toLowerCase()+"]').attr('selected' , 'selected')" , 1000);
		setTimeout("$('#city option[title="+city+"]').attr('selected' , 'selected')" , 1000);
	}
}
loadCitys = function (state) {
	
	if(state == 0) {
		makeBoxAlert('errorMsg' , getMsg(17));	
	}else {
		var url = 'ajax.php';
		var data = 'action=getCities&uf='+state;
		var callback = 'callbackAjaxActions("getCities" , msg)';
		getContentAjax(url , data, callback);
	}
	
	
}
// Reseta o valor dops inputs
jQuery.fn.resetDefaultValue = function(cssChange , cssDefault) {
    function _clearDefaultValue() {
        var _$ = $(this);
        if ( _$.val() == this.defaultValue ) { _$.val('').css(cssChange); }
    };
    function _resetDefaultValue() {
        var _$ = $(this);
        if ( _$.val() == '' ) { _$.val(this.defaultValue).css(cssDefault); }
    };
    return this.click(_clearDefaultValue).focus(_clearDefaultValue).blur(_resetDefaultValue);
}
validUsername = function (pVal) {
	
	if(pVal != '') {
		var reTipo = /^[a-zA-Z0-9]{4,20}$/
		if(reTipo.test(pVal)) {
			 return true;			
		}else {
			 return false;
		}
	}else{
		return true;
	}
	
}
validFormConfig = function () {
	
	var msg = '';
	var error = false;
	
	if(!validUsername($('#user').val())) {
		msg += getMsg(16)+'<br>';
		error = true;
	}
	
	if(error) {
		
		makeBoxAlert('errorMsg' , msg);	
		return false;
	
	}
}


