/* PopUp Calendar v2.1
© PCI, Inc.,2000 • Freeware
webmaster@personal-connections.com
+1 (925) 955 1624
Permission granted  for unlimited use so far
as the copyright notice above remains intact. */

/* Settings. Please read readme.html file for instructions*/
var ppcDF = "d/m/Y";
var ppcMN = new Array("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");
var ppcWN = new Array("Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado");
var ppcER = new Array(4);
ppcER[0] = "Required DHTML functions are not supported in this browser.";
ppcER[1] = "Target form field is not assigned or not accessible.";
ppcER[2] = "Sorry, the chosen date is not acceptable. Please read instructions on the page.";
ppcER[3] = "Unknown error occured while executing this script.";
var ppcUC = false;
var ppcUX = 4;
var ppcUY = 4;

/* Do not edit below this line unless you are sure what are you doing! */

var ppcIE=(navigator.appName == "Microsoft Internet Explorer");
var ppcNN=((navigator.appName == "Netscape")&&(document.layers));
var ppcTT="<table width=\"150\" cellspacing=\"0\" cellpadding=\"2\" style=\"border-right:#000000 1px solid;border-left:#000000 1px solid;border-bottom:#000000 1px solid\">\n";
var ppcCD=ppcTT;var ppcFT="<font face=\"Verdana,arial\" size=\"1\" color=\"#000000\">";var ppcFC=true;
var ppcTI=false;var ppcSV=null;var ppcRL=null;var ppcXC=null;var ppcYC=null;
var ppcML=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var ppcWE=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");

//Variaveis Viviane
var Cal_DataAtual	= new Date(objDataAtualGlobal);
var Cal_AnoAtual		= subright(strDataAtualGlobal,4);
var Cal_MesAtual		= strDataAtualGlobal.substr(3,2)-1;
var Cal_DiaAtual		= subleft(strDataAtualGlobal,2);

Cal_AnoAtual = (Cal_AnoAtual)*1
Cal_MesAtual = (Cal_MesAtual)*1
Cal_DiaAtual	= (Cal_DiaAtual)*1

//Só para Netscape ****************************
if (ppcNN) {
 window.captureEvents(Event.RESIZE);
 window.onresize = restoreLayers;
 document.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
 document.onmousedown = recordXY;
 document.onmouseup = confirmXY;
}

function restoreLayers(e) {
  var sFunctionName='restoreLayers';
  try{
	 if (ppcNN) {
	  with (window.document) {
	   open("text/html");
	   write("<html><head><title>Restoring the layer structure...</title></head>");
	   write("<body bgcolor=\"#FFFFFF\" onLoad=\"history.go(-1)\">");
	   write("</body></html>");
	   close();}}
	 
  }catch(err){
    trataErro(err);
  }
}


function recordXY(e) {
  var sFunctionName='recordXY';
  try{
	 if (ppcNN) {
	  ppcXC = e.x;
	  ppcYC = e.y;
	  document.routeEvent(e);}
	 
  }catch(err){
    trataErro(err);
  }
}


function confirmXY(e) {
  var sFunctionName='confirmXY';
  try{
	 if (ppcNN) {
	  ppcXC = (ppcXC == e.x) ? e.x : null;
	  ppcYC = (ppcYC == e.y) ? e.y : null;
	  document.routeEvent(e);
	 }
	 
//*********************************************
  }catch(err){
    trataErro(err);
  }
}


function getCalendarFor(target,rules) {
	var sFunctionName='getCalendarFor';
	try{
		ppcSV = target;
		ppcRL = rules;
		var mostraCalendar = false;
    if (!navigator.appName == 'Netscape'){
    if (typeof(ppcSV) == 'object'){
		  var tag = ppcSV.tagName;
		  var tipo = ppcSV.type;
		  var cls = ppcSV.className;
		  cls = cls.toUpperCase();
		  tag = tag.toUpperCase();
		  tipo = tipo.toUpperCase();
		  if (subleft(cls,11) != 'MAKEDISABLE'){
		  	if (subleft(tag,6) == 'SELECT'){
		  		if (ppcSV.disabled == false){
			  		mostraCalendar = true;
		  		}
		  	}else	if (ppcSV.readOnly == false){
		  		mostraCalendar = true;
				} 
		  }
		}
    }
		if (mostraCalendar){
			if ((ppcSV.value == "00/00/0000")||(ppcSV.value == "")){
	 			setCalendar(Cal_AnoAtual,Cal_MesAtual,Cal_DiaAtual);
			}else{
				var Data = target.value;
				var AnoInformado = subright(Data,4);
				var MesInformado = (Data.substr(3,2)-1);
				var DiaInformado = subleft(Data,2);
				setCalendar(AnoInformado,MesInformado,DiaInformado);
			}
			if ((ppcSV != null)&&(ppcSV)){
				if (ppcIE){
					var obj = document.getElementById('PopUpCalendar'); //document.all['PopUpCalendar'];
					obj.style.left = document.body.scrollLeft+event.clientX;
					obj.style.top  = document.body.scrollTop+event.clientY;
					obj.style.visibility = "visible";
				}else if (ppcNN){
					var obj = document.layers['PopUpCalendar'];
					obj.left = ppcXC
					obj.top  = ppcYC
					obj.visibility = "show";
				}else{
					showError(ppcER[0]);
				}
			}else{
				showError(ppcER[1]);
			}
		}
  }catch(err){
    trataErro(err);
  }
}


function switchMonthYear(M,Y) {
  var sFunctionName='switchMonthYear';
  try{
	 if (M == ''){
	  M = document.ppcListSelector.sItemMonth[document.ppcListSelector.sItemMonth.selectedIndex].value;
	 }else{
		 if (Y == ''){
			Y = document.ppcListSelector.sItemYear[document.ppcListSelector.sItemYear.selectedIndex].value;
		 }
	 }
	 setCalendar(Y,M,1);
  }catch(err){
    trataErro(err);
  }
}



function selectDate(param) {
  var sFunctionName='selectDate';
  try{
	 var arr   = param.split("|");
	 var year  = arr[0];
	 var month = arr[1];
	 var date  = arr[2];
	 var ptr = parseInt(date);
	 Cal_DataAtual.setDate(ptr);
	 if ((ppcSV != null)&&(ppcSV)) {
	 		if (validDate(date)){
  			ppcSV.value = dateFormat(year,month,date);
	  		ppcSV.focus();
	  		if (typeof(ppcSV.onchange) == 'function'){
	  			ppcSV.onchange();
	  		}
  			hideCalendar();
	  	}else{
	  		showError(ppcER[2]);
	  		if (ppcTI){
	  			clearTimeout(ppcTI);ppcTI = false;
	  		}
	 		}
	 	}else{
	  showError(ppcER[1]);
	  	hideCalendar();
	  }
  }catch(err){
    trataErro(err);
  }
}


function setCalendar(year,month,day) {
  var sFunctionName='setCalendar';
	try{
		setSelectList(year,month);
		if (month == 1){
			ppcML[1] = (isLeap(year)) ? 29 : 28;
		}
		Cal_DataAtual.setYear(year);
		Cal_DataAtual.setMonth(month);
		Cal_DataAtual.setDate(1);
		updateContent(year,month,day);
  }catch(err){
    trataErro(err);
  }
}


function updateContent(year,month,day) {
  var sFunctionName='updateContent';
  try{
		generateContent(year,month,day);
		if (ppcIE){
			document.getElementById('MonthDays').innerHTML = ppcCD;
		}else if (ppcNN){
			with (document.layers['PopUpCalendar'].document.layers['MonthDays'].document){
				open("text/html");
				write("<html>\n<head>\n<title>DynDoc</title>\n</head>\n<body bgcolor=\"#FFFFFF\">\n");
				write(ppcCD);
				write("</body>\n</html>");
				close();
			}
		}else{
			showError(ppcER[0]);
		}
		ppcCD = ppcTT;
  }catch(err){
    trataErro(err);
  }
}


function generateContent(year,month,day) {
  var sFunctionName='generateContent';
  try{
		var date  = 1;
		var posDiaInicio = Cal_DataAtual.getDay();
		var len = ppcML[month];
		var bgr,tmp = "";
		var j,i = 0;
		for (j = 0; j < 7; ++j){
		if (date > len) {break;}
			for (i = 0; i < 7; ++i){
				bgr = ((i == 0)||(i == 6)) ? "#3399ff" : "#FFFFFF";
				if (((j == 0)&&(i < posDiaInicio))||(date > len)){
					tmp  += makeCell(bgr,year,month,day,0);
				}else{
					tmp  += makeCell(bgr,year,month,day,date);++date;
				}
			}
			ppcCD += "<tr align=\"center\">\n" + tmp + "</tr>\n";tmp = "";
		}
		ppcCD += "</table>\n";
  }catch(err){
    trataErro(err);
  }
}


function makeCell(bgr,year,month,day,date) {
  var sFunctionName='makeCell';
  try{
	 var param = "\'"+year+"|"+month+"|"+date+"\'";
	 var td1 = "<td width=\"20\" bgcolor=\""+bgr+"\" ";
	 var td2 = (ppcIE) ? "</font></span></td>\n" : "</font></a></td>\n";
	 var evt = "onMouseOver=\"this.style.backgroundColor=\'#87cefa\'\" onMouseOut=\"this.style.backgroundColor=\'"+bgr+"\'\" onMouseUp=\"selectDate("+param+")\" ";
	 var ext = "<span Style=\"cursor: hand\">";
	 var lck = "<span Style=\"cursor: default\">";
	 var lnk = "<a href=\"javascript:selectDate("+param+")\" onMouseOver=\"window.status=\' \';return true;\">";
	 var cellValue = (date != 0) ? date+"" : "&nbsp;";
	 if (day == date) {
	  cellValue = "<font color='red'><b>"+cellValue+"</b></font>";
	 }
	 var cellCode = "";
	 if (date == 0) {
	  if (ppcIE) {cellCode = td1+"Style=\"cursor: default\">"+lck+ppcFT+cellValue+td2;}
	  else {cellCode = td1+">"+ppcFT+cellValue+td2;}}
	 else {
	  if (ppcIE) {cellCode = td1+evt+"Style=\"cursor: hand\">"+ext+ppcFT+cellValue+td2;}
	  else {
	   if (date < 10) {cellValue = "&nbsp;" + cellValue + "&nbsp;";}
	   cellCode = td1+">"+lnk+ppcFT+cellValue+td2;}}
	 return cellCode;
	 
  }catch(err){
    trataErro(err);
  }
}


function setSelectList(year,month) {
  var sFunctionName='setSelectList';
  try{
	 var i = 0;
	 var objMonth = null;
	 var objYear = null;
	 if (ppcIE) {
		objMonth = document.ppcListSelector.sItemMonth;
		objYear = document.ppcListSelector.sItemYear;
	 } else if (ppcNN) {
	    objMonth = document.layers['PopUpCalendar'].document.layers['Selector'].document.ppcListSelector.sItemMonth;
	    objYear = document.layers['PopUpCalendar'].document.layers['Selector'].document.ppcListSelector.sItemYear;
	 } else {/* NOP */}
	
 // Seleciona o Mês
	 objMonth.selectedIndex = month;
	
 // Atualiza o Combo de Ano e Seleciona o Ano
	 var anoInicio = Cal_AnoAtual - 100;
	 var anoFim = Cal_AnoAtual + 20;
	 i = 0
	 while((anoInicio!=anoFim)){
		if (objYear.options[i]==null){
	 		var oOptionYear = document.createElement("OPTION");
			oOptionYear.value = anoInicio;
			oOptionYear.text  = anoInicio;
	 		objYear.options.add(oOptionYear);
	 	}else{
	 		objYear.options[i].value = anoInicio;
	 		objYear.options[i].text  = anoInicio;
	 	}
	
		if (anoInicio == year){
		  objYear.selectedIndex = i;
		}
		
	 	i++;
	 	anoInicio++
	 }
	 
  }catch(err){
    trataErro(err);
  }
}


function hideCalendar() {
  var sFunctionName='hideCalendar';
  try{
	 if (ppcIE) {document.getElementById('PopUpCalendar').style.visibility = "hidden";}
	 else if (ppcNN) {document.layers['PopUpCalendar'].visibility = "hide";window.status = " ";}
	 else {/* NOP */}
	 ppcTI = false;
	 ppcSV = null;
	
	 if (ppcIE) {var objMonth = document.ppcListSelector.sItemMonth;var objYear = document.ppcListSelector.sItemYear}
	 else if (ppcNN) {var objMonth = document.layers['PopUpCalendar'].document.layers['Selector'].document.ppcListSelector.sItemMonth;var objYear = document.layers['PopUpCalendar'].document.layers['Selector'].document.ppcListSelector.sItemYear;}
	 else {/* NOP */}
	 objMonth.selectedIndex = 0;
	 objYear.selectedIndex = 0;
	 
  }catch(err){
    trataErro(err);
  }
}


function showError(message) {
  var sFunctionName='showError';
  try{
	 window.alert("[ PopUp Calendar ]\n\n" + message);
	 
  }catch(err){
    trataErro(err);
  }
}


function isLeap(year) {
  var sFunctionName='isLeap';
  try{
	 if ((year%400==0)||((year%4==0)&&(year%100!=0))) {return true;}
	 else {return false;}
	 
  }catch(err){
    trataErro(err);
  }
}


function getFullYear(obj) {
  var sFunctionName='getFullYear';
  try{
	 if (ppcNN) {return obj.getFullYear() + 1900;}
	 else {return obj.getFullYear();}
	 
  }catch(err){
    trataErro(err);
  }
}


function validDate(date) {
  var sFunctionName='validDate';
  try{
	 var reply = true;
	 if (ppcRL == null) {/* NOP */}
	 else {
	  var arr = ppcRL.split(":");
	  var mode = arr[0];
	  var arg  = arr[1];
	  var key  = arr[2].charAt(0).toLowerCase();
	  if (key != "d") {
	   var day = Cal_DiaAtual;
	   var orn = isEvenOrOdd(date);
	   reply = (mode == "[^]") ? !((day == arg)&&((orn == key)||(key == "a"))) : ((day == arg)&&((orn == key)||(key == "a")));}
	  else {reply = (mode == "[^]") ? (date != arg) : (date == arg);}}
	 return reply;
	 
  }catch(err){
    trataErro(err);
  }
}


function isEvenOrOdd(date) {
  var sFunctionName='isEvenOrOdd';
  try{
	 if (date - 21 > 0) {return "e";}
	 else if (date - 14 > 0) {return "o";}
	 else if (date - 7 > 0) {return "e";}
	 else {return "o";}
	 
  }catch(err){
    trataErro(err);
  }
}


function dateFormat(year,month,date) {
  var sFunctionName='dateFormat';
  try{
	 if (ppcDF == null) {ppcDF = "m/d/Y";}
	 var day = Cal_DiaAtual;
	 var crt = "";
	 var str = "";
	 var chars = ppcDF.length;
	 for (var i = 0; i < chars; ++i) {
	  crt = ppcDF.charAt(i);
	  switch (crt) {
	   case "M": str += ppcMN[month]; break;
	   case "m": str += (month<9) ? ("0"+(++month)) : ++month; break;
	   case "Y": str += year; break;
	   case "y": str += year.substring(2); break;
	   case "d": str += ((ppcDF.indexOf("m")!=-1)&&(date<10)) ? ("0"+date) : date; break;
	   case "W": str += ppcWN[day]; break;
	    default: str += crt;}}
	 return unescape(str);
	 
  }catch(err){
    trataErro(err);
  }
}
