﻿/**
 * moz_inline_box.js
 * for Firefox2
 * @version		0.5.0.0
 * @return		{Void}
 * @update		14:17 2009/03/25
 */

Kaas.addEvent(window, 'load', function() {
	
	if (Kaas.$('pickup')) { // for Top Page
		Kaas.mozInlineBox.ul('pickup', 'span');
	} else if (Kaas.hasClassName(document.getElementsByTagName('body')[0], 'shoplistIndex')) { // for Shop List Page
		Kaas.mozInlineBox.div('shop', 'col-a');
	}
	
});

Kaas.mozInlineBox = {
	
	/**
	 * display: -moz-inline-box;　を追加し、Box を二重にする
	 * @param		_class:String - ターゲットとなるコンテナのクラス名
	 * @param		_container:String - 走査する親要素のid
	 * <div id="_container"> // 走査する親要素
	 * 	<div class="_class"> // ターゲットとなるコンテナ
	 * 	...
	 * 	</div>
	 * 	.
	 * 	.
	 * 	.
	 * </div>
	 */
	div: function(_class, _container) {
		
		if (!Kaas.isFF2()) return;
		
		var container = (_container)? Kaas.$(_container) : document;
		var box = container.getElementsByTagName('div');
		var boxes = [];
		
		for (var i = 0, l = box.length; i < l; i++) {
			var b = box[i];
			if (Kaas.hasClassName(b, _class)) {
				Kaas.addClass(b, 'mozInlineBox');
				boxes.push(b);
				b.style.display = '-moz-inline-box';
			}
		}
		
		for (var j = 0, m = boxes.length; j < m; j++) {
			var c = boxes[j];
			var content = this.child(c);
			c.innerHTML = '';
			
			var div = c.appendChild(document.createElement('div'));
			
			for (var k = 0, n = content.length; k < n; k++) {
				div.appendChild(content[k]);
			}
		}
		
	},
	
	/**
	 * @param		_id:String - ulのid
	 * @param		addContainer:String - 値が'span'の場合、li直下をspan要素で内包する
	 * <ul id="_id">
	 * 	<li><a href="">...</a></li>
	 * 	.
	 * 	.
	 * 	.
	 * </ul>
	 */
	ul: function(_id, addContainer) {
		
		if (!Kaas.isFF2()) return;
		
		var box = Kaas.$(_id).getElementsByTagName('li');
		var boxes = [];
		
		for (var i = 0, l = box.length; i < l; i++) {
			var b = box[i];
			Kaas.addClass(b, 'mozInlineBox');
			boxes.push(b);
			b.style.display = '-moz-inline-box';
		}
		
		if (addContainer == 'span') {
			for (var j = 0, m = boxes.length; j < m; j++) {
				var c = boxes[j];
				var content = this.child(c);
				c.innerHTML = '';
				
				var span = c.appendChild(document.createElement('span'));
				
				for (var k = 0, n = content.length; k < n; k++) {
					span.appendChild(content[k]);
				}
			}
		}
		
	},
	
	/**
	 * childNodesを入れた配列を返す
	 * @param	parentObject:Object - 親要素
	 * @return	{Array}
	 */
	child: function(parentObject) {
		
		var _child = parentObject.childNodes;
		var arr = [];
		for (var i = 0, l = _child.length; i < l; i++) {
			// if (_child[i].nodeType == 1) { //#text, #commentを取り除く
				arr.push(_child[i]);
			// }
		}
		
		return arr;
		
	}
	
};

