﻿/**
* Javascript prototypes - String.pad() and Number.format()
* Carlos Reche (carlosreche@yahoo.com)
*/
String.PAD_LEFT  = 0;
String.PAD_RIGHT = 1;
String.PAD_BOTH  = 2;

String.prototype.pad = function(size, pad, side) {
  var str = this, append = "", size = (size - str.length);
  var pad = ((pad != null) ? pad : " ");
  if ((typeof size != "number") || ((typeof pad != "string") || (pad == ""))) {
    throw new Error("Wrong parameters for String.pad() method.");
  }
  if (side == String.PAD_BOTH) {
    str = str.pad((Math.floor(size / 2) + str.length), pad, String.PAD_LEFT);
    return str.pad((Math.ceil(size / 2) + str.length), pad, String.PAD_RIGHT);
  }
  while ((size -= pad.length) > 0) {
    append += pad;
  }
  append += pad.substr(0, (size + pad.length));
  return ((side == String.PAD_LEFT) ? append.concat(str) : str.concat(append));
}

Number.prototype.format = function(d_len, d_pt, t_pt) {
  var d_len = d_len || 0;
  var d_pt = d_pt || ".";
  var t_pt = t_pt || ",";
  if ((typeof d_len != "number")
    || (typeof d_pt != "string")
    || (typeof t_pt != "string")) {
    throw new Error("wrong parameters for method 'String.pad()'.");
  }
  var integer = "", decimal = "";
  var n = new String(this).split(/\./), i_len = n[0].length, i = 0;
  if (d_len > 0) {
    n[1] = (typeof n[1] != "undefined") ? n[1].substr(0, d_len) : "";
    decimal = d_pt.concat(n[1].pad(d_len, "0", String.PAD_RIGHT));
  }
  while (i_len > 0) {
    if ((++i % 3 == 1) && (i_len != n[0].length)) {
      integer = t_pt.concat(integer);
    }
    integer = n[0].substr(--i_len, 1).concat(integer);
  }
  return (integer + decimal);
}


function diasemana(hoje)
{
  var dia= hoje.getDay();
  var semana=new Array(6);
  semana[0]='Domingo';
  semana[1]='Segunda-Feira';
  semana[2]='Terça-Feira';
  semana[3]='Quarta-Feia';
  semana[4]='Quinta-Feira';
  semana[5]='Sexta-Feira';
  semana[6]='Sábado';
  return semana[dia];
}

function mesextenso(hoje)
{
  var Mes= hoje.getMonth();
  var Meses=new Array(11);
  Meses[0]='janeiro';
  Meses[1]='fevereiro';
  Meses[2]='março';
  Meses[3]='abril';
  Meses[4]='maio';
  Meses[5]='junho';
  Meses[6]='julho';
  Meses[7]='agosto';
  Meses[8]='setembro';
  Meses[9]='outubro';
  Meses[10]='novembro';
  Meses[11]='dezembro';
  return Meses[Mes];
}

function PrimeiroDiaSemana(dia)
{
  dia.setDate(dia.getDate() - dia.getDay());
  return dia;
}

function UltimoDiaSemana(dia)
{
  dia.setDate(dia.getDate() + (6-dia.getDay()));
  return dia;
}

function PrimeiroDiaMes(dia)
{
  dia.setDate(1);
  return dia;
}

function ultimo_dia(mes,ano){
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12) return 31;
if(mes==4||mes==6||mes==9||mes==11) return 30;
if(mes==2) if(ano%400==0) return 29;
if(mes==2) if(ano%100==0) return 28;
if(mes==2) if(ano%4==0) return 29;    else return 28;
}

function UltimoDiaMes(dia)
{
  var dd = new Date(dia.getFullYear(), dia.getMonth(), ultimo_dia(dia.getMonth()+1,dia.getFullYear()));
  return dd;
}

function FormataData(dia)
{
  return dia.getFullYear()+'/'+(dia.getMonth()+1)+'/'+dia.getDate();
}

