//Função que grava um cookie

function DeleteCookie(name, path, domain) 
{
  if (GetCookie(name)) 
  {
    document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

function trim(inputString) {
   // Removes leading and trailing spaces from the passed string. Also removes
   // consecutive spaces and replaces it with one space. If something besides
   // a string is passed in (null, custom object, etc.) then return the input.
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   return retValue; // Return the trimmed string back to the user
} // Ends the "trim" function

function SetCookie(name, value) 
{  
	var argv = SetCookie.arguments;  
	var argc = SetCookie.arguments.length;  
	var expires = (argc > 2) ? argv[2] : null;  
	var path = (argc > 3) ? argv[3] : null;  
	var domain = (argc > 4) ? argv[4] : null;  
	var secure = (argc > 5) ? argv[5] : false;  
	document.cookie = name + "=" + escape (value) + 
	((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
	((path == null) ? "" : ("; path=" + path)) +  
	((domain == null) ? "" : ("; domain=" + domain)) +    
	((secure == true) ? "; secure" : "");
}	

//Funções para retornar o valor de um cookie
function GetCookie(name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;

  while (i < clen) {
    var j = i + alen;

    if (document.cookie.substring(i, j) == arg)
      return GetCookieVal(j);

    i = document.cookie.indexOf(" ", i) + 1;

    if (i == 0) 
      break; 
  }

  return null;
}

function GetCookieVal(offset) 
{
  var endstr = document.cookie.indexOf(";", offset);

  if (("" + endstr) == "" || endstr == -1)
    endstr = document.cookie.length;

  return unescape(document.cookie.substring(offset, endstr));
}

//Função que retorna um valor de sub cookie
function GetSubCookie(nomecookie, nomesubcookie)
{
	var tudo= GetCookie(nomecookie);
	var ini=0;
	var fim=0;
	var tmp=nomesubcookie + "%23%2A";
	var cont="";
	if ((tudo != null) && (tudo != ""))
	{
		ini=tudo.indexOf(tmp)+tmp.length;
		var tmp2=tudo.substring(ini,tudo.length);
		fim=tmp2.indexOf("%2A%23");
		cont=tmp2.substring(0,fim);
	}
	if (ini<tmp.length) { return "";}
	else { return cont;}
}

//Função que grava um valor de sub cookie
function SetSubCookie(nomecookie, nomesubcookie, valorsubcookie)
{
	var tudo= GetCookie(nomecookie);
	var ini=0;
	var fim=0;
	var tmp=nomesubcookie + "%23%2A";
	var cont="";
	if ((tudo !== null) && (tudo != "")) // Cookie já existe
	{
		ini=tudo.indexOf(tmp)+tmp.length;
		if (ini<tmp.length) //Não achou o dito cujo, então vai gravar
		{
			cont=tudo+nomesubcookie+"%23%2A"+valorsubcookie+"%2A%23";
		}
		else // Achou então tem que atualizar
		{
			var tmp2=tudo.substring(ini,tudo.length);
			fim=tmp2.indexOf("%2A%23");
			cont=tudo.substring(0,ini)+valorsubcookie+tmp2.substring(fim,tmp2.length);
		}
	}
	else // Cookie não existe
	{
		cont=nomesubcookie+"%23%2A"+valorsubcookie+"%2A%23";
	}
	SetCookie(nomecookie,cont);
	return true;
}

function DeleteSubCookie(nomecookie, nomesubcookie)
{
	var tudo= GetCookie(nomecookie);
	var ini=-9;
	var fim=0;
	var tmp=nomesubcookie + "%23%2A";
 	var cont="";
	if ((tudo !== null) && (tudo != "")) // Cookie existe
	{
		ini=tudo.indexOf(tmp);
		if ((ini<tudo.length) && (ini!=-1))// Achou então tem que apagar
		{
			var tmp2=tudo.substring(ini,tudo.length);
			fim=tmp2.indexOf("%2A%23")+6;
			cont=tudo.substring(0,ini)+tmp2.substring(fim,tmp2.length);
			SetCookie(nomecookie,cont);
		}
	}
	return ini;
}

//Função que valida data
function verificaData(Data)
{
  	var dma = -1;
  	var data = Array(3);
  	var ch = Data.charAt(0); 
  	for(i=0; i < Data.length && (( ch >= '0' && ch <= '9' ) || ( ch == '/' && i != 0 ) ); )
  	{
   	data[++dma] = '';
   	if(ch!='/' && i != 0) return false;
   	if(i != 0 ) ch = Data.charAt(++i);
   	if(ch=='0') ch = Data.charAt(++i);
   	while( ch >= '0' && ch <= '9' )
   	{
    		data[dma] += ch;
    		ch = Data.charAt(++i);
   	} 
  	}
  	if(ch!='') return false;
  	if(data[0] == '' || isNaN(data[0]) || parseInt(data[0]) < 1) return false;
  	if(data[1] == '' || isNaN(data[1]) || parseInt(data[1]) < 1 || parseInt(data[1]) > 12) return false;
  	if(data[2] == '' || isNaN(data[2]) || ((parseInt(data[2]) < 0 || parseInt(data[2]) > 99 ) && (parseInt(data[2]) < 1900 || parseInt(data[2]) > 9999))) return false;
  	if(data[2] < 50) data[2] = parseInt(data[2]) + 2000;
  	else if(data[2] < 100) data[2] = parseInt(data[2]) + 1900;
  	switch(parseInt(data[1]))
  	{
		case 2: { if(((parseInt(data[2])%4!=0 || (parseInt(data[2])%100==0 && parseInt(data[2])%400!=0)) && parseInt(data[0]) > 28) || parseInt(data[0]) > 29 ) return false; break; }
   	case 4: case 6: case 9: case 11: { if(parseInt(data[0]) > 30) return false; break;}
   	default: { if(parseInt(data[0]) > 31) return false;}
  	}
  	return true; 
}

//Função que faz comparação com datas
function comparaData( data1, data2 ) {
	var ano1 = data1.substring( 6 );
	var mes1 = data1.substring(3,5);
	var dia1 = data1.substring(0,2);
	var data1Str = ano1 + mes1 + dia1
	var ano2 = data2.substring( 6 );
	var mes2 = data2.substring(3,5);
	var dia2 = data2.substring(0,2);
	var data2Str = ano2 + mes2 + dia2;
	if( data1Str > data2Str ) {
		//alert( 'data1 maior que data2' );
		return 1;
	}
	else if( data1Str < data2Str ) {
		//alert( 'data1 menor que data2' );
		return -1;
	}	
	else {
		//alert( 'data1 igual a data2' );
		return 0;
	}	
}

function IsNumeric(sText)
{
	var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
   { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
      {
         IsNumber = false;
      }
   }
   return IsNumber;
}

function chr(int) 
{
	var A = new Array('\x00','\x01','\x02','\x03','\x04','\x05','\x06','\x07','\x08','\x09','\x0A','\x0B','\x0C','\x0D','\x0E','\x0F','\x10','\x11','\x12','\x13','\x14','\x15','\x16','\x17','\x18','\x19','\x1A','\x1B','\x1C','\x1D','\x1E','\x1F','\x20','\x21','\x22','\x23','\x24','\x25','\x26','\x27','\x28','\x29','\x2A','\x2B','\x2C','\x2D','\x2E','\x2F','\x30','\x31','\x32','\x33','\x34','\x35','\x36','\x37','\x38','\x39','\x3A','\x3B','\x3C','\x3D','\x3E','\x3F','\x40','\x41','\x42','\x43','\x44','\x45','\x46','\x47','\x48','\x49','\x4A','\x4B','\x4C','\x4D','\x4E','\x4F','\x50','\x51','\x52','\x53','\x54','\x55','\x56','\x57','\x58','\x59','\x5A','\x5B','\x5C','\x5D','\x5E','\x5F','\x60','\x61','\x62','\x63','\x64','\x65','\x66','\x67','\x68','\x69','\x6A','\x6B','\x6C','\x6D','\x6E','\x6F','\x70','\x71','\x72','\x73','\x74','\x75','\x76','\x77','\x78','\x79','\x7A','\x7B','\x7C','\x7D','\x7E','\x7F','\x80','\x81','\x82','\x83','\x84','\x85','\x86','\x87','\x88','\x89','\x8A','\x8B','\x8C','\x8D','\x8E','\x8F','\x90','\x91','\x92','\x93','\x94','\x95','\x96','\x97','\x98','\x99','\x9A','\x9B','\x9C','\x9D','\x9E','\x9F','\xA0','\xA1','\xA2','\xA3','\xA4','\xA5','\xA6','\xA7','\xA8','\xA9','\xAA','\xAB','\xAC','\xAD','\xAE','\xAF','\xB0','\xB1','\xB2','\xB3','\xB4','\xB5','\xB6','\xB7','\xB8','\xB9','\xBA','\xBB','\xBC','\xBD','\xBE','\xBF','\xC0','\xC1','\xC2','\xC3','\xC4','\xC5','\xC6','\xC7','\xC8','\xC9','\xCA','\xCB','\xCC','\xCD','\xCE','\xCF','\xD0','\xD1','\xD2','\xD3','\xD4','\xD5','\xD6','\xD7','\xD8','\xD9','\xDA','\xDB','\xDC','\xDD','\xDE','\xDF','\xE0','\xE1','\xE2','\xE3','\xE4','\xE5','\xE6','\xE7','\xE8','\xE9','\xEA','\xEB','\xEC','\xED','\xEE','\xEF','\xF0','\xF1','\xF2','\xF3','\xF4','\xF5','\xF6','\xF7','\xF8','\xF9','\xFA','\xFB','\xFC','\xFD','\xFE','\xFF')
   return A[int%256];
}