
// *********************************** Ajax request ***********************************

var DETAILVIEW="CalendarPicker";
var httpRequestDebug = false; // if problems occure while using this XML function, set this variable to 'true'. The functions will return error messages if they are 
var isIEBrowser = false;
var cpReq; //global variable which represents the XMLHttpRequest object

function setDateDefault(){
var today = new Date();
var year = String(today.getFullYear());
var month = String(today.getMonth()+1);
var monthzero;
if (month.length==1){
monthzero="0"+String(month);
}
else{
monthzero=month;
}
var sDate=year+monthzero;
return sDate;
}

function setDate(){
var sDate;
var key;
var objForm=document.Picker;
if (objForm){
var year= getFieldValue(objForm.year, "select");
var month=getFieldValue(objForm.month, "select");
sDate=year+month
return sDate;
}
}

function setCalendar() {
var url= dbpath+"/id/"+DETAILVIEW+"?open&l="+language+"&cpd="+setDate() + "&ccat=blog";
//var url= dbpath+"/id/"+DETAILVIEW+"?open&l="+language+"&cpd="+setDate();
cpInitAjax(url);
}

function loadCalendar(){

key=setDateDefault();
cat = "Blog";

var url= dbpath+"/id/"+DETAILVIEW+"?open&l="+language+"&cpd=" + key + "&ccat=" + cat;
//var url= dbpath+"/id/"+DETAILVIEW+"?open&l="+language+"&cpd="+key;
cpInitAjax(url);
}

function cpInitAjax(url) {
   if (window.XMLHttpRequest) {
        cpReq = new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        isIEBrowser = true;
        try {
          cpReq = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (othermicrosoft) {
          try {
            cpReq = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (failed) {
            cpReq = false;
          }
        }
    }
    if (!cpReq) {
         if(httpRequestDebug) alert("An error occured, your browser does not support XMLHttpRequest!");
    }
    else {
        cpReq.abort();
        cpReq.onreadystatechange = cpProcessReqChange;
        cpReq.open("GET", url, true); 
        cpReq.send(null);
    }
}

function cpProcessReqChange() {
if (cpReq.readyState == 1) {
cpRequestStatus("Loading calendar...");
}
if (cpReq.readyState == 2) {
cpRequestStatus("Loading calendar...");
}
if (cpReq.readyState == 3) {
cpRequestStatus("Loading calendar...");
}
if (cpReq.readyState == 4) {
if (cpReq.status == 200) {
cpShow();
}
else {
alert("There was a problem retrieving the data:\n" +cpReq.statusText);
}
}
}

function cpInit(){
var obj=document.getElementById("CalendarPicker");
if (obj){
return obj;
}
else{
return null;
}
}

function cpRequestStatus(statusText) {
var picker = document.getElementById("CalendarPicker");
var loader = document.getElementById("CalendarPickerLoading");
if(picker && loader){
picker.style.display = 'none';
loader.style.display = 'block';
}
}

function cpShow() {
var html=cpReq.responseText;
var picker = document.getElementById("CalendarPicker");
var loader = document.getElementById("CalendarPickerLoading");
if(picker && loader){
picker.style.display = 'block';
loader.style.display = 'none';
picker.innerHTML=html;
}
}



function getFieldValue ( theField, vType){
		 //this function will return the field value (or value list) based on the element type
		 theValue=""; 
		 sep=";"; 
		 hits=0;
		 vType=vType.toLowerCase();
		 //text is the user-entered value as a string
		 if(vType=="text" ) return(theField.value); 
		 //textarea is the user-entered value as a string array of one element
		 if(vType=="textarea" ) return(theField.value);
		 //select is an array of selection pointers to an array of strings representing the choices
		 if(vType=="select"){
		 		 for ( i=0; i<theField.options.length; i++){
		 		 		 if(theField.options[i].selected){
		 		 		 		 hits++;
		 		 		 		 if(theField.options[i].value==""){
		 		 		 		 		 e=theField.options[i].text;
		 		 		 		 }else{ 
		 		 		 		 		 e=theField.options[i].value;
		 		 		 		 }
		 		 		 		 if(hits==1){
		 		 		 		 		 theValue=e;
		 		 		 		 }else{
		 		 		 		 		 theValue+= sep+e;
		 		 		 		 }
		 		 		 }
		 		 }
		 		 return(theValue);
		 }
		 if(vType=="dropdown"){
		 		 if(theField.options[0].selected){
		 		 		 return("");
		 		 }
		 		 return("True");
		 }
		 // check Emailaddress
		 if(vType=="mail"){
		 		 var mail=theField.value;
		 		 if(mail==""){
		 		 		 return ("");
		 		 }else{
		 		 		 var erg =mail.search(/.+@..+\...+/);
		 		 		 if(erg==-1){
		 		 		 		 return ("");
		 		 		 }
		 		 		 var erg=mail.search(/\s/);
		 		 		 if(erg!=-1){
		 		 		 		 return ("");
		 		 		 }
		 		 }
		 		 return (mail);
		 }
		 //checkboxes & radio buttons
		 if(vType=="checkbox"||vType=="radiobutton"){
		 		 if(theField.value==null){
		 		 		 //if we're here, we are validating a radio button or a nn multi-element checkbox
		 		 		 for ( i=0; i<theField.length; i++){
		 		 		 		 if(theField[i].checked){
		 		 		 		 		 hits++;
		 		 		 		 		 if(hits==1){
		 		 		 		 		 		 theValue=theField[i].value;
		 		 		 		 		 }else{
		 		 		 		 		 		 theValue+= sep+theField[i].value;
		 		 		 		 		 }
		 		 		 		 } 
		 		 		 }
		 		 } 
		 		 return(theValue);
		 }else{
		 		 return(theField.value);
		 }
};
