﻿/**
 * common.js
 * @version		2.0.1.0 - 21:03 2009/01/21
 */

 
var Kaas = {
	
	ver: '2.0.0.0',
	mainColomn: 'col-a',
	
	init: function() {
		
		this.addEvent(window, 'load', function() {
			// if (Kaas.$(Kaas.mainColomn)) Kaas.stripeTable(Kaas.mainColomn);
			// Kaas.regInt('li', 3);
			Kaas.initRollovers();
			Kaas.productThumbsRollovers();
			Kaas.formAdjuster();
			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);
				}
			}
		}
		
	},
	
	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], 'stripeEven');
		}
		
	},
	
	initRollovers: function() {
		
		var _opacity = .7;
		
		var imgs = document.getElementsByTagName('img');
		for (var i = 0, l = imgs.length; i < l; i++) setRollover(imgs[i]);
		
		setRollover(this.$('qSend'));
		
		
		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 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;
				}
			}
		}
		
	},
	
	formAdjuster: function() {
		
		var inputs = document.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');
			}
		}
		
	},
	
	productThumbsRollovers: function() {
		
		if (!document.getElementById('productsShortcut')) return;
		
		var a = document.getElementById('productsShortcut').getElementsByTagName('a');
		var _opacity = .8;
		
		for (var i = 1, l = a.length; i < l; i++) {
			
			var t = a[i];
			
			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');
			};
			
		}
		
	},
	
	// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Utilities
	
	/**
	 * $
	 * @notes	shirtcut of "document.getElementById()"
	 * @return	{Object}
	 */
	$: function(eId) {
		if (document.getElementById(eId)) return document.getElementById(eId);
	},
	
	/**
	 * 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');
		
	},
	
	/**
	 * isIEVer
	 * @return	{Boolean}
	 */
	isIEVer: function(appVer) {
	
		var ver = navigator.appVersion;
		if (ver.indexOf('MSIE ' + 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;
		
	},
	
	/**
	 * addEvent
	 * @return	{Void}
	 */
	addEvent: function(elm, listener, fn) {
		
		try {
			elm.addEventListener(listener, fn, false);
		} catch(e) {
			elm.attachEvent('on' + listener, fn);
		}
		
	},
	
	toString: function() {
		
		return '"common.js" Version ' + this.ver;
		
	}

};

Kaas.init();

