/**
 * common.js
 * @update		21:59 2009/04/07
 */

var Kaas = {
	
	ver: '2.0.1.1',
	mainContents: 'col-a',
	
	init: function() {
		
		this.addEvent(window, 'load', function(e) {
			Kaas.addIEPrintStyle();
			Kaas.addFF2StyleSheet();
			Kaas.searchBox('search');
			Kaas.initRollovers();
			Kaas.createExternalLink();
			ImageAdjust.run();
		});
		
	},
	
	initRollovers: function() {
	
		var aPreLoad = new Array();
		var sTempSrc;
		var img = document.getElementsByTagName('img');
		
		for (var i = 0, l = img.length; i < l; i++) {
			if (this.hasClassName(img[i], 'imgover')) {
				var src = img[i].getAttribute('src');
				var ftype = src.substring(src.lastIndexOf('.'), src.length);
				var hsrc = src.replace(ftype, '_o' + ftype);
				
				img[i].setAttribute('hsrc', hsrc);
				
				aPreLoad[i] = new Image();
				aPreLoad[i].src = hsrc;
				
				img[i].onmouseover = function() {
					sTempSrc = this.getAttribute('src');
					this.setAttribute('src', this.getAttribute('hsrc'));
				};
				
				img[i].onmouseout = img[i].onclick = function() {
					if (!sTempSrc) sTempSrc = this.getAttribute('src').replace('_o' + ftype, ftype);
					this.setAttribute('src', sTempSrc);
				};
			}
		}
		
	},
	
	createExternalLink: function() {
	
		var externalLink = document.getElementsByTagName('a');
		
		for (var i = 0, l = externalLink.length; i < l; i++) {
			var a = externalLink[i];
			if (a.getAttribute('rel') == 'external') {
				if (a.title) a.title += ' : 新しいウィンドウで開きます';
				a.onclick = function() {
					window.open(this.getAttribute('href'), '_blank');
					return false;
				}
			}
		}
		
	},
	
	searchBox: function(id) {
		
		if (!this.$(id)) return;
		
		var s = this.$(id);
		(s.value == '')? this.addClass(s, 'google') : s.className = '';
		
		s.onblur = function() {
			if (this.value == '') Kaas.addClass(this, 'google');
		};
		
		s.onfocus = function() {
			if (this.value == '') s.className = '';
		};
		
	},
	
	addIEPrintStyle: function() {
		
		if (this.isIEVer('6.0') || this.isIEVer('7.0')){
			if (this.isOSVer('5.1')) this.loadStyleSheet('prints_ie_xp', 'print');
			else this.loadStyleSheet('prints_ie', 'print');
		}
		
	},
	
	addFF2StyleSheet: function() {
		
		if (this.isFF2()) this.loadStyleSheet('firefox2');
		
	},
	
	// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Utilities
	
	/**
	 * $
	 * @notes	shirtcut of "document.getElementById()"
	 * @return	{Object}
	 */
	$: function(eId) {
		if (document.getElementById(eId)) return document.getElementById(eId);
	},
	
	/**
	 * hasClassName
	 * @return {Boolean}
	 */
	hasClassName: function(element, _class) {
	
		var classes = element.className.split(' ');
		var i = classes.length;
		while(i--) {
			if (classes[i] == _class) {
				return true;
				break;
			}
		}
		
	},
	
	/**
	 * addClass
	 * @return	{Void}
	 */
	addClass: function(element, value){
		
		if (!element.className) element.className = value;
		else element.className += ' ' + value;
		
	},
	
	/**
	 * addElement
	 * @return	{Object}
	 */
	addElement: function(element, attr, parent) {
		
		var addElem = document.createElement(element);
		for (var i in attr) addElem.setAttribute(i, attr[i]);
		var _parent = (parent)? parent : document.body;
		return _parent.appendChild(addElem);
		
	},
	
	/**
	 * loadJavaScript
	 * @return	{HTMLScriptElement}
	 */
	loadJavaScript: function(filename) {
		
		var attr = {
			'type': 'text/javascript',
			'src': this.currentPath() + filename + '.js'
		};
		return this.addElement('script', attr, document.getElementsByTagName('head')[0]);
		
	},
	
	/**
	 * loadStyleSheet
	 * @return	{HTMLLinkElement}
	 */
	loadStyleSheet: function(filename, media) {
		
		var attr = {
			'rel': 'stylesheet',
			'type': 'text/css',
			'href': this.currentPath() + '../css/' + filename + '.css',
			'media': (media)? media : 'screen, print'
		};
		return this.addElement('link', attr, document.getElementsByTagName('head')[0]);
		
	},
	
	/**
	 * isIEVer
	 * @return	{Boolean}
	 */
	isIEVer: function(appVer) {
	
		var ver = navigator.appVersion;
		if (ver.indexOf('MSIE ' + appVer) > 0) return true;
		else return false;
		
	},
	
	/**
	 * isOSVer
	 * @return	{Boolean}
	 */
	isOSVer: function(appVer) {
	
		var ver = navigator.appVersion;
		if (ver.indexOf('NT ' + appVer) > 0) return true;
		else return false;
		
	},
	
	/**
	 * isFF2
	 * @return	{Boolean}
	 */
	isFF2: function() {
	
		var ua = navigator.userAgent.toLowerCase();
		if (ua.indexOf('firefox/2') != -1) return true;
		else return false;
		
	},
	
	/**
	 * currentPath
	 * @return	{String}
	 */
	currentPath: function() {
		
		var s = document.getElementsByTagName('script');
		for (var i = 0, l = s.length; i < l; i++) {
			if (s[i].src && s[i].src.match(/common\.js(\?.*)?$/)) {
				return s[i].src.replace(/common\.js(\?.*)?$/, '');
				break;
			}
		}
		
	},
	
	/**
	 * addEvent
	 * @return	{Void}
	 */
	addEvent: function(elm, listener, fn) {
		
		try {
			elm.addEventListener(listener, fn, false);
		} catch(e) {
			elm.attachEvent('on' + listener, fn);
		}
		
	},
	
	/**
	 * isVersion
	 * @return	{Boolean}
	 */
	isVersion: function(v) {
		
		return v === parseInt(this.ver.substring(0, 1));
		
	},
	
	toString: function() {
		
		return '[object Kaas]';
		
	}

};

Kaas.init();


/**********************************************************************************
**	画像縮小
*/

var item_list;
var timer;
var all_count = 200;
var target_id = 'contents';
var max_size = 485;

var ImageAdjust = {
	run: function(){
		if (elem(target_id)){
			item_list = elem(target_id).getElementsByTagName('img');
			if (item_list.length > 0) timer = setInterval(this.run_change, 100);
		}
	},
	run_change: function(){
		var temp_next = Array();
		if ((item_list.length > 0)&&(all_count > 0)){
			for(i=0; i<item_list.length; i++){
				if (item_list[i].width){
					if (item_list[i].width > max_size){
						if (!item_list[i].getAttribute('useMap')){
							item_list[i].style.width = max_size + 'px';
							item_list[i].style.height = 'auto';
						}
					}
				} else temp_next.push(item_list[i]);
			}
			item_list = temp_next;
			all_count--;
		} else {
			clearInterval(timer);
			timer = false;
		}
	}
}


var elem = function(elem_name){
	if (document.getElementById(elem_name)) return document.getElementById(elem_name);
	return false;
}

/**********************************************************************************
**	画像縮小
*/

