var defaultValues = {};
var maxValues = {};
var notZero   = {};
var errImage = new Image;
var field2label = {};

var myToday;

function my_init() {
    if (jQuery('#bkform').length == 0) return;
     updateQRForm();

   errImage.src = '/booking/img/input_text_bg_red.jpg';
//  AddContent("NightsLabel2", sNights + ' <span>[max '+nNightMax+']</span>');
  jQuery('#NightsLabel2').html(sNights + ' <span>[max '+nNightMax+']</span>');
//  AddContent("AdultsLabel2", sAdults);
  jQuery('#AdultsLabel2').html(sAdults + ' <span>[max '+nAdultMax+']</span>');
//  AddContent("RoomLabel2", sRooms);
  jQuery('#RoomLabel2').html(sRooms + ' <span>[max '+nRoomMax+']</span>'); 
//  AddContent("ChildLabel2", sChild);
  jQuery('#ChildLabel2').html(sChild + ' <span>[max '+nChildMax+']</span>');

  AddContent("PromoLabel2", sPromo);
  AddContent("bkline1txt",sArrivalText);

  jQuery('#bkform div.input input').each ( function () { jQuery(this).bind('blur',function () { checkValue(this); }); });
  
  myToday = new Date();
  
  defaultValues['my_arrivalyear'] = myToday.getFullYear();
  defaultValues['my_arrivalmonth'] = parseInt(myToday.getMonth()+1);
  defaultValues['my_arrivalday'] = myToday.getDate();
  defaultValues['my_rooms'] = nRoomSel;
  defaultValues['my_night'] = nNightSel;
  defaultValues['my_children'] = nChildSel;
  defaultValues['my_adults'] = nAdultSel;

  maxValues['my_rooms'] = nRoomMax;
  maxValues['my_night'] = nNightMax;
  maxValues['my_children'] = nChildMax;
  maxValues['my_adults'] = nAdultMax;
  field2label['my_rooms'] = sRooms;
  field2label['my_night'] = sNights;
  field2label['my_children'] = sChild;
  field2label['my_adults'] = sAdults;
  notZero['my_rooms'] = 1;
  notZero['my_night'] = 1;
  notZero['my_adults'] = 1;

  for (var i in defaultValues) 
    jQuery('#'+i).val(defaultValues[i]);

  for (var i in maxValues) 
    jQuery('#'+i).bind('blur',function () { checkBlur(this); });

  jQuery('#bksend img').bind('mouseover', function () {this.src = '/booking/img/send_button_over.jpg'; });
  jQuery('#bksend img').bind('mouseout', function () {this.src = '/booking/img/send_button.jpg'; });
  jQuery('#bkform div.input').bind('click', function () { jQuery(this).children().focus(); });
  jQuery('#bkform div.input2').bind('click', function () { jQuery(this).children().focus(); });
  jQuery('#bksend img').bind('click', checkForm);
  /*       showOptions: {direction: 'up' }, */  
  jQuery("#datepicker").datepicker(
  {
      buttonImage: '/booking/img/calendar.jpg',
      buttonImageOnly: true,
      showOn: 'both',
      minDate: new Date(myToday.getFullYear(), myToday.getMonth(), myToday.getDate()),
      maxDate: new Date(myToday.getFullYear()+1,myToday.getMonth(),myToday.getDate()),
      changeMonth: true,
      changeYear: true,
      beforeShow: function (input,inst) {
	var mdate = jQuery('#my_arrivalmonth').val()+'/'+
	jQuery('#my_arrivalday').val()+'/'+
	jQuery('#my_arrivalyear').val();	
	jQuery('#datepicker').datepicker("setDate",mdate);
	//	jQuery('#bkcal').css('z-index',1000000000000);
	//	jQuery('#bkform img').css('z-index',0);
	//	jQuery('.ui-datepicker').css('z-index',100000);
      },
      onSelect: function(dateText, inst) { 
      var el = dateText.split('/'); 
	jQuery('#my_arrivalmonth').val(el[0]*1);	
	jQuery('#my_arrivalday').val(el[1]*1);
	jQuery('#my_arrivalyear').val(el[2]*1);	
					 }
      }
   );

// jQuery('#datepicker').css('visibility','hidden'); jQuery("#datepicker").focus(); });
}

function ddd() {
    //    alert('test');
    //    alert(jQuery("#bkform").html());
     alert(jQuery('.ui-datepicker').html());
}
function checkValue(o) {
  var v = jQuery(o).val();
  v = v.replace(/ /g,'');
  jQuery(o).val(v);
  if (v.match(/^[0-9]+$/)) {
      hideError(o);
      return true;
  }
  v = v.replace(/[^0-9]/g,'');
  highlightError(o);
  alert(sMsgOnlyNumbers);
  jQuery(o).val(defaultValues[jQuery(o).attr('id')]);
  setTimeout(hideErrors,1000);
  return false;
}

function checkForm() {
  for (var i in defaultValues) {
    if (checkValue(jQuery('#'+i)) == false) 
      return false;
  }

  var ret = checkArrivalDate();
  if (ret == false) return false;
  
  // check if nights is beyond the limit and not zero
  // check if rooms is beyond the limit and not zero
  // check if adults is beyond the limit and not zero
  // check if children is beyond the limit 
  for (var i in maxValues) {
    var v = jQuery('#'+i).val();
    if (v > maxValues[i]) {
	alert(field2label[i]+ ': max ' + maxValues[i]);
	highlightError(jQuery('#'+i));
	return false;
    }
  }
  
  for (var i in notZero) {
    var v = jQuery('#'+i).val();
    if (v == 0) {
      alert(field2label[i]+ ': ' + 'no zero');
      return false;
    }
  }
  

  // copy values
  // anno mancando il valore diventa nan e non funziona
  jQuery('#yearList').val(jQuery('#my_arrivalyear').val());
  jQuery('#mm').val(jQuery('#my_arrivalmonth').val());
  jQuery('#gg').val(jQuery('#my_arrivalday').val());
  jQuery('#notti_1').val(jQuery('#my_night').val());
  jQuery('#tot_camere').val(jQuery('#my_rooms').val());
  jQuery('#tot_adulti').val(jQuery('#my_adults').val());
  jQuery('#tot_bambini').val(jQuery('#my_children').val());
  jQuery('#sconto').val(jQuery('#my_promocode').val());  
  ret = frmcheck(qrForm);
  if (ret == true) {
    jQuery('#myForm').submit();
  }
}


function checkBlur(o) {
var id = jQuery(o).attr('id');
  var v = jQuery(o).val();
  if (v > maxValues[id]) {
      highlightError(o);
      alert(field2label[id]+ ': max ' + maxValues[id]);
      return false;  
  }
  if (typeof(notZero[id]) != "undefined") {
   if (v == 0) {
       highlightError(o);
      alert(field2label[id]+ ': ' + 'no zero');
      return false;
    }
  }
  hideError(o);
  return true;
}

function checkArrivalDate() {
  var dd = parseInt(jQuery('#my_arrivalday').val());
  var mm = parseInt(jQuery('#my_arrivalmonth').val());
  var yy = parseInt(jQuery('#my_arrivalyear').val());

  if (mm > 12) {
    alert (sMsgWrongDate);
    return false;
  }
  if (dd > 31) {
    alert (sMsgWrongDate);
    return false;
  }
  if (dd == 31) {
    switch (mm) {
      case 4:
      case 6:
      case 9:
      case 11:
	alert (sMsgWrongDate);
	return false;
	break;
      default:
	break;
    }
  }
  
  if (mm == 2 && dd > 29) {
    alert (sMsgWrongDate);
    return false;
  }

  if (mm == 2 && dd == 29) {
    if ( ((yy % 4 != 0)  ||  (yy % 100 == 0))  &&  
         (yy % 400 != 0 )
       ) {
	 alert (sMsgWrongDate);
	 return false;
       }
  }
  
  var arrival = Date.UTC(yy,mm-1,dd,0,0,0,0);
  
  // check if day in the past
  var oggi = Date.UTC(myToday.getFullYear(),myToday.getMonth(),myToday.getDate());
  if (arrival < oggi) {
    alert (sMsgOldDate);
    return false;
  }
  // check if day is beyond the limit [1 year]
  var domani = Date.UTC(myToday.getFullYear()+1,myToday.getMonth(),myToday.getDate());
  if (arrival > domani) {
    alert(sMsgFarDate);
    return false;
  }

}

function highlightError(o) {
  jQuery(o).parent().css('background-image','url(/booking/img/input_text_bg_red.jpg)');
}

function hideError(o) {
  jQuery(o).parent().css('background-image','url(/booking/img/input_text_bg.jpg)');
}

function hideErrors() {
    jQuery('div.input').each ( function () {
	    jQuery(this).css('background-image','url(/booking/img/input_text_bg.jpg)');
	});
}
