/**
 * zacca.js
 *
 * Date$:2010-2-15
 */

jsSetupPackage('com.seikatsuzacca');
com.seikatsuzacca.onDomReady = function(){
	
	/** scrolldisplay */
	var scrolldisplay = new com.seikatsuzacca.scrolldisplay();
	scrolldisplay("scrolldisplay");
	
	/** navigationCurrent */
	var navigationCurrent = new com.seikatsuzacca.navigationCurrent();
	navigationCurrent("navigation");
	if(!document.getElementById('sitemap')) navigationCurrent("contents", 'filter');
	
	/** breadnav conditioning */
	var breadnavConditioning = new com.seikatsuzacca.breadnavConditioning();
	breadnavConditioning();

	/** trimHeight */
	var trimDivHeight = new jp.co.mutow.trimHeight();
	trimDivHeight('coordinate-list', 4);
	trimDivHeight('feature-list', 4);
	trimDivHeight('hot-items', 4);
	trimDivHeight('pickup-funiture', 5, 'li', 'item_cell');
	trimDivHeight('pickup-goods', 5, 'li', 'item_cell');
	trimDivHeight('pickup-singlelife', 5, 'li', 'item_cell');
	
	/** swap image */
	var imgSwapObject = new jp.co.mutow.imgSwap();
	imgSwapObject('img');
	imgSwapObject('input');
	
	/** pagetop navigation */
	var scroller = new jp.co.mutow.scroller();

};

/**
 * breadnavConditioning (...as a last-ditch measure)
 */
com.seikatsuzacca.breadnavConditioning = function(){
	var t = this;
	t.dir = {interior_furniture:['tvstand', 'sofa', 'chair', 'pcdesk', 'table', 'dresser', 'partition', 'kotatu'],storage:['collection', 'rack', 'chest', 'closethanger', 'hanger', 'hekimen', 'entrance', 'cupboard', 'kitchen'],bed_bedclothes:['haru_bed', 'covering', 'futon'],interior_fabric:['curtain', 'rug', 'cover'],tableware_kitchen:['kitchen-syunou', 'cooking', 'kitchen-zacca', 'dustbox'],bath_sanitary:['toilet', 'bath',  'monohosi'],interior_goods:['green', 'goods', 'electronics', 'fashion']};
	t. category = {interior_furniture:'インテリア家具',storage:'収納',bed_bedclothes:'ベッド・寝具',interior_fabric:'カーテン・ラグ・カバー',tableware_kitchen:'キッチン',bath_sanitary:'バス・トイレ・サニタリー',interior_goods:'インテリア雑貨'};
	return function(){
		return t.init.apply(t, arguments);
	}
};

com.seikatsuzacca.breadnavConditioning .prototype = {
	init:function(){
		var loc = location.href;
		var pd = loc.match(/.*\/product\/PD.*/);
		var bn = loc.match(/p[0-9]+.html/);
		if(pd){
			this.conditioningPD();
		}else if(bn){
			this.conditioningBN((loc.match(/^http:\/\/.+?\/(.*?)\/.*?$/)||[])[1]);
		}
	},
	conditioningPD:function(){
		var topnav = this.getBreadnav('contents');
		var btmnav = this.getBreadnav('content-btm');
		var a = topnav.getElementsByTagName('a');
		if(a.length == 0) return;
		var h = a[1].href;
		h = (h.match(/^http:\/\//)) ? (h.match(/^http:\/\/.+?\/(.+?)\/.*$/)||[])[1] :  (h.match(/^\/(.+?)\/.*$/)||[])[1];
		var cate = this.checkDir(h);
		if(!cate) return;
		var addnav = '<li><a href="/kensaku/' + cate + '.html">' + this.category[cate] + '</a></li>'
		var newtopnav =  this.addDirBreadnav(topnav, addnav);
		var pdTitle = this.getPDTitle();
		var newbtnnav = newtopnav.replace(/<\/ul>/, '<li>' + pdTitle + '</li></ul>');
		this.setBreadnav(topnav, newtopnav);
		this.setBreadnav(btmnav,newbtnnav);
	},
	conditioningBN:function(dirName){
		var cate = this.checkDir(dirName);
		if(!cate) return;
		var addnav = '<li><a href="/kensaku/' + cate + '.html">' + this.category[cate] + '</a></li>'
		var topnav = this.getBreadnav('contents');
		var btmnav = this.getBreadnav('content-btm');
		this.setBreadnav(topnav, this.addDirBreadnav(topnav, addnav));
		this.setBreadnav(btmnav, this.addDirBreadnav(btmnav, addnav));
	},
	checkDir:function(dirName){
		var d = this.dir;
		for(var i in d){
			for(var p in d[i]){
				if(d[i][p] == dirName) return i;
			}
		}
		return false;
	},
	getBreadnav:function(domID){
		var area = document.getElementById(domID);
		var tag = area.getElementsByTagName('div');
		var len = tag.length;
		for(var i = 0; i < len; i++){
			if(tag[i].className == 'breadnav'){
				return tag[i];
			}
		}
	},
	addDirBreadnav:function(nav, addnav){
		var navstr = (Xua.msie) ? nav.innerHTML.replace('> <', '><') : nav.innerHTML;
		return navstr.replace(/トップページ<\/a><\/li>/i, function(matches){ return matches + addnav;});
	},
	setBreadnav:function(nav, replacenav){
		nav.innerHTML = replacenav;
	},
	getPDTitle:function(){
		var area = document.getElementById('heading');
		var tag = area.getElementsByTagName('h2');
		return tag[0].innerHTML;
	}
};


/**
 * navigationCurrent
 */
com.seikatsuzacca.navigationCurrent = function(){
	var t = this;
	t.chk = function(){
		var l = (location.href.match(/^http:\/\/.+?\/(.*)$/)||[])[1].split('/'),arr=[];
		for(var i = 0; i <l.length; i++){
			if(l[i] == "") continue;
			arr[i] = (i == 0) ? "/" + l[0] + "/" : (l[i].match(/.html/)) ? (l[i].match(/p[0-9]+.html/)) ? arr[i-1] + "p1.html" : arr[i-1] + l[i] : arr[i-1] + l[i] + "/";
		}
		return arr;
	}();
	return function(){
		return t.init.apply(t, arguments);
	}
};

com.seikatsuzacca.navigationCurrent .prototype = {
	init:function(id, divClass){
		var nav = document.getElementById(id);
		if(!nav || !this.chk) return false; 
		if(divClass != undefined){
			var divs = nav.getElementsByTagName('div');
			var len = divs.length;
			for(var i = 0; i < len; i++){
				if(divClass == divs[i].className){
					this.checkA(divs[i]);
				}
			}
		}else{
				this.checkA(nav);
		}
	},
	checkA:function(elm){
		var a = elm.getElementsByTagName('a');
		var len = a.length;
		var chk = this.chk;
		for(var i = 0; i < chk.length; i++){
			for(var j = 0; j < len; j++){
				if(this.checkHref(chk[i], a[j].getAttribute('href'))){
					a[j].className = 'current';
				}
			}
		}
	},
	checkHref:function(l, h){
		if(h == null) return false;
		if(h.match(/^http:\/\//)) h = "/" + (h.match(/^http:\/\/.+?\/(.*?)$/)||[])[1];
		return (l == h);
	}
};


/**
 * replace scrolldisplay swf
 *
 * @require swfobject 2.x
 * @param {string} domID replace target ID
 * @return {boolean}
 */
com.seikatsuzacca.scrolldisplay = function(){
	var t = this;
	t.cacheKiller = false;
	t.dispalySwf = "/images/display/scrolldisplay.swf";
	t.swfWidth = '700';
	t.swfHeight = '433';
	return function(){
		return t.init.apply(t, arguments);
	}
};

com.seikatsuzacca.scrolldisplay .prototype = {
	init:function(domID){
		var cont = document.getElementById(domID);
		if(!cont) return false;
		var list = cont.getElementsByTagName('li');
		var len = list.length;
		if(!len) return false;
		
		var cacheKiller = (this.cacheKiller) ? '?cacheKiller=' + new Date().getTime() : '';
		var isRandom = this.isRandom(cont);
		
		var flashvars = {};
		var attributes ={};
		var params = {menu: "false", wmode:"transparent"};
		for(var i = 0; i < len; i++){
			var img = list[i].getElementsByTagName('img')[0];
			var a = list[i].getElementsByTagName('a')[0];
			var isSwf = this.isSwf(img);
			var isTimer = this.isTimer(img);
			var src = img.getAttribute('src');
			var href = a.getAttribute('href');
			
			flashvars['displayFile_' + i] = (isSwf) ? src.replace(/^(.+)(\.[a-z]+)$/, "$1" + ".swf") + cacheKiller : src + cacheKiller;
			flashvars['bannerFile_' + i] = src.replace(/^(.+)(\.[a-z]+)$/, "$1-bnr$2") + cacheKiller;
			flashvars['linkURL_' + i] = (href.match(/#$/)) ? '' : href;
			flashvars['linkTarget_' + i ] = a.getAttribute('target');
			if(isTimer) flashvars['time_' + i ] = isTimer;
			
		}
		if(!isRandom) flashvars['random'] = isRandom;
		swfobject.embedSWF(this.dispalySwf, domID, this.swfWidth, this.swfHeight, "7", false, flashvars, params, attributes);
	},
	isRandom:function(cont){
		var classes = this.getClasses(cont);
		var len = classes.length;
		for(var i = 0; i < len; i++){
			if(classes[i] == 'norandom') return false;
		}
		return true;
	},
	isTimer:function(elm){
		var classes = this.getClasses(elm);
		var len = classes.length;
		for(var i = 0; i < len; i++){
			var pos = classes[i].indexOf('time');
			if(classes[i].indexOf('time') != -1){
				return classes[i].substring(4);
			}
		}
		return false;
	},
	isSwf:function(elm){
		var classes = this.getClasses(elm);
		var len = classes.length;
		for(var i = 0; i < len; i++){
			if(classes[i] == 'hasSwf') return true;
		}
		return false;
	},
	getClasses:function(elm){
		var attr = (Xua.msie && Xua.version<8) ? 'className' : 'class';	
		var classes = elm.getAttribute(attr);
		return (classes) ? (classes.match(/\s/)) ? classes.split(' ') : [classes] : [];
	}
};

/** DomReady Event */
addEvent(window, 'domReady', com.seikatsuzacca.onDomReady);

