function CookieContainer()
{
	function initializeClass() {
		var fields = document.cookie.split(/;\s*/);

		for (var i = 0; i < fields.length; i++) {
			var matched = fields[i].match(/(.*?)=(.*)/);

			if (matched) {
				hashObject[matched[1]] = unescape(matched[2]);
			}
		}
	}

	var hashObject = new Object();

	initializeClass();

	this.getValue = function (cookieName) {
		return hashObject[cookieName];
	}

	this.setValue = function (cookieName, cookieValue) {
		var text = cookieName + "=" + escape(cookieValue);

		text += "; path=/";

		document.cookie = text;

		hashObject[cookieName] = cookieValue;
	}
}

_doStartUp();

function _doStartUp()
{
/*
    if (window.name && !window.name.indexOf("help_")) {
        if (window.top == window.self) {
            var href = "/psl/help/index.html?";

            if (window.name) {
                href += "target=" + escape(window.name) + "&";
            }

            href += "href=" + escape(location.href);
            location.replace(href);
            return;
        }

        if (window.parent.expandTree) {
            window.parent.expandTree(location.href);
        }
    }
*/
	cookies = new CookieContainer();

	var cookie = cookies.getValue("style");
	var title = cookie ? cookie : getPreferredStyleSheet();
	setActiveStyleSheet(title, true);
}
function init()
{
	_preload_image();

	window.focus();
}

function setActiveStyleSheet(title, cookieless)
{
	var elements = document.getElementsByTagName("link");

	for (var i = 0; i < elements.length; i++) {
		var rel = elements[i].getAttribute("rel");

		if (!rel || (rel.indexOf("style") < 0)) {
			continue;
		}

		var title2 = elements[i].getAttribute("title");

		if (!title2) {
			continue;
		}

		elements[i].disabled = true;

		if (title2 == title) {
			elements[i].disabled = false;
		}
	}

	if (!cookieless) {
		cookies.setValue("style", title);
	}

	return false;
}

function getActiveStyleSheet()
{
	var elements = document.getElementsByTagName("link");

	for (var i = 0; elements.length; i++) {
		var rel = elements[i].getAttribute("rel");

		if (!rel || (rel.indexOf("style") < 0)) {
			continue;
		}

		var title = elements[i].getAttribute("title");

		if (!title || elements[i].disabled) {
			continue;
		}

		return title;
	}

	return null;
}

function getPreferredStyleSheet()
{
	var elements = document.getElementsByTagName("link");

	for (var i = 0; elements.length; i++) {
		var rel = elements[i].getAttribute("rel");

		if (!rel || (rel.indexOf("style") < 0) || (rel.indexOf("alt") >= 0)) {
			continue;
		}

		var title = elements[i].getAttribute("title");

		if (title) {
			return title;
		}
	}

	return null;
}

function _preload_image()
{
	var imgsrc = new Array(
		"/common/img/btn_close_on.gif",
		"/common/img/btn_print_on.gif",
		"/common/img/side/s_up_bg_hover.gif",
		"/common/img/side/localnavi_bg_hover.gif",
		"/common/img/side/localnavi_bg_hover_1st.gif",
		"/common/img/calendar/btn_calendar_print_on.gif",
		"/common/img/booking/btn_online_on.gif",
		"/common/img/booking/btn_rule_on.gif",
		"/common/img/booking/btn_agree_on.gif"
	);

	_imgpre = new Array();

	for (var i = 0; i < imgsrc.length; i++) {
		_imgpre[i] = new Image();
		_imgpre[i].src = imgsrc[i];
	}
}


function _getElementById(elementId)
{
	if (document.getElementById) {
		return document.getElementById(elementId);
	} else if (document.all) {
		return document.all[elementid];
	} else if (document.layers) {
		return document.layers[elementId];
	} else {
		return null;
	}
}

function _getStyleObject(element)
{
	if (document.getElementById) {
		return element.style;
	} else if (document.all) {
		return element.style;
	} else if (document.layers) {
		return element;
	} else {
		return null;
	}
}

function _getParentElement(element)
{
	if (element.parentElement) {
		return element.parentElement;
	} else if (element.parentNode) {
		return element.parentNode;
	}

	return null;
}

function _getChildElement(element, index)
{
	if (element.childNodes) {
		var counter = 0;

		for (var i = 0; i < element.childNodes.length; i++) {
			if (element.childNodes[i].tagName && (counter++ == index)) {
				return element.childNodes[i];
			}
		}
	}

	return null;
}

function TickerObject()
{
	var targetElement = null;
	var scrollSize = null;
	var duration = null;
	var timerId = null;
	var elements = new Array();
	var targetWidth = null;

	var timeTable = new Array();
	var timeTableIndex = -1;
	
	this.add = function (type, message) {
		var element = new Object();
		element.type = type;
		element.message = message;
		element.index = 0;
		elements[elements.length] = element;
	}

	this.bind = function (element, scrollSizeValue, durationValue) {
		targetElement = element;
		scrollSize = scrollSizeValue;
		duration = durationValue;

		targetElement.innerHTML = "&nbsp;";

		targetWidth = 502;
		var targetHeight = 24;

		var htmlText = "&nbsp;";
		var lastType = "";
		var childIndex = 0;

		for (var i = 0; i < elements.length; i++) {
			var element = elements[i];

			if (i) {
				if (lastType == element.type) {
					htmlText += "　｜　";
				} else {
					htmlText += "<span style=\"font-size:12px; padding-left:";
					htmlText += targetWidth;
					htmlText += "px\">&nbsp;</span>";
					childIndex++;
				}
			}

			htmlText += "<span style=\"font-size:12px\">";
			htmlText += element.message;
			htmlText += "</span>";

			switch (element.type) {
				case "0":
				case "1":
					if (timeTable.length && (timeTable[timeTable.length - 1].command == "scroll")) {
						timeTable[timeTable.length - 1].condition = element;
					} else {
						if (timeTable.length && (timeTable[timeTable.length - 1].command == "scrollStart")) {
							timeTable[timeTable.length - 1].condition = element;
						} else {
							timeTable[timeTable.length] = new TimeTableElement(0, "scrollStart", element);
						}

						timeTable[timeTable.length] = new TimeTableElement(durationValue, "scroll", element);
					}

					lastType = element.type;
					break;

				case "2":
					timeTable[timeTable.length] = new TimeTableElement(0, "offset", element);
					timeTable[timeTable.length] = new TimeTableElement(500, "blinkOff", 0);
					timeTable[timeTable.length] = new TimeTableElement(500, "blinkOn", 0);
					timeTable[timeTable.length] = new TimeTableElement(5000, "blinkOff", 0);
					timeTable[timeTable.length] = new TimeTableElement(500, "blinkOn", 0);
					timeTable[timeTable.length] = new TimeTableElement(500, "blinkOff", 0);
					timeTable[timeTable.length] = new TimeTableElement(500, "blinkOn", 0);
					timeTable[timeTable.length] = new TimeTableElement(5000, "blinkOff", 0);
					timeTable[timeTable.length] = new TimeTableElement(500, "blinkOn", 0);
					timeTable[timeTable.length] = new TimeTableElement(500, "blinkOff", 0);
					timeTable[timeTable.length] = new TimeTableElement(500, "blinkOn", 0);
					timeTable[timeTable.length] = new TimeTableElement(5000, "scrollStart", element);
					lastType = "";
					break;
			}

			element.index = childIndex++;
		}

		var childContent = "<div style=\"font-size:12px; position:absolute; white-space:nowrap; top:-100px; left:-" +
			((navigator.userAgent.indexOf("Firefox") > -1) ? "9000" : "1") +
			"px; text-align:left\">" + htmlText + "</div>";

		var targetStyle = _getStyleObject(targetElement);
		targetStyle.width = targetWidth + "px";
		targetStyle.height = targetHeight + "px";
		targetStyle.position = "relative";
		targetStyle.overflow = "hidden";
		targetElement.innerHTML = childContent;
		targetStyle.fontSize = "12px";

		var childElement = _getChildElement(targetElement, 0);
		var childWidth = childElement.offsetWidth;
		var childStyle = _getStyleObject(childElement);
		childStyle.left = (targetWidth + 4) + "px";
		childStyle.top = "14px";

		var innerElement = _getChildElement(targetElement, 0);

		for (var i = 0; i < timeTable.length; i++) {
			if (timeTable[i].command == "offset") {
				childElement = _getChildElement(innerElement, timeTable[i].condition.index);
				timeTable[i].condition = -1 * (childElement.offsetLeft);
			} else if (timeTable[i].command == "scrollStart") {
				childElement = _getChildElement(innerElement, timeTable[i].condition.index);
				timeTable[i].command = "offset";
				timeTable[i].condition = targetWidth - childElement.offsetLeft;
			} else if (timeTable[i].command == "scroll") {
				childElement = _getChildElement(innerElement, timeTable[i].condition.index);
				timeTable[i].condition = -1 * (childElement.offsetLeft + childElement.offsetWidth);
			}
		}

		targetElement.onmouseover = onMouseOver;
		targetElement.onmouseout = onMouseOut;

		onMouseOut();
	}

	this.autoBind = function (scrollSizeValue, durationValue) {
		var elements2 = document.getElementsByTagName("div");

		for (var i = 0; i < elements2.length; i++) {
			if (elements2[i].className != "link_ticker") {
				continue;
			}

			this.bind(elements2[i], scrollSizeValue, durationValue);
			return;
		}
	}

	this.bindById = function (elementId, scrollSizeValue, durationValue) {
		var element = _getElementById(elementId);

		if (element) {
			this.bind(element, scrollSizeValue, durationValue);
		}
	}

	function TimeTableElement(duration, command, condition)
	{
		this.duration = duration;
		this.command = command;
		this.condition = condition;
	}

	function onTimer() {
		if ((timeTableIndex < 0) || (timeTableIndex >= timeTable.length)) {
			timeTableIndex = 0;
		}

		var childElement = _getChildElement(targetElement, 0);
		var childStyle = _getStyleObject(childElement);
		var timeTableObject = timeTable[timeTableIndex];

		switch (timeTableObject.command) {
			case "offset":
				childStyle.left = timeTable[timeTableIndex].condition + "px";
				break;

			case "scroll":
				var leftPosition = parseInt(childStyle.left);
				leftPosition -= scrollSize;

				if (leftPosition >= timeTableObject.condition) {
					childStyle.left = leftPosition + "px";
					timeTableIndex--;
				}

				break;

			case "blinkOn":
				childStyle.visibility = "visible";
				break;

			case "blinkOff":
				childStyle.visibility = "hidden";
				break;
		}

		if (++timeTableIndex >= timeTable.length) {
			timeTableIndex = 0;
		}

		if (timerId != null) {
			timerId = setTimeout(onTimer, timeTable[timeTableIndex].duration);
		}
	}

	function onMouseOver() {
		if (timerId != null) {
			clearTimeout(timerId);
			timerId = null;

			var childElement = _getChildElement(targetElement, 0);
			var childStyle = _getStyleObject(childElement);
			childStyle.visibility = "visible";
		}
	}

	function onMouseOut() {
		if (timerId == null) {
			if ((timeTableIndex < 0) || (timeTableIndex >= timeTable.length)) {
				timeTableIndex = 0;
			}

			timerId = setTimeout(onTimer, timeTable[timeTableIndex].duration);
		}
	}
}

function windowOpen(url,width,height,target){
	target = (target) ? target : '_blank';
	size   = (width)  ? ',width=' + width : '';
	size  += (width && height) ? ',height=' + height : '';
	window.open(url,target,"toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes" + size).focus();
}