
/*
 UploadArquivo()
 @autor: Mayco Alexandre
 @brief: Efetua a chamada para o upload de um determinado arquivo
 @Parametros:	form:Indica o id do elemento que agrupa os campos do  
              obj: objeto onde será armazenado o caminho do arquivo
              src: Local onde o arquivo será gravado no servidor

*/
			


var janela;

function UploadArquivo(form, obj, src){
	var janela = window.open('/arquivos/upload/upload.aspx?src='+src, 'wnUpload', 'width=300px,height=200');
	window.setTimeout(function() { verificaUpload(janela, form, obj); }, 1000);
}





/*
 Upload()
 @autor: Mayco Alexandre
 @brief: Efetua a chamada para o upload de um determinado arquivo.
 @Parametros:	form:Indica o id do elemento que agrupa os campos do  
              src: Local onde o arquivo será gravado no servidor
              obj: Objeto a ser verificado
*/

UploadResolucao = function(form, obj ){
  
  var numero;
  var ano;
  var analegis;   
  var src;
  var arq;
  

  
  numero   = parseInt(GetInput("txtnumero").replace(/[^0-9]/gi,''));
  ano      = parseInt(GetInput("txtano").replace(/[^0-9]/gi,''));
  analegis = GetLabelRadioMarcado("chkAnaLegis");
  

  if (numero == ""){alert("Informe o número da resolução"); return false;}
  if (ano == ""){alert("Informe o ano da resolução"); return false;}
  if (analegis == "" ){alert("Informe se é Ana Legis ou não"); return false;}

  src = "/resolucoes/"+ano;
  if (analegis.toUpperCase() == "SIM"){
    src = "/resolucoes/"+ano+"/ANALegis";
  }
  
  arq = "&arq="+numero+"-"+ano;
  if (analegis.toUpperCase() == "SIM"){
    arq = "&arq=LEGISResolucao"+numero+"-"+ano;
  }

  var janela = window.open('/arquivos/upload/upload.aspx?src='+src+arq, 'wnUpload', 'width=300px,height=200');
  window.setTimeout(function() { verificaUpload(janela, form, obj); }, 1000);
}




function verificaUpload(janela, form, obj) {
    if (janela.document.getElementById("statusUpload")) {
        if (janela.document.getElementById("statusUpload").value == "finalizado") {
            gravaNomeArquivo(janela.document.getElementById("NomeArquivo").value, form, obj);
            window.clearTimeout();
            janela.close();
            return true;
        }
    }
    window.setTimeout(function() {verificaUpload(janela, form, obj); }, 1000);
}




function gravaNomeArquivo(Nome, form, obj) {
    var parent = form.parentNode;
    var imput = parent.getElementsByTagName("INPUT");
    for (var i = 0; i < imput.length; i++) {
        if (imput[i].type == 'text'){
            if (imput[i].id.indexOf(obj) > 0) {
                imput[i].value = 'http://arquivos.ana.gov.br' + Nome;
            }
            else {
                alert('Não foi possível carregar o nome do arquivo. Repita a operação. Caso o erro persista contate o responsável pelo site')
            }
        }
    }
}




String.prototype.sTrim = function(){ 
    return(this.replace( /^\s+|\s+$/gi, "" ).replace( /\s{2,}/gi, " " ))
}		



/**
 * GetInput
 * Função que recupera o input a partir de uma div 
 * */
GetInput = function (divId){
    var parent = document.getElementById(divId);
    var imput = parent.getElementsByTagName("INPUT");
    for (var i = 0; i < imput.length; i++) {
        if (imput[i].type == 'text'){
          return imput[i].value.sTrim(); 
        }
    }
    return null;
}



/**
 * GetLabelRadioMarcado
 * Função que recupera o valor do label de um radio selecionado 
 * */
GetLabelRadioMarcado = function (divId){
    //cria o objeto pai que contém os radios
    var parent = document.getElementById(divId);
    //recupera as spans que tem os radios 
    var arrSpan = getElementsByTagAndClassName ('span', 'ms-RadioText', parent);
    for (var i = 0; i < arrSpan.length; i++) {
      //pega o imput do span
      radio = arrSpan[i].getElementsByTagName('input');
      if (radio[0].checked){
        //se esta marcado então pega a descrição do label gerado para o mesmo
        label = arrSpan[i].getElementsByTagName('label');
        return label[0].innerHTML
      }
    }
}












/**
 * getElementsByTagAndClassName
 * Recupera um array com elementos por uma tag específica e/ou uma classe 
 * específica podendo ou não especificar um elemento conteiner
 * @param 
 * @return array
 */
getElementsByTagAndClassName = function ( tagName, className, parentElement )
{
	var elements = new Array ();
	var parent = ( parentElement ) ? parentElement : document.body;
	var children = parent.getElementsByTagName( tagName );
	for ( var a = 0; a < children.length; a++ )
	{
	  
	  if ( hasClass ( className, children[a] ) )
	    elements.push ( children[a] );
	}
	return elements;
}
  

/**
 * hasClass
 * Retorna se um determinad objeto possui determinada classe
  * @param 
 *  @return bollean
 */
function hasClass (className, obj) {
	if (typeof obj == 'undefined' || obj==null || !RegExp) { return false; }
	var re = new RegExp("(^|\\s)" + className + "(\\s|$)");
	if (typeof(obj)=="string") {
		return re.test(obj);
	}
	else if (typeof(obj)=="object" && obj.className) {
		return re.test(obj.className);
	}
	return false;
}






// Simulates PHP's date function
Date.prototype.format = function(format) {
	var returnStr = '';
	var replace = Date.replaceChars;
	for (var i = 0; i < format.length; i++) {
		var curChar = format.charAt(i);
		if (replace[curChar]) {
			returnStr += replace[curChar].call(this);
		} else {
			returnStr += curChar;
		}
	}
	return returnStr;
};


Date.replaceChars = {
	shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
	longMonths: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
	shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
	longDays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
	
	// Day
	d: function() { return (this.getDate() < 10 ? '0' : '') + this.getDate(); },
	D: function() { return Date.replaceChars.shortDays[this.getDay()]; },
	j: function() { return this.getDate(); },
	l: function() { return Date.replaceChars.longDays[this.getDay()]; },
	N: function() { return this.getDay() + 1; },
	S: function() { return (this.getDate() % 10 == 1 && this.getDate() != 11 ? 'st' : (this.getDate() % 10 == 2 && this.getDate() != 12 ? 'nd' : (this.getDate() % 10 == 3 && this.getDate() != 13 ? 'rd' : 'th'))); },
	w: function() { return this.getDay(); },
	z: function() { return "Not Yet Supported"; },
	// Week
	W: function() { return "Not Yet Supported"; },
	// Month
	F: function() { return Date.replaceChars.longMonths[this.getMonth()]; },
	m: function() { return (this.getMonth() < 9 ? '0' : '') + (this.getMonth() + 1); },
	M: function() { return Date.replaceChars.shortMonths[this.getMonth()]; },
	n: function() { return this.getMonth() + 1; },
	t: function() { return "Not Yet Supported"; },
	// Year
	L: function() { return (((this.getFullYear()%4==0)&&(this.getFullYear()%100 != 0)) || (this.getFullYear()%400==0)) ? '1' : '0'; },
	o: function() { return "Not Supported"; },
	Y: function() { return this.getFullYear(); },
	y: function() { return ('' + this.getFullYear()).substr(2); },
	// Time
	a: function() { return this.getHours() < 12 ? 'am' : 'pm'; },
	A: function() { return this.getHours() < 12 ? 'AM' : 'PM'; },
	B: function() { return "Not Yet Supported"; },
	g: function() { return this.getHours() % 12 || 12; },
	G: function() { return this.getHours(); },
	h: function() { return ((this.getHours() % 12 || 12) < 10 ? '0' : '') + (this.getHours() % 12 || 12); },
	H: function() { return (this.getHours() < 10 ? '0' : '') + this.getHours(); },
	i: function() { return (this.getMinutes() < 10 ? '0' : '') + this.getMinutes(); },
	s: function() { return (this.getSeconds() < 10 ? '0' : '') + this.getSeconds(); },
	// Timezone
	e: function() { return "Not Yet Supported"; },
	I: function() { return "Not Supported"; },
	O: function() { return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + '00'; },
	P: function() { return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + ':' + (Math.abs(this.getTimezoneOffset() % 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() % 60)); },
	T: function() { var m = this.getMonth(); this.setMonth(0); var result = this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/, '$1'); this.setMonth(m); return result;},
	Z: function() { return -this.getTimezoneOffset() * 60; },
	// Full Date/Time
	c: function() { return this.format("Y-m-d") + "T" + this.format("H:i:sP"); },
	r: function() { return this.toString(); },
	U: function() { return this.getTime() / 1000; }
};
