﻿/**
 * 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() {
			var d = document,
				shops = d.getElementById('access').getElementsByTagName('div')[0].getElementsByTagName('div'),
				i = 0, l = shops.length;

			// if (Kaas.$(Kaas.mainColomn)) Kaas.stripeTable(Kaas.mainColomn);
			// Kaas.regInt('li', 3);
			Kaas.initRollovers();
			if (Kaas.$('container')) {
				Kaas.formAdjuster('container');
			}
			
			/**
			 * 一時的な要素追加
			 * #footer内
			 * 休館
			 * 渋谷店：1/1
			 * 渋谷店以外：12/24および12/28～1/3
			 */
			for (; i < l; i++) {
				var shop = shops[i];
				var text = shop.getAttribute('id') != 'shibuya' ? '休館日：12/24・12/28～1/3' : '休館日：1/1';
				var tempNote = shop.appendChild(d.createElement('p'));
				tempNote.className = 'notice lightColor';
				tempNote.appendChild(d.createTextNode(text));
			};

			Kaas.createExternalLink();
			Kaas.GoogleAnaryticsUtil.crossdomainTracking(
				jQuery,
				'a[href^="http://studio-arc.net"], a[href^="https://studio-arc.net"]', // selector a
				'form[action^="http://studio-arc.net"]' // selector form
			);
			Kaas.addIndexHTML.init();
		});
		
	},
	
	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'));
		if (this.$('submitApplyFair')) setRollover(this.$('submitApplyFair'));
		
		
		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);
		
	},
	
	/**
	 * addIndexHTML
	 */
	addIndexHTML: {
		init: function() {
			var loc = location.href;
			if (loc.indexOf('http') == 0 || loc.indexOf('ftp') == 0) return false;
			
			var a = document.getElementsByTagName('a');
			var lastS = /\/$/;
			var i, l = a.length;
			if (window.addEventListener) {
				for (i = 0; i < l; i++) {
					a[i].addEventListener('click', function(e) {
						Kaas.addIndexHTML.onClick(this, lastS);
					}, false);
				}
			} else {
				for (i = 0; i < l; i++) {
					a[i].attachEvent('onclick', function(e) {
						var t = e.srcElement.tagName == 'IMG' ? e.srcElement.parentNode : e.srcElement;
						Kaas.addIndexHTML.onClick(t, lastS);
					});
				}
			}
		},
		onClick: function(t, regex) {
			var h = t.getAttribute('href');
			var ex = h.indexOf('http') != 0;
			var ref = h.split('#');
			var len = ref.length;
			if (ex && h.match(regex)) t.href += 'index.html';
			else if (ex && len > 1 && ref[0].match(regex)) t.href = ref[0] + 'index.html#' + ref[1];
			// Kaas.alerts(ex, e, t, t.tagName, t.href);
		}
	},
	
	/**
	 * isVersion
	 * @return	{Boolean}
	 */
	isVersion: function(v) {
		
		return v === parseInt(this.ver.substring(0, 1));
		
	},
	
	toString: function() {
		
		return '[Object Kaas]';
		
	}

};

Kaas.GoogleAnaryticsUtil = {
	crossdomainTracking: function($, anchors, forms) {
		$(anchors).click(function(e) {
			window.open(pageTracker._getLinkerUrl(this.href), '_blank');
			return false;
		});
		$(forms).submit(function(e) {
			if ($.validator && $(this).valid() || !$.validator) pageTracker._linkByPost(this.action);
			return false;
		});
	}
};

Kaas.init();

// console.log()

