//*********************************************************************
//Class Model（データを保持し、リクエストされたデータを渡す）
//*********************************************************************


//-----------------------------------------------
//インスタンスプロパティ
//-----------------------------------------------
Model.prototype.data;
Model.prototype.areaList = new Array();

//-----------------------------------------------
//コンストラクタ
//-----------------------------------------------
function Model(d){
	this.data = d;
	this.processData();
}

//データを加工
Model.prototype.processData = function(){
	var areas = this.data.getElementsByTagName("area");

	for(var i = 0; i < areas.length; i++){
		var area = areas[i];
		var areaName = area.attributes[0].value;
		var areaId = area.attributes[1].value;
		var areaObject = new Area(areaName, areaId);
		var countries = area.getElementsByTagName("country");
		
		for(var j = 0; j < countries.length; j++){
			var country = countries[j];
			var countryCategory = country.attributes[0].value;
			var countryIp = country.attributes[1].value;
			var countryName = country.attributes[2].value;
			
			var countryObject = new Country(countryCategory, countryIp, countryName);
			
			var agencyList = country.getElementsByTagName("agency");
			var addressList = country.getElementsByTagName("address");
			var phoneList = country.getElementsByTagName("phone");
			var faxList = country.getElementsByTagName("fax");
			var telexList = country.getElementsByTagName("telex");
			var mailList = country.getElementsByTagName("mail");
			var contactList = country.getElementsByTagName("contact");
			var urlList = country.getElementsByTagName("url");	
			var vhfList = country.getElementsByTagName("vhf");
			var inmarsatList = country.getElementsByTagName("inmarsat");	
			
			this.setCountryElement(countryObject, agencyList, "agency");
			this.setCountryElement(countryObject, addressList, "address");
			this.setCountryElement(countryObject, phoneList, "phone");
			this.setCountryElement(countryObject, faxList, "fax");
			this.setCountryElement(countryObject, telexList, "telex");
			this.setCountryElement(countryObject, mailList, "mail");
			this.setCountryElement(countryObject, contactList, "contact");
			this.setCountryElement(countryObject, urlList, "url");
			this.setCountryElement(countryObject, vhfList, "vhf");
			this.setCountryElement(countryObject, inmarsatList, "inmarsat");
				
			areaObject.addCountry(countryObject);
		}
		
		this.areaList.push(areaObject);
	}
	
}

Model.prototype.setCountryElement = function(country, elements, type){
	for(var i = 0; i < elements.length; i++){
		
		if(!elements[i].childNodes[0]) return;
		var element = elements[i].childNodes[0].nodeValue;
		
		switch(type){
			case "agency":
			country.setAgency(element);
			break;
			case "address":
			country.setAddress(element);
			break;
			case "phone":
			country.setPhone(element);
			break;
			case "fax":
			country.setFax(element);
			break;
			case "telex":
			country.setTelex(element);
			break;
			case "mail":
			country.setMail(element);
			break;
			case "contact":
			country.setContact(element);
			break;
			case "url":
			country.setUrl(element);
			break;
			case "vhf":
			country.setVhf(element);
			break;
			case "inmarsat":
			country.setInmarsat(element);
			break;
		}
	}
}

//アクセサ Get
Model.prototype.getData = function(){
	return this.data;
}

Model.prototype.getAreaList = function(){
	return this.areaList;
}
