/**
 * kirei.js
 *
 * Date$:2010-12-20
 */


jsSetupPackage('com.m_kirei');
com.m_kirei.onDomReady = function(){
	
	/** whatsnew */
	var newTicker = new com.m_kirei.ticker();
	newTicker('whatsnew');
	
	/** breadnav conditioning */
	var breadnav = new com.m_kirei.breadnavConditioning();
	breadnav();
	
	/** swap image */
	var imgSwapObject = new jp.co.mutow.imgSwap();
	imgSwapObject('input');
	imgSwapObject('img');
	
	/** scroll */
	var scroller = new jp.co.mutow.scroller();
	
	/** featureFlash */
	com.m_kirei.featureFlash('feature-flash');

};


/**
 * breadnavConditioning (...as a last-ditch measure)
 */
com.m_kirei.breadnavConditioning = function(){
	var t = this;
	t.dir = {skin_care:['cleansing', 'facial_wash', 'skin_toner', 'lotion', 'liquid', 'pack', 'suntan_lotion', 'face_care'],base_make:['makeup_base','concealer','powder_foundation','liquid_foundation','cream_foundation','bbcream','face_powder'],eye_make:['eye_shadow','eyebrow','eyeliner','eyelash','mascara','eye_care','eyelash_liquid','double_eyelid'],make_up:['cheek','lip_make','mirror','nail_goods','perfume','accessories','trial-coffret'],hair_care:['shampoo','hair_conditioner','hair_styling','hair-coloring','hair_iron','hairbrush'],diet:['diet_goods','fitness_wear','fitness_dvd','diet_food','fitness-other'],hosei:['hosei_underwear','hosei_sandals','hosei_goods'],body_care:['hair_removal','deodorant','uv_protection','warm_goods','bath_goods','nubra','bust_up','foot_care','oral_care','delicate','bodysoap','handsoap','bodycream','bodycare-other'],aroma:['aroma_oil','aroma_lamp','aroma_candle'],health:['thermometer','condom'],private:['dvd','private_goods']};
	t. category = {skin_care:'スキンケア',base_make:'ベースメイク',eye_make:'アイメイク',make_up:'メイクアップ',hair_care:'ヘアケア',diet:'ダイエット・フィットネス',hosei:'補整下着・器具',body_care:'ボディケア',aroma:'アロマテラピー',health:'衛生用品',private:'プライベートグッズ'};
	return function(){
		return t.init.apply(t, arguments);
	}
};
com.m_kirei.breadnavConditioning .prototype = {
	init:function(){
		var loc = location.href;
		if( !loc.match(/.*\/product\/PD.*/) && !loc.match(/p[0-9]+.html/)) return;
		var breadnav = this.getBreadnav('contents');
		var len = breadnav.length;
		if(!len) return;
		var h = this.getSecondURL(breadnav[0]);
		if(!h) return;
		var cate = this.checkDir(h);
		if(!cate) return;
		var addnav = '<li><a href="/' + cate + '/">' + this.category[cate] + '</a></li>';
		for(var i = 0; i < len; i++){
			this.setBreadnav(breadnav[i], this.addDirBreadnav(breadnav[i], 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;
	},
	getSecondURL:function(elm){
		if(!elm) return false;
		var a = elm.getElementsByTagName('a');
		if(a.length <= 1) return false;
		var h = a[1].href;
		h = (h.match(/^http:\/\//)) ? (h.match(/^http:\/\/.+?\/.+?\/(.+?)\/.*$/)||[])[1] : (h.match(/^\/.+?\/(.+?)\/.*$/)||[])[1];
		if(!h) return false;
		return h;
	},
	getBreadnav:function(id){
		var area = document.getElementById(id);
		var tag = area.getElementsByTagName('div');
		var len = tag.length;
		var temp = [];
		for(var i = 0; i < len; i++){
			if(tag[i].className == 'breadnav'){
				temp.push(tag[i]);
			}
		}
		return temp;
	},
	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;
	}
};



/**
 * Tticker (vertial scroll)
 * @param {string} domID
 */
com.m_kirei.ticker = function(){
	var t = this;
	t.intervalTime = 5000;
	t.listHeight = 20;
	t.count = 0;
	t.pos = 0;
	return function(){
		return t.init.apply(t, arguments);
	}
};

com.m_kirei.ticker .prototype = {
	init:function(id){
		var t = this;
		if(!id) return false; 
		var elm = document.getElementById(id);
		if(!elm) return false; 
		var list = elm.getElementsByTagName('li');
		var len = list.length;
		if(!len) return false; 
		t.area = elm.getElementsByTagName('ul')[0];
		t.len = len + 1;
		
		t.area.onmouseover = function(){
			clearInterval(t.timer);
		}
		t.area.onmouseout = function(){
			t.timer = setInterval(t.tick, t.intervalTime, t);
		}
		t.area.innerHTML = t.getList(list, len);
		t.timer = setInterval(function(){t.tick(t)}, t.intervalTime);
		t.tick(t);
	},
	getList:function(list, len){
		var output = '';
		for(var i = 0; i < len; i++){
			output += '<li>'+list[i].innerHTML+'</li>';
		}
		output += '<li>'+list[0].innerHTML+'</li>';
		return output;
	},
	tick: function(t){
		t.count++;
		var key = (t.count%t.len);
		if(key == 0){
			t.count++;
			key = (t.count%t.len);
			t.area.style.marginTop = 0;
			t.pos = 0;
		}
		var endPos = key*-20;
		t.tween(t.area, t.pos, endPos, 20, 10);
		t.pos = endPos;
	},
	tween:function(elm, startPos, endPos, steps, intervals) {
		if (elm.tweeing) clearInterval(elm.tweeing);
		var t = this;
		var actStep = 0;
		elm.tweeing = setInterval(
			function() {
				elm.tgtPos = t.easeInOut(startPos, endPos, steps, actStep);
				elm.style.marginTop = elm.tgtPos+"px";
				actStep++;
				if (actStep > steps) clearInterval(elm.tweeing);
			}, intervals);
	},
	easeInOut:function(minValue, maxValue, totalSteps, actualStep) {
		var delta = maxValue - minValue;
		var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep), 0.5)*delta);
		return Math.ceil(stepp);
	}
};

/**
 * replace featureFlash.swf
 *
 * @require swfobject 2.x
 * @param {string} domID replace target ID
 * @return {boolean}
 */
com.m_kirei.featureFlash = 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 flashvars = {};
	var attributes ={};
	var params = {menu: "false"};
	for(var i = 0; i < len; i++){
		flashvars['img' + i] = list[i].getElementsByTagName('img')[0].getAttribute('src') +'?cacheKiller=' + new Date().getTime();
		flashvars['url' + i] = list[i].getElementsByTagName('a')[0].getAttribute('href');
	}
	swfobject.embedSWF("/images/top/featureBanner.swf", domID, "700", "262", "7", false, flashvars, params, attributes);
};


/** DomReady Event */
addEvent(window, 'domReady', com.m_kirei.onDomReady);


