// Calendar Config
function CalendarConfigure() {
 this.settings = {
  lang: 'cz',                // nastaveni jazyka
  holiday: 'cr',            // nastaveni svatku 
  dateFormat: 'dd.mm.rrrr',  // format data  
  firstDayOfWeek: 1,          // nastaveni 1. dne v tydnu pondeli = 1
  dynamicPositionBox: true,    // povoleni inteligentniho otevirani kalendariku v ruznych smerech
  limitFrom: null,
  limitTo: null,
  effect: false      
 }; 
  
 this.setLang(this.settings['lang']);
 this.setHoliday(this.settings['holiday']);
}

/**
 * Funkce pro ziskavani atributu
 * get(nazev) 
 */  
CalendarConfigure.prototype.get = function(index) {
 // Tuto upravu musime provest v get protoze se muze zmenit i sablona a my musime pouzit tu spravnou
 if((index == 'limitFrom' || index == 'limitTo') && typeof(this.settings[index])=='string') {
  var tmpDate = new Date();
  tmpDate.parseByTemplate(this.settings[index],this.settings['dateFormat']);
  this.settings[index] = tmpDate;
 } 
 return this.settings[index];
}
/**
 * funkce pro nastaveni atributu, muzeme nastavovat jednotlive set('klic', 'hodnota') nebo
 * hromadne set({klic1: 'hodnota1', klic2: 'hodnota2'})
 * vraci true/false pri uspesnosti/selhani 
 */ 
CalendarConfigure.prototype.set = function() {   
 if(arguments.length == 2) {
  this.settings[arguments[0]] = arguments[1];
  if(arguments[0] == 'lang') {
    this.setLang(this.settings[arguments[0]]);
   }
   if(arguments[0] == 'holiday') {
    this.setHoliday(this.settings[arguments[0]]);
   }   
  return true;
 } else if(arguments.length == 1 && typeof arguments[0] == 'object' && arguments[0] != null) {  
  for(var index in arguments[0]) {
   this.set(index,arguments[0][index]);   
  } 
  return true;  
 } 
 return false;
}

/**
 * Vytvori kopii objektu
 */
CalendarConfigure.prototype.clone = function() {
 var calendarnewConf = new CalendarConfigure();
 calendarnewConf.set(this.settings);
 return calendarnewConf; 
}

/**
 * Nacte jazykovy modul
 */ 
CalendarConfigure.prototype.setLang = function(name) { 
 if(calendarTranslate[name]==null) {       
   calendarTranslate[name] = new Array();          
   $import('data/lang.'+name+'.js');   
 }  
}
/**
 * Nacte jazykovy modul
 */ 
CalendarConfigure.prototype.setHoliday = function(name) { 
 if(calendarHoliday[name]==null && name!=null) {
  calendarHoliday[name] = new Array();      
  $import('data/holiday.'+name+'.js');    
 }  
}

/**
 * Vraci prekladovou frazi 
 */ 
CalendarConfigure.prototype.getTrans = function(index) {
  if(calendarTranslate[this.settings['lang']]==null || calendarTranslate[this.settings['lang']].length==0) {   
   return '';
  }
  return calendarTranslate[this.settings['lang']][index];
}

/**
 * Vraci prekladovou frazi, problem nastava u prestupneho roku, proto kontrolujeme i rok
 */ 
CalendarConfigure.prototype.getHoliday = function(day,year) { 
  if(calendarHoliday[this.settings['holiday']]==null || calendarHoliday[this.settings['holiday']].length == 0) {   
   return ['',0];
  }
  if(day>59) {
    var d = new Date(year,2,1);
    if(d.getMonthLength()==28) {
     day += 1;
    }
  }
  return calendarHoliday[this.settings['holiday']][day-1];
}

/**
 * Vytvarime defaultni nastaveni vsech kaledaru, lze menit kdekoliv v kontextu HTML stranky
 */ 
var calendarDefaultConf = new CalendarConfigure();

