﻿/**
* common.js
*
* @version		1.0.1.3
* @update		12:25 2008/12/03
* @extends		currentScript, addElement, getCookie, setCookie, deleteCookie
*
*/

/* ============================================================================== Utility
*/

// var currentScript = (function (e) { if(e.nodeName.toLowerCase() == 'script') return e; return arguments.callee(e.lastChild) })(document);
// var _path = (currentScript.src.split('.js')[1] == '?root')? '.' : '..';

var _path = 'http://www.hayashiyama.jp/';

var addElement = function(name, attr, parent) {
	var addElem = document.createElement(name);
	for (var i in attr) addElem.setAttribute(i, attr[i]);
	var _parent = (parent)? parent : document.body;
	return _parent.appendChild(addElem);
};

var getCookie = function (name) {
	var start = document.cookie.indexOf(name + '=');
	var len = start + name.length + 1;
	if ((!start) && (name != document.cookie.substring(0, name.length))) {
		return null;
	}
	if (start == -1) return null;
	var end = document.cookie.indexOf(';', len);
	if (end == -1) end = document.cookie.length;
	return unescape(document.cookie.substring(len, end));
};

var setCookie = function (name, value, expires, path, domain, secure) {
	var today = new Date();
	today.setTime(today.getTime());
	if (expires) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date(today.getTime() + (expires));
	document.cookie = name + '=' + escape(value) +
		((expires) ? ';expires=' + expires_date.toGMTString() : '') + //expires.toGMTString()
		((path)    ? ';path=' + path : '') +
		((domain)  ? ';domain=' + domain : '') +
		((secure)  ? ';secure' : '');
};

var deleteCookie = function (name, path, domain) {
	if (getCookie(name)) document.cookie = name + '=' + ((path) ? ';path=' + path : '') + ((domain) ? ';domain=' + domain : '') + ';expires=Thu, 01-Jan-1970 00:00:01 GMT';
};


/* ============================================================================== colorRows - 'rowTint'
	Automatic coloured rows | Bite Size Standards
	http://bitesizestandards.com/bites/automatic-coloured-rows
*/
var colorRows = function() {
	var myTR = document.getElementsByTagName('tr');
	for (var i=0;i<myTR.length;i++) {
		if (i%2) {
			myTR[i].className = 'rowTint';
		}
	}
};

/* ============================================================================== initRollovers - 'imgover'
	Standards Compliant Rollover Script
	Author : Daniel Nolan
	http://www.bleedingego.co.uk/webdev.php
*/

var initRollovers = function() {
	if (!document.getElementById) return

	var aPreLoad = new Array();
	var sTempSrc;
	var aImages = document.getElementsByTagName('img');

	for (var i = 0; i < aImages.length; i++) {		
		if (aImages[i].className == 'imgover') {
			var src = aImages[i].getAttribute('src');
			var ftype = src.substring(src.lastIndexOf('.'), src.length);
			var hsrc = src.replace(ftype, '_o'+ftype);

			aImages[i].setAttribute('hsrc', hsrc);
		
			aPreLoad[i] = new Image();
			aPreLoad[i].src = hsrc;
		
			aImages[i].onmouseover = function() {
				sTempSrc = this.getAttribute('src');
				this.setAttribute('src', this.getAttribute('hsrc'));
			}	
		
			aImages[i].onmouseout = aImages[i].onclick = function() {
				if (!sTempSrc) sTempSrc = this.getAttribute('src').replace('_o'+ftype, ftype);
				this.setAttribute('src', sTempSrc);
			}
		}
	}
};

/* ============================================================================== createExternalLink - 'external'
	Author : Sakai
	Date   : 2008-01-19
*/

var createExternalLink = function() {
	var externalLink = document.getElementsByTagName('a');
	for (var i = 0, len = externalLink.length; i < len; i++) {
		var a = externalLink[i];
		if (a.getAttribute('rel') == 'external') {
			a.title += ' : Open in a New Window';
			a.onclick = function() {
				window.open(this.getAttribute('href'), '_blank');
				return false;
			}
		}
	}
};

/* ============================================================================== formAdjust
	Author : Sakai
	Date   : 2008-03-10
*/

var formAdjust = function() {
	var inputForm = document.getElementsByTagName('input');
	for (var i = 0, len = inputForm.length; i < len; i++) {
		if (inputForm[i].getAttribute('type') == 'text') {
			var inputSize = inputForm[i].size;
			if ((0 < inputSize) && (inputSize <= 5)) {
				inputForm[i].className = 'level1 typeText';
			}
			else if ((5 < inputSize) && (inputSize <= 10)) {
				inputForm[i].className = 'level2 typeText';
			}
			else if ((10 < inputSize) && (inputSize <= 40)) {
				inputForm[i].className = 'level3 typeText';
			}
			else {
				inputForm[i].className = 'level4 typeText';
			}
		}
	}
};


/* ============================================================================== fontSizeManeger
	Author : Toki
	Date   : 11:35 2008/12/03
	Use    : addElement, getCookie, setCookie, deleteCookie
*/

var fontSizeManeger = function() {
	var s = document.getElementById('header').getElementsByTagName('dd')[0];
	var m = document.getElementById('header').getElementsByTagName('dd')[1];
	var l = document.getElementById('header').getElementsByTagName('dd')[2];
	
	s.onclick = setCSS('small');
	m.onclick = setCSS('medium');
	l.onclick = setCSS('large');
};

function setCSS(file) {
	var f = file;
	// var t = document.getElementById('header').getElementsByTagName('dd')[currentTarget(f)];
	var head = document.getElementsByTagName('head')[0];
	
	return function() {
		var css = addElement('link', { 'rel' : 'stylesheet', 'type' : 'text/css', 'href' : _path + '/css/' + f + '.css'}, head);
		if (head.getElementsByTagName('link').length == 3) {
			head.removeChild(head.getElementsByTagName('link')[1]);
		}
		setCookie('current_font_size', f, 365, '/');
		// disableCursor(t);
	}
}

function disableCursor(e) {
	var t = e.getElementsByTagName('img')[0];
	var _alpha = .5;
	t.style.filter = 'alpha(opacity=' + (_alpha * 100) + ')';
	_alpha = _alpha.toString();
	t.style.opacity  = _alpha;
	t.style.MozOpacity  = _alpha;
	
	t.style.cursor = 'default';
}

function currentTarget(f) {
	if (f == 'medium') return 1;
	else if (f == 'large') return 2;
	else return 0;
}


/* ============================================================================== addEvent
*/

function addEvent(elm, listener, fn){
	try{
		elm.addEventListener(listener, fn, false);
	}catch(e){
		elm.attachEvent('on' + listener, fn);
	}
}

addEvent(window, 'load', function() {
	colorRows();
	initRollovers();
	formAdjust();
	createExternalLink();
	fontSizeManeger();
	if (document.getElementById('gmaps')) SetGmaps.init();
	accAnl();
});

(getCookie('current_font_size'))? setCSS(getCookie('current_font_size'))() : setCSS('medium')();


/* ============================================================================== elem
*/

var elem = function(elem_name){
	if (document.getElementById(elem_name)) return document.getElementById(elem_name);
}

/* ============================================================================== accAnl
*/

var accAnl = function(){
	var globalUrl = 'http://www.hayashiyama.jp/';
	var targId = 'footer';
	var outHtml = '<p style="display: none;"><img src="'+globalUrl+'acc/acclog.cgi?';
	outHtml += 'referrer='+document.referrer;
	outHtml += '&width='+screen.width;
	outHtml += '&height='+screen.height;
	outHtml += '&color='+screen.colorDepth+'" /></p>';
	elem(targId).innerHTML += outHtml;
}