  
  var CAL = YAHOO.widget.Calendar;
  
  function type_date(_obj, _opt){
    
    var _me = this;
    
    function handleSelect(type,args,obj) {

  		var dates = args[0]; 
  		var date = dates[0];
  		var year = date[0], month = date[1], day = date[2];
  		
  		document.getElementById(_opt.element).value = year + "-" + _me.format_number(month) + "-" + _me.format_number(day);
  		
      this.hide();
  		
  	}
  
    var _target = document.getElementById(_opt.target);
  
    if(typeof this._cal == 'object'){
      this._cal.hide();
    }
    
    this._cal = new this.CAL('',_target, {mindate:_opt.min_date, maxdate:_opt.max_date});
    this._cal.selectEvent.subscribe(handleSelect, this._cal, true);
    
    this._cal.cfg.setProperty("title","Escolha uma data");
    this._cal.cfg.setProperty("close",true);
    
    this._cal.cfg.setProperty("MONTHS_SHORT",   ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Dez"]);
    this._cal.cfg.setProperty("MONTHS_LONG",    ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]);
    this._cal.cfg.setProperty("WEEKDAYS_1CHAR", ["D", "S", "T", "Q", "Q", "S", "S"]);
    this._cal.cfg.setProperty("WEEKDAYS_SHORT", ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sá"]);
    this._cal.cfg.setProperty("WEEKDAYS_MEDIUM",["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"]);
    this._cal.cfg.setProperty("WEEKDAYS_LONG",  ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]);
    
    this._cal.render();
  
    
    this._cal.show();
  
  }
  
  function format_number(num){
      
    var displayNumber = num;
    
    if (displayNumber <= 9)
    displayNumber = "0" + displayNumber;
    
    return displayNumber;
    
  }
  
  function __xgetXmlHttpRequest() {
    if (window.XMLHttpRequest) {
      return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
      return new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  
  function cms_verify_form_data (xform, SessionName, return_func) {

    var post_data = 'QUERY=FORMVALIDATION&DADOS='+SessionName;
    var objs = new Array();
    
    for (i = 0; i < xform.length; i++) {
      var sid = xform[i].id;
      if (sid.length == 0) {
        sid = xform[i].name;
      }
      
      objs[sid] = xform[i];
      
      try {
        var c = xform[i].value;
        var cm = c.length;
        post_data += '&' + sid + '=' + url_encode(xform[i].value);
      } catch (err) {
      }
    }
    
    
    
    var url ='datafuncs.php';
    var _form_cmsajaxhttp = __xgetXmlHttpRequest();
    _form_cmsajaxhttp.open('POST', url+'?'+post_data, true);
    _form_cmsajaxhttp.onreadystatechange = function(){
    
      if (_form_cmsajaxhttp.readyState==4) {
      
        var resultado = _form_cmsajaxhttp.responseText;
        var linha = new Array();
        linha = resultado.split('|<ROW>|');
        
        if (linha[1] == 'OK') {

          xform.submit();
          return true;

        } else {
        
          for (i=1;i<linha.length-1;i++){
            var campo = new Array();
            campo = linha[i].split('|<FIELD>|');
            alert(campo[1]);

            if (return_func)
              return_func(objs[campo[0]]);

            try {
              objs[campo[0]].focus();
            } catch (err) {
            }
          }
          
        }
      }

    }
    
    _form_cmsajaxhttp.send(null);
    return false;

  }
