/* フォントサイズ監視 */
function fontSizeDetector(func) { // #091002
	var lastFontSize = null;
	function detect() {
		var elmt = document.body;
		var currentFontSize = mizuyari.getFontSizeProperty(elmt);
		if (!!lastFontSize && lastFontSize != currentFontSize) {
			func();
		}
		// trace(currentFontSize);
		lastFontSize = currentFontSize;
	}
	setInterval(detect, 32);
};


/* 任意のクラスを指定されたブロックの高さを揃える */
function adjustElmtHeights(className) { // #091002
	var elmts = getElementsByClassName(className);
	var maxHeight = elmts[0].clientHeight;
	for (var i=0; i<elmts.length; i++) {
		if (elmts[i].clientHeight > maxHeight) maxHeight = elmts[i].clientHeight;
	}
	for (var i=0; i<elmts.length; i++) {
		elmts[i].style.minHeight = maxHeight + "px";
	}
}

/* 任意のクラスが指定されたブロックの高さを揃える */
function elementHeightsAdjusterByClass(className) {
	var elmts = getElementsByClassName(className);
	elementHeightsAdjuster(elmts);
}

/* 任意の複数エレメントたちのブロックの高さを揃える */
function elementHeightsAdjuster(elmts) { // #091002
	var maxHeight;
	for (var i=0; i<elmts.length; i++) {
		var elmt = elmts[i];
		var padding = [];
		padding["top"]    = mizuyari.getStyleProperty(elmt, 'paddingTop');
		padding["bottom"] = mizuyari.getStyleProperty(elmt, 'paddingBottom');
		// elmts[i].style.height = "auto";
		var currentHeight = elmt.scrollHeight - padding["top"] - padding["bottom"];
		if (i == 0) {
			maxHeight = currentHeight;
			continue;
		}
		if (currentHeight > maxHeight) maxHeight = currentHeight;
	}
	for (var i=0; i<elmts.length; i++) {
		elmts[i].style.height = maxHeight + "px";
	}
}

function loadContent(path) {
	var http = new JKL.ParseXML.Text(path + "content.html");
	var data = http.parse();

	if(!miz$("content-style")) {
		mizuyari.addCSS(path + 'styles/content.css',"content-style");
	} else {
		miz$("content-style").href = path + 'styles/content.css';
	}

	var headElmt = document.getElementsByTagName("HEAD")[0];
	if(miz$("content-script")) {
		headElmt.removeChild(miz$("content-script"));
	}
	if (path != "/") {
		var newJS = mizuyari.elementFactory("script",{
			type : "text/javascript",
			src  : path + "content.js",
			id : "content-script"
		})
		headElmt.appendChild(newJS);
	}
	miz$("content-area").innerHTML = data;
}

/* フォームコントロールの共通イベントを指定 */
function setFormControlEvents() {
	applyEmptyClassEvent('INPUT');
	applyEmptyClassEvent('TEXTAREA');

	function applyEmptyClassEvent(tagName) {
		var elmts = document.getElementsByTagName(tagName);
		for (var i=0; i<elmts.length; i++) {
			var tempElmt = elmts[i];
					
			// input要素の場合は type="text" のみを評価
			if (tempElmt.tagName == "INPUT" && tempElmt.type != "text") continue;
			
			if (tempElmt.value != "") {
				mizuyari.removeClass(tempElmt.parentNode, "empty");
			} else {
				mizuyari.addClass(tempElmt.parentNode, "empty");
			}
			
			mizuyari.addEvent(tempElmt,"change",function(){
				if (this.value != "") {
					mizuyari.removeClass(this.parentNode, "empty");
				} else {
					mizuyari.addClass(this.parentNode, "empty");
				}
			});
			mizuyari.addEvent(tempElmt,"focus",function(){
				if (mizuyari.ua.isWinIE60 || mizuyari.ua.isWinIE70) {
					mizuyari.addClass(this, "focus");
				}
				var errorElmt = (document.getElementsByClassName) ? this.parentNode.getElementsByClassName('error') : 
					getElementsByClassName('error','*', this.parentNode);
				if (errorElmt[0]) {
					mizuyari.removeClass(this.parentNode, "error");
					this.parentNode.removeChild(errorElmt[0]);
				}
			});
			mizuyari.addEvent(tempElmt,"blur",function(){
				if (mizuyari.ua.isWinIE60 || mizuyari.ua.isWinIE70) {
					mizuyari.removeClass(this, "focus");
				}
			});

		}
	}

}

/* Home の Staff 内マージン調整 */
function setStaffListMargin() {
	var staffListElmt = miz$("staff").getElementsByTagName('UL')[0];
	var staffListItems = staffListElmt.getElementsByTagName('LI');

	var staffListWidth = 445;
	var totalItemsWidth = 0;

	for (var i=0; i<3; i++) {
		totalItemsWidth += staffListItems[i].clientWidth;
	}
	var itemMargin = Math.floor((staffListWidth - totalItemsWidth) / 2);
	for (var i=0; i<2; i++) {
		staffListItems[i].style.marginRight = itemMargin + 'px';
	}
}

function displayPrivacyPolicy(status) {
		var bodyElmt = document.getElementsByTagName("BODY")[0];
		var privacyPolicyElmt = miz$("contact-privacypolicy");
		if (status == 1) {
			mizuyari.addClass(bodyElmt, "overlay-enabled");
			mizuyari.addClass(privacyPolicyElmt, "active");
		} else {
			mizuyari.removeClass(bodyElmt, "overlay-enabled");
			mizuyari.removeClass(privacyPolicyElmt, "active");
		}
}

// Projects 表示切替イベント
function setProductsViewModeButtonEvents() {
	var mode = 'thumbnail';
	mizuyari.addEvent(miz$('view-thumbnail'),"click",function(){
		setProductsViewMode('thumbnail');
	});
	mizuyari.addEvent(miz$('view-thumbnail'),"mouseover",function(){
		this.style.cursor = 'pointer';
	});

	mizuyari.addEvent(miz$('view-list'),"click",function(){
		setProductsViewMode('list');
	});
	mizuyari.addEvent(miz$('view-list'),"mouseover",function(){
		this.style.cursor = 'pointer';
	});
	if (getCookie('__projects_viewmode') == 'thumbnail' || getCookie('__projects_viewmode') == 'list') {
		mode = getCookie('__projects_viewmode');
	}
	setProductsViewMode(mode);
}

function setProductsViewMode(mode) {
	if (mode != 'thumbnail' && mode != 'list') return;
	if (mode == 'thumbnail') {
		mizuyari.replaceClass(miz$('projects-list'), 'projects-list', 'projects-thumbnail');
		miz$('view-thumbnail').getElementsByTagName('IMG')[0].src = '/projects/images/function-btn-view-thumb_s.png';
		miz$('view-list').getElementsByTagName('IMG')[0].src = '/projects/images/function-btn-view-list.png';
		setCookie("__projects_viewmode",mode,location.host,"/");
	} else if (mode == 'list') {
		mizuyari.replaceClass(miz$('projects-list'), 'projects-thumbnail', 'projects-list');
		miz$('view-thumbnail').getElementsByTagName('IMG')[0].src = '/projects/images/function-btn-view-thumbnail.png';
		miz$('view-list').getElementsByTagName('IMG')[0].src = '/projects/images/function-btn-view-list_s.png';
		setCookie("__projects_viewmode",mode,location.host,"/");
	}
}

var mizMouseScrollTimer;
function mizMouseScrollInit() { // mizMouseScrollInit #090312
    if (mizuyari.ua.isWinIE) {
        mizuyari.addEvent(document, "mousewheel", wheel);
    } else if (mizuyari.ua.isSafari) {
        mizuyari.addEvent(window, "mousewheel", wheel);
    } else {
        mizuyari.addEvent(window, "DOMMouseScroll", wheel);    
    }
}

function mizMouseScroll(posTo) { // mizMouseScroll #090319
    var frms = 4;
    if (mizMouseScrollTimer) clearTimeout(mizMouseScrollTimer);
    var posBy = Math.floor((posTo - getPageYOffset()) / frms);
    if (Math.abs(posBy) > 0) {
        window.scrollBy(0,posBy);
        mizMouseScrollTimer = setTimeout("mizMouseScroll("+posTo+")",16);
    }
}

function mizMouseScrollApp(adj) { // mizMouseScrollApp #090319
    var posTo = getPageYOffset() + Math.floor(getWindowInnerHeight()/2) * adj;
    if (posTo < 0) {
        posTo = 0;
    } else if (posTo >= getWindowScrollMaxY()) {
        posTo = getWindowScrollMaxY();
    }
    mizMouseScroll(posTo);
}

function handle(delta) { // handle #090311
   if (delta < 0) {
        // trace("down:" + delta);
        mizMouseScrollApp(1);
   } else {
        // trace("up:" + delta);
        mizMouseScrollApp(-1);
   }
}

function wheel(event){ // wheel #090311
   var delta = 0;
   if (!event) /* For IE. */
       event = window.event;
   if (event.wheelDelta) { /* IE/Opera. */
       delta = event.wheelDelta/120;
       if (window.opera) delta = -delta;
   } else if (event.detail) { /** Mozilla case. */
       delta = -event.detail/3;
   }
	 if (delta) handle(delta);
	 if (event.preventDefault) event.preventDefault();
   event.returnValue = false;
}


/*
mizuyari.addEvent(window,"load",function(){
// mizuyari.addOnLoadEvent(function(){
	setTimeout(function(){
		var elmt = miz$('content-area');
		mizuyari.addClass(elmt,'loaded');
	},100);	
});
if (!mizuyari.ua.isWinIE) {
	document.write('<link rel="stylesheet" href="/shared/styles/loading.css" type="text/css" media="screen,print" />');
}
*/

if (!mizuyari.ua.isWinIE60) {
	mizuyari.addOnLoadEvent(setFormControlEvents);
	mizuyari.addOnLoadEvent(mizMouseScrollInit);
}