var IE4 = (document.all && !document.getElementById) ? true : false;
var NS4 = (document.layers) ? true : false;
var IE5 = (document.all && document.getElementById) ? true : false;
var N6 = (document.getElementById && !document.all) ? true : false;

function preloadImages() { //v3.0
        var d=document;
        if(d.images){
          if(!d.p) d.p=new Array();
                var i,j=d.p.length,a=preloadImages.arguments;
        for(i=0; i<a.length; i++)
                if (a[i].indexOf("#")!=0){
                        d.p[j]=new Image; d.p[j++].src=a[i];
                }
        }
}

function getSrc(id) {
  if (NS4) { return eval("document." + id)}
  else if (IE4) {return eval("document.all." + id)}
  else if (IE5 || N6) {return document.getElementById(id)};
}


function findObj(n, d) { 
        var p,i,x;
        if(!d)
                d=document;
        if((p=n.indexOf("?"))>0&&parent.frames.length) {
                d=parent.frames[n.substring(p+1)].document;
                n=n.substring(0,p);
        }

        x=getSrc(n);

        for(i=0;!x&&i<d.forms.length;i++)
                x=d.forms[i][n];

        for(i=0;!x&&d.layers&&i<d.layers.length;i++)
                x=findObj(n,d.layers[i].document);
        return x;
}

function showHideLayersDisplay() { 
  var h,i,p,v,objN,obj,args=showHideLayersDisplay.arguments;
  for (i=0; i<(args.length-2); i+=3)
    if ((obj=findObj(args[i]))!=null) {
        v=args[i+2];
        if (obj.style) {
                objN=obj.style;
                v=(v=='show')?'':(v='hide')?'none':v;
        }
        objN.display=v;
    }
}

function showHideLayers() { 
  var h,i,p,v,objN,obj,args=showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3)
                if ((obj=findObj(args[i]))!=null) {
                        v=args[i+2];
                        wo=args[i+3];
                        ho=args[i+4];

                        if(!wo) wo=100;
                        if(!ho) ho=100;

                        if (obj.style) {
                                objN=obj.style;
                                v=(v=='show')?'visible':(v='hide')?'hidden':v;
                        }
                        objN.visibility=v;


                        if(N6 && v=='visible') {
                                h=obj.offsetHeight;
                                obj.style.height=0;
                                openLayer(obj,h);
                        }

                        var w=document.body.scrollWidth;
                        var h=document.body.scrollHeight;
                        obj.style.top= (h - ho)/2 + "px";
                        obj.style.left= (w - wo)/2 + "px";
               }
}


function openLayer() {
        var        args=openLayer.arguments;
        h=args[1];
        obj=args[0];
        if(obj.offsetHeight < h) {
                obj.style.height = obj.offsetHeight + 15;
               setTimeout('openLayer(obj,h)',15);
        }

}



// **************************** CALENDARIO *********************


/*
- incluir na head ou após html : 
	<script type="text/javascript" src="bInclude/bCalendario.js"></script>
- usar como no exemplo
	<input type="text" name="data" size="15" maxlength="10" readonly="readonly" onclick="displayDatePicker(this.name)"/>
*/
var datePickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";

var dayArrayShort = new Array('D', 'S', 'T', 'Q', 'Q', 'S', 'S');
var dayArrayMed = new Array('Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab');
var dayArrayLong = new Array('Domindo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado');
var monthArrayShort = new Array('Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez');
var monthArrayMed = new Array('Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez');
var monthArrayLong = new Array('Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro');
  
var defaultDateSeparator = "/";
var defaultDateFormat = "dmy"
var dateSeparator = defaultDateSeparator;
var dateFormat = defaultDateFormat;

document.write("<style>");
document.write(".dpDiv {	}");
document.write(".dpTable {	_width:227px; font-family: Tahoma, Arial, Helvetica, sans-serif;	font-size: 10px; text-align: center;color: #505050;	background-color: #F7F7F7;	border: 1px solid #C0C0C0;	}");
document.write(".dpTR {	}");
document.write(".dpTitleTR {	}");
document.write(".dpDayTR {	}");
document.write(".dpTodayButtonTR {	}");
document.write(".dpTD {	cursor: pointer;	}");
document.write(".dpDayHighlightTD {	background-color: #CCCCCC;	border: 1px solid #C0C0C0;	cursor: pointer;	}");
document.write(".dpTitleTD {	}");
document.write(".dpButtonTD {	}");
document.write(".dpTodayButtonTD {	}");
document.write(".dpDayTD {	background-color: #CCCCCC;	border: 1px solid #C0C0C0;	color: white;	}");
document.write(".dpTitleText {	font-size: 10px;	color: gray;	font-weight: bold;	}");
document.write(".dpDayHighlight {	color: 4060ff;	font-weight: bold;	}");
document.write(".dpButton {	border:1px solid #FFFFFF; font-weight: bold; font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif;	font-size: 10px; color: #F7F7F7; background-color: #C0C0C0; }");
document.write(".dpTodayButton { border:1px solid #FFFFFF;  font-weight: bold; font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif; font-size: 10px; color:#F7F7F7; background-color: #C0C0C0; }");
document.write("</style>");

function displayDatePicker(dateFieldName, displayBelowThisObject, dtFormat, dtSep)
{
  var targetDateField = document.getElementsByName(dateFieldName).item(0);
  
  if (!displayBelowThisObject)
    displayBelowThisObject = targetDateField;
  
  if (dtSep)
    dateSeparator = dtSep;
  else
    dateSeparator = defaultDateSeparator;
  
  if (dtFormat)
    dateFormat = dtFormat;
  else
    dateFormat = defaultDateFormat;
  
  var x = displayBelowThisObject.offsetLeft;
  var y = displayBelowThisObject.offsetTop + displayBelowThisObject.offsetHeight;
  
  var parent = displayBelowThisObject;
  while (parent.offsetParent) {
    parent = parent.offsetParent;
    x += parent.offsetLeft;
    y += parent.offsetTop;
  }
  
  drawDatePicker(targetDateField, x, y);
}

function drawDatePicker(targetDateField, x, y)
{
  var dt = getFieldDate(targetDateField.value);
  
  if (!document.getElementById(datePickerDivID)) {
    var newNode = document.createElement("div");
    newNode.setAttribute("id", datePickerDivID);
    newNode.setAttribute("class", "dpDiv");
    newNode.setAttribute("style", "visibility: hidden;");
    document.body.appendChild(newNode);
  }
  
  var pickerDiv = document.getElementById(datePickerDivID);
  pickerDiv.style.position = "absolute";
  pickerDiv.style.left = x + "px";
  pickerDiv.style.top = y + "px";
  pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
  pickerDiv.style.zIndex = 10000;
  
  refreshDatePicker(targetDateField.name, dt.getFullYear(), dt.getMonth(), dt.getDate());
}

function refreshDatePicker(dateFieldName, year, month, day)
{
  
  var thisDay = new Date();
  
  if ((month >= 0) && (year > 0)) {
    thisDay = new Date(year, month, 1,23);
  } else {
    day = thisDay.getDate();
    thisDay.setDate(1);
  }
  
  var crlf = "\r\n";
  var TABLE = "<table cols=7 class='dpTable'>" + crlf;
  var xTABLE = "</table>" + crlf;
  var TR = "<tr class='dpTR'>";
  var TR_title = "<tr class='dpTitleTR'>";
  var TR_days = "<tr class='dpDayTR'>";
  var TR_todaybutton = "<tr class='dpTodayButtonTR'>";
  var xTR = "</tr>" + crlf;
  var TD = "<td class='dpTD' nowrap ";	
  var TD_title = "<td colspan=3 class='dpTitleTD' nowrap>";
  var TD_buttons = "<td class='dpButtonTD' colspan=2 nowrap>";
  var TD_todaybutton = "<td colspan=7 class='dpTodayButtonTD' nowrap>";
  var TD_days = "<td class='dpDayTD' nowrap>";
  var TD_selected = "<td class='dpDayHighlightTD' nowrap ";	
  var xTD = "</td>" + crlf;
  var DIV_title = "<div class='dpTitleText'>";
  var DIV_selected = "<div class='dpDayHighlight'>";
  var xDIV = "</div>";
  var html = TABLE;
  
  html += TR_title;
  html += TD_buttons + getButtonCode(dateFieldName, thisDay, -12, "&lt;&lt;") + getButtonCode(dateFieldName, thisDay, -1, "&lt;") + xTD;
  html += TD_title + DIV_title + monthArrayLong[thisDay.getMonth()] + " " + thisDay.getFullYear() + xDIV + xTD;
  html += TD_buttons + getButtonCode(dateFieldName, thisDay, 1, "&gt;") + getButtonCode(dateFieldName, thisDay, 12, "&gt;&gt;") + xTD;
  html += xTR;
  
  html += TR_days;
  for(i = 0; i < dayArrayShort.length; i++)
    html += TD_days + dayArrayShort[i] + xTD;
  html += xTR;
  
  html += TR;
  
  for (i = 0; i < thisDay.getDay(); i++)
    html += TD + "&nbsp;" + xTD;
  
  var tot="";
  do {
    dayNum = thisDay.getDate();
    TD_onclick = " onclick=\"updateDateField('" + dateFieldName + "', '" + getDateString(thisDay) + "');\">";
    
    if (dayNum == day)
      html += TD_selected + TD_onclick + DIV_selected + dayNum + xDIV + xTD;
    else 
      html += TD + TD_onclick + dayNum + xTD;
    
    if (thisDay.getDay() == 6)
      html += xTR + TR;

    thisDay.setDate(thisDay.getDate() + 1);
    
  } while ( thisDay.getDate() > 1)
  
  if (thisDay.getDay() > 0) {
    for (i = 6; i > thisDay.getDay(); i--)
      html += TD + "&nbsp;" + xTD;
  }
  html += xTR;
  
  var today = new Date();
  var todayString = "Hoje é " + dayArrayMed[today.getDay()] + ", " + monthArrayMed[today.getMonth()] + " de " + today.getDate();
  html += TR_todaybutton + TD_todaybutton;
  html += "<button class='dpTodayButton' onClick='refreshDatePicker(\"" + dateFieldName + "\");'>hoje</button>&nbsp;&nbsp;";
  html += "<button class='dpTodayButton' onClick='updateDateField(\"" + dateFieldName + "\");'>fechar</button>";
  html += xTD + xTR;
  
  html += xTABLE;
  
  document.getElementById(datePickerDivID).innerHTML = html;
  adjustiFrame();
}


function getButtonCode(dateFieldName, dateVal, adjust, label)
{
  var newMonth = (dateVal.getMonth() + adjust) % 12;
  var newYear = dateVal.getFullYear() + parseInt((dateVal.getMonth() + adjust) / 12);
  if (newMonth < 0) {
    newMonth += 12;
    newYear += -1;
  }
  
  return "<button class='dpButton' onClick='refreshDatePicker(\"" + dateFieldName + "\", " + newYear + ", " + newMonth + ");'>" + label + "</button>";
}


function getDateString(dateVal)
{
  var dayString = "00" + dateVal.getDate();
  var monthString = "00" + (dateVal.getMonth()+1);
  dayString = dayString.substring(dayString.length - 2);
  monthString = monthString.substring(monthString.length - 2);
  
  switch (dateFormat) {
    case "dmy" :
      return dayString + dateSeparator + monthString + dateSeparator + dateVal.getFullYear();
    case "ymd" :
      return dateVal.getFullYear() + dateSeparator + monthString + dateSeparator + dayString;
    case "mdy" :
    default :
      return monthString + dateSeparator + dayString + dateSeparator + dateVal.getFullYear();
  }
}


function getFieldDate(dateString)
{
  var dateVal;
  var dArray;
  var d, m, y;
  
  try {
    dArray = splitDateString(dateString);
    if (dArray) {
      switch (dateFormat) {
        case "dmy" :
          d = parseInt(dArray[0], 10);
          m = parseInt(dArray[1], 10) - 1;
          y = parseInt(dArray[2], 10);
          break;
        case "ymd" :
          d = parseInt(dArray[2], 10);
          m = parseInt(dArray[1], 10) - 1;
          y = parseInt(dArray[0], 10);
          break;
        case "mdy" :
        default :
          d = parseInt(dArray[1], 10);
          m = parseInt(dArray[0], 10) - 1;
          y = parseInt(dArray[2], 10);
          break;
      }
      dateVal = new Date(y, m, d);
    } else {
      dateVal = new Date(dateString);
    }
  } catch(e) {
    dateVal = new Date();
  }
  
  return dateVal;
}


function splitDateString(dateString)
{
  var dArray;
  if (dateString.indexOf("/") >= 0)
    dArray = dateString.split("/");
  else if (dateString.indexOf(".") >= 0)
    dArray = dateString.split(".");
  else if (dateString.indexOf("-") >= 0)
    dArray = dateString.split("-");
  else if (dateString.indexOf("\\") >= 0)
    dArray = dateString.split("\\");
  else
    dArray = false;
  
  return dArray;
}

function updateDateField(dateFieldName, dateString)
{
  var targetDateField = document.getElementsByName(dateFieldName).item(0);
  if (dateString)
    targetDateField.value = dateString;
  document.getElementById(datePickerDivID).style.visibility = "hidden";
  adjustiFrame();
  targetDateField.focus();
  
  if ((dateString) && (typeof(datePickerClosed) == "function"))
    datePickerClosed(targetDateField);
}


function adjustiFrame(pickerDiv, iFrameDiv)
{
  if (!document.getElementById(iFrameDivID)) {
    var newNode = document.createElement("iFrame");
    newNode.setAttribute("id", iFrameDivID);
    newNode.setAttribute("src", "javascript:false;");
    newNode.setAttribute("scrolling", "no");
    newNode.setAttribute("frameborder", "0");
    document.body.appendChild(newNode);
  }
  
  if (!pickerDiv)
    pickerDiv = document.getElementById(datePickerDivID);
  if (!iFrameDiv)
    iFrameDiv = document.getElementById(iFrameDivID);
  
  try {
    iFrameDiv.style.position = "absolute";
    iFrameDiv.style.width = pickerDiv.offsetWidth;
    iFrameDiv.style.height = pickerDiv.offsetHeight;
    iFrameDiv.style.top = pickerDiv.style.top;
    iFrameDiv.style.left = pickerDiv.style.left;
    iFrameDiv.style.zIndex = pickerDiv.style.zIndex - 1;
    iFrameDiv.style.visibility = pickerDiv.style.visibility;
  } catch(e) {
  }
}


function confere_num(entry) {
        var str = entry.value;
        var erro = 0;
        for (var i = 0; i < str.length; i++) {
                var ch = str.substring(i, i + 1)
                if ((ch < "0" || "9" < ch) && ch != '.' && ch != ',') {
                        erro=1;
                }
        }
        if(erro) {
                alert('Os valores devem ser numéricos');
                entry.value="0.00";
                entry.focus();
                entry.select();
                return false
        }

        return true;

}