﻿/**
 * common.js
 * @version		2.1.0.0 - 0:44 2009/02/01
 */

var Kaas = {
	
	ver: '2.1.0.0',
	mainColomn: 'col-a',
	
	init: function() {
		
		Kaas.loadJavaScript('../lib/easing/jquery.easing.1.3');
		Kaas.loadJavaScript('scroll');
		if (this.isIEVer('6')) Kaas.loadJavaScript('../lib/pngfix/jquery.pngfix');
		
		this.addEvent(window, 'load', function() {
			// if (Kaas.$(Kaas.mainColomn)) Kaas.stripeTable(Kaas.mainColomn);
			// Kaas.regInt('li', 3);
			Kaas.initRollovers();
			if (Kaas.$('container')) {
				Kaas.formAdjuster('container');
			}
			Kaas.createExternalLink();
		});
		
	},
	
	regInt: function(element, interval) {
		
		var e = document.getElementsByTagName('*');
		var t = document.getElementsByTagName(element);
		
		for (var i = 0, l = e.length; i < l; i++) {
			if (this.hasClassName(e[i], 'regInt')) {
				for (var j = 0, k = t.length; j < k; j++) {
					if (j % interval == interval - 1) this.addClass(t[j], 'regInt' + interval);
				}
			}
		}
		
	},
	
	even: function(element, container) {
		
		var t = (container)? this.$(container) : document;
		var e = t.getElementsByTagName(element);
		
		for (var i = 0, l = e.length; i < l; i++) {
			if (i % 2) this.addClass(e[i], 'even');
		}
		
	},
	
	stripeTable: function(container) {
		
		var t = (container)? this.$(container) : document;
		var tr = t.getElementsByTagName('tr');
		
		for (var i = 0, l = tr.length; i < l; i++) {
			if (i % 2) this.addClass(tr[i], 'rowTint');
		}
		
	},
	
	initRollovers: function() {
		
		var _opacity = .7;
		
		var imgs = document.getElementsByTagName('img');
		for (var i = 0, l = imgs.length; i < l; i++) setRollover(imgs[i]);
		
		if (this.$('submitSearch')) setRollover(this.$('submitSearch').getElementsByTagName('input')[0]);
		if (this.$('submitInqStudio')) setRollover(this.$('submitInqStudio'));
		
		
		function setRollover(t) {
			
			var getSrc = t.getAttribute('src');
			
			if (getSrc && getSrc.match(/_rollover\./)) {
			
				t.offSrc = getSrc;
				t.ext    = t.offSrc.substring(t.offSrc.lastIndexOf('.'), t.offSrc.length);
				t.onSrc  = t.offSrc.replace('_rollover' + t.ext, t.ext);
				
				var preload = new Array();
				preload[i] = new Image();
				preload[i].setAttribute('src', t.onSrc);
				
				t.onmouseover = function() {
					this.setAttribute('src', this.onSrc);
				};
				t.onmouseout = t.onclick = function() {
					this.setAttribute('src', this.offSrc);
				};
				
			} else if (getSrc && getSrc.match(/_alpha\./)) {
				
				t.onmouseover = function() {
					this.style.filter = 'alpha(opacity=' + (_opacity * 100) + ')';
					this.style.opacity = _opacity.toString();
					this.style.MozOpacity = _opacity.toString();
				};
				t.onmouseout = t.onclick = function() {
					this.setAttribute('style', '');
					this.removeAttribute('style');
				};
				
			}
		}
		
	},
	
	createExternalLink: function() {
		
		var t = (arguments[0] && typeof arguments[0] == 'string')? document.getElementById(arguments[0]) : document;
		var externalLink = t.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;
				}
			}
		}
		
	},
	
	formAdjuster: function() {
		
		var t = (arguments[0] && typeof arguments[0] == 'string')? document.getElementById(arguments[0]) : document;
		var inputs = t.getElementsByTagName('input');
		
		for (var i = 0, l = inputs.length; i < l; i++) {
			var input = inputs[i];
			if (input.getAttribute('type') == 'text' && input.size) {
				var inputSize = input.size;
				if (0 < inputSize && inputSize <= 5) this.addClass(input, 'level1 typeText');
				else if (inputSize <= 20) this.addClass(input, 'level2 typeText');
				else if (inputSize <= 40) this.addClass(input, 'level3 typeText');
				else this.addClass(input, 'level4 typeText');
			}
		}
		
	},
	
	// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Utilities
	
	/**
	 * $
	 * @notes	shirtcut of "document.getElementById()"
	 * @return	{Object}
	 */
	$: function(id) {
		
		if (document.getElementById(id)) return document.getElementById(id);
		
	},
	
	/**
	 * hasClassName
	 * @return {Boolean}
	 */
	hasClassName: function(element, value) {
	
		var c = element.className.split(' ');
		var i = c.length;
		while(i--) {
			if (c[i] == value) {
				return true;
				break;
			}
		}
		
	},
	
	/**
	 * addClass
	 * @return	{Void}
	 */
	addClass: function(element, value) {
		
		if (!element.className) element.className = value;
		else element.className += ' ' + value;
		
	},
	
	/**
	 * removeClass
	 * @return	{Void}
	 */
	removeClass: function(element, value) {
		
		var c = element.className.split(' ');
		element.className = '';
		
		for (var i = 0, l = c.length; i < l; i++) {
			if (c[i] != value) element.className += (i != l - 1)? c[i] + ' ' : c[i];
		}
		
		if (element.className == '') (element.getAttribute('className'))? element.removeAttribute('className') : element.removeAttribute('class');
		
	},
	
	/**
	 * 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(v) {
	
		if (navigator.appVersion.indexOf('MSIE ' + v) > 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);
		}
		
	},
	
	/**
	 * trace
	 * @return	{Function}
	 */
	trace: function() {
		
		var str = '';
		for (var i = 0, l = arguments.length; i < l; i++) {
			str += (i != 0)? ', ' + arguments[i] : arguments[i];
		}
		
		return alert(str);
		
	},
	
	/**
	 * isVersion
	 * @return	{Boolean}
	 */
	isVersion: function(v) {
		
		return v === parseInt(this.ver.substring(0, 1));
		
	},
	
	toString: function() {
		
		return '[Object Kaas]';
		
	}

};

Kaas.init();

// console.log()
