/**
 * @version  1.00
 * @updated  2008/03/27
 */



CaseModels = {
	init: function () {
		this.data = {};
		this.load();
	},



	load: function () {
		jQuery.ajax({
			url     : '/data/shared/xml/case_models.xml',
			type    : 'GET',
			dataType: 'xml',
			cache   : false,
			success : function (xml) {
				data = CaseModels.toArray(xml.lastChild);
				
				if(jQuery('#rt-top-models').get(0)) CaseModels.index(data);
				if(jQuery('#rt-rightnavi-models').get(0)) CaseModels.nav(data);
				if(jQuery('#list-models').get(0)) CaseModels.list(data);
				if(jQuery('dl#catalog-models').get(0)) CaseModels.catalog(data);
			}
		});
	},

	
	toArray: function (node, self) {
		var r    = {};
		var self = self || this.toArray;
		for (var attr, i = 0; attr = node.attributes[i]; i++)
			r[attr.name] = node.getAttribute(attr.name);
		
		var tags = [];
		jQuery(node).children().each(function () {
			if (!r[this.nodeName])
				r[this.nodeName] = [], tags.push(this.nodeName);
			
			var data = { text: jQuery(this).text() };
			for (var attr, i = 0; attr = this.attributes[i]; i++)
				data[attr.name] = this.getAttribute(attr.name);
			
			r[this.nodeName].push(jQuery(this).children().size() ? self(this, self) : data);
		});
		
		for (var tag, i = 0; tag = tags[i]; i++) {
			if (r[tag].length == 1) {
				for (var key in r[tag][0])
					r[tag][key] = r[tag][0][key];
			}
		}
		
		return r;
	},
		
	
	
	index: function (data) {
		var keys = jQuery('#rt-top-models').html();
		var key  = (keys != 'all') ? keys.split(',') : 'all';
		var html = [];
		
		if (key != 'all') {
			for (i=0; i<key.length; i++) {
				jQuery(data.model).each(function () {
					if (key[i] == this.id.text) {
						html.push('<div class="model-link" id="im_' + this.id.text + '">');
						html.push('<em><a href="' + this.link.text + '">' + this.label.text + '</a></em>');
						html.push('<p>' + this.head.text + '</p>');
						html.push('</div>');
					}
				});
			}
		} else {
			jQuery(data.model).each(function () {
				html.push('<div class="model-link" id="im_' + this.id.text + '">');
				html.push('<em><a href="' + this.link.text + '">' + this.label.text + '</a></em>');
				html.push('<p>' + this.head.text + '</p>');
				html.push('</div>');
			});		
		}
		
		jQuery('#rt-top-models').html(html.join(''));
		
		func_models();
		jQuery('#rt-top-models').css({'visibility':'visible'});
	},
	

	
	nav: function (data) {
		var keys = jQuery('#rt-rightnavi-models').html();
		var key  = (keys != 'all') ? keys.split(',') : 'all';
		var html = [];
		
		
		html.push('<h3>おすすめのモデルケース</h3>');
		if (key != 'all') {
			for (i=0; i<key.length; i++) {
				jQuery(data.model).each(function () {
					if (key[i] == this.id.text) {
						html.push('<div class="link" id="nm_' + this.id.text + '">');
						html.push('<h4><a href="' + this.link.text + '">' + this.label.text + '</a></h4>');
						html.push('<p>' + this.head.text + '<a href="' + this.link.text + '">さらに詳しく</a></p>');
						html.push('</div>');
					}
				});
			}
		} else {
			jQuery(data.model).each(function () {
				html.push('<div class="link" id="nm_' + this.id.text + '">');
				html.push('<h4><a href="' + this.link.text + '">' + this.label.text + '</a></h4>');
				html.push('<p>' + this.head.text + '<a href="' + this.link.text + '">さらに詳しく</a></p>');
				html.push('</div>');
			});
		}
				
		jQuery('#rt-rightnavi-models').html(html.join(''));
		jQuery('#right-navi div.vis').css({'visibility':'visible'});
	},

	

	list: function(data) {
		var html = [];
			
		html.push('<div class="pack col">');
		jQuery(data.model).each(function (n) {
			html.push('<div' + ((n % 2) ? ' class="right"' : ' class="left"') + 'id="lm_' + this.id.text + '">');
			html.push('<h3><a href="' + this.link.text + '">' + this.label.text + '</a></h3>');
			html.push('<p class="s">' + this.description.text + '<span class="link"><a href="' + this.link.text + '">さらに詳しく</a></span></p>');
			html.push('</div>');
			if (n % 2) html.push('<div class="hr"></div>');
		});
		html.push('</div>');
		
		jQuery('#list-models').html(html.join(''));
		
		var elm_n = jQuery(data.model).length;
		var hr_n = jQuery('#list-models .hr').length;

		jQuery('#list-models .hr').get(hr_n-1).style.display = 'none';
		if (elm_n % 2) jQuery('#list-models .hr').get(hr_n-1).style.display = '';
	},
	
	
	catalog: function(data) {
		var html = [];
		
		html.push('<dt>モデルケース一覧</dt>');
		jQuery(data.model).each(function () {
			html.push('<dd><a href="' + this.link.text + '">' + this.label.text + '</a></dd>');		
		});
		
		jQuery('dl#catalog-models').html(html.join(''));
	}
}