// dient zum Laden/Speichern von Daten im JSON-Format
dojo.declare("Ajax.JSON", null, {
   constructor: function(s, c, p) {
      this.source = s;
      this.callback = c;
      this.params = p;
      this.deferred;
      this.jsonobj;
   },
   load: function () {
      var jsonobj;
      var status;
      var xhrArgs = {
         url: "/perl/ajax/json.pl?todo="+this.source,
         handleAs: "json",
         content: this.params,
         preventCache : true,
         sync: true
      };
      
      this.deferred = dojo.xhrGet(xhrArgs);
      
      this.deferred.addCallback(check_status);
      
      this.deferred.addCallback(this.callback);
   },
   save: function () {
      var jsonobj;
      var status;
      var xhrArgs = {
         url: "/perl/ajax/json.pl?todo="+this.source,
         handleAs: "json",
         content: this.params,
         preventCache : true,
         sync: true
      };
      
      this.deferred = dojo.xhrGet(xhrArgs);
      
      this.deferred.addCallback(check_status);
      
      this.deferred.addCallback(this.callback);
   }
});

function country(id) {
   Ajax.Loader.select_box_show('city_pk');
   Ajax.Loader.select_box_show('region_pk');
   
   var country_pk = dojo.byId(id).value;
   
   if ( country_pk > 0 ) {
      if ( dojo.byId('country_additional_data') ) {
         dojo.byId('country_additional_data').style.display = 'block';
      }
      
      function fill_dropdown_city(jsonobj) {
	      form.dropdown.fill( 'city_pk', jsonobj);
		   Ajax.Loader.select_box_hide('city_pk');
		}
		
		function fill_dropdown_region(jsonobj) {
	      form.dropdown.fill( 'region_pk', jsonobj);
		   Ajax.Loader.select_box_hide('region_pk');
		}
      
      new Ajax.JSON('city', fill_dropdown_city, { 'country_pk': country_pk  } ).load();
      new Ajax.JSON('region', fill_dropdown_region, { 'country_pk': country_pk  } ).load();      
   }
   else {
      form.dropdown.init('city_pk', resourceLocalization.dropdown_choose_country);
      form.dropdown.init('region_pk', resourceLocalization.dropdown_choose_country);
      
      if ( dojo.byId('country_additional_data') ) {
         dojo.byId('country_additional_data').style.display = 'none';
      }
   }
}

function po_box_country(id) {
   Ajax.Loader.select_box_show('po_box_city_pk');
   Ajax.Loader.select_box_show('po_box_region_pk');
   
   var country_pk = dojo.byId(id).value;
   
   if ( country_pk > 0 ) {
      if ( dojo.byId('po_box_country_additional_data') ) {
         dojo.byId('po_box_country_additional_data').style.display = 'block';
      }
      
	   function fill_dropdown_city(jsonobj) {
		   form.dropdown.fill( 'po_box_city_pk', jsonobj);
		   Ajax.Loader.select_box_hide('po_box_city_pk');
		}
		
		function fill_dropdown_region(jsonobj) {
		   form.dropdown.fill( 'po_box_region_pk', jsonobj);
		   Ajax.Loader.select_box_hide('po_box_region_pk');
		}
	   
	   var country_pk = dojo.byId(id).value;
	   
	   new Ajax.JSON('city', fill_dropdown_city, { 'country_pk': country_pk  } ).load();   
	   new Ajax.JSON('region', fill_dropdown_region, { 'country_pk': country_pk  } ).load();
   }
   else {
      form.dropdown.init('po_box_city_pk', resourceLocalization.dropdown_choose_country);
      form.dropdown.init('po_box_region_pk', resourceLocalization.dropdown_choose_country);
      
      if ( dojo.byId('po_box_country_additional_data') ) {
         dojo.byId('po_box_country_additional_data').style.display = 'none';
      }
   }
}

function person_country(id) {
   Ajax.Loader.select_box_show('person_city_pk');
   Ajax.Loader.select_box_show('person_region_pk');
   
   var country_pk = dojo.byId(id).value;
   
   if ( country_pk > 0 ) {
      if ( dojo.byId('person_country_additional_data') ) {
         dojo.byId('person_country_additional_data').style.display = 'block';
      }
      
	   function fill_dropdown_city(jsonobj) {
	      form.dropdown.fill( 'person_city_pk', jsonobj);
	      Ajax.Loader.select_box_hide('person_city_pk');
	   }
	   
	   function fill_dropdown_region(jsonobj) {
	      form.dropdown.fill( 'person_region_pk', jsonobj);
	      Ajax.Loader.select_box_hide('person_region_pk');
	   }
	   
	   var country_pk = dojo.byId(id).value;
	   
	   new Ajax.JSON('city', fill_dropdown_city, { 'country_pk': country_pk  } ).load();   
	   new Ajax.JSON('region', fill_dropdown_region, { 'country_pk': country_pk  } ).load();
   }
   else {
      form.dropdown.init('person_city_pk', resourceLocalization.dropdown_choose_country);
      form.dropdown.init('person_region_pk', resourceLocalization.dropdown_choose_country);
      
      if ( dojo.byId('person_country_additional_data') ) {
         dojo.byId('person_country_additional_data').style.display = 'none';
      }
   }
}

function load_company(company_pk) {
   if ( company_pk > 0 ) { 
      function fill_company(jsonobj) {
         for (i=0;i<jsonobj.count;i++) {
            var res = jsonobj.result[i];
            if ( dojo.byId('country_pk') ) {
               dojo.byId('country_pk').value = res['country_pk'];
               country('country_pk');
            }
            for (var f in res ) {
               if ( dojo.byId(f) ) {
                  dojo.byId(f).value = res[f];
               }
            }
	      }
	   }
      new Ajax.JSON('company', fill_company, { 'pk': company_pk  } ).load();
      sem.popup.hide();
   }
}

