/*
Charset: UTF-8（京）
Version: 20080701
Programing by Masao Takahashi.
*/
function hasClassName(node,class_name){return new RegExp('\\b'+class_name+'\\b').test(node.className)};
function addClassName(node,class_name){if(!node.className){node.className=class_name} else if(!hasClassName(node,class_name)){var className=node.className+" "+class_name;node.className=className.split(/\s+/).join(' ')}};
function removeClassName(node,class_name){var className=node.className;if(className){className=className.replace(new RegExp('\\b'+class_name+'\\b'),'');className=className.replace(/\s+/g,' ');node.className=className.replace(/\s+$/g,'')}};
function removeAllChild(node) { while (node.hasChildNodes()) node.removeChild(node.firstChild); }

function addEventHandler(target, type, listener, flag)
{
	if (flag == null || flag == undefined) { flag = false; }
	if (target.addEventListener) target.addEventListener(type, listener, flag);
	else if (target.attachEvent) target.attachEvent('on' + type, function() { listener.call(target, window.event); });
	else target['on' + type] = function(e) { listener.call(target, e || window.event); };
}
function getFirstElement(parentNode)
{
	for (var node=parentNode.firstChild; node; node=node.nextSibling) {
		if (node.nodeType == 1) {
			return node;
		}
	}
	return null;
}
function getEventTarget(e)
{
	if (!e) var e=window.event;
	if (e.target) return e.target;
	else if (e.srcElement) return e.srcElement;
	return null;
}
function getEventPt(e)
{
	if (document.all || window.opera) {
		var evt = window.event;
		var offsetX = document.documentElement.scrollLeft;
		var offsetY = document.documentElement.scrollTop;
		if (window.opera) {
			offsetX = offsetY = 0;
		}
		return {x:evt.screenX+offsetX, y:evt.screenY+offsetY};
	}
	else {
		var offsetX = window.scrollX;
		var offsetY = window.scrollY;
		return {x:e.screenX+offsetX, y:e.screenY+offsetY};
	}
}
function getElementsByClass(searchClass, node, tag)
{
	var classElements = new Array();
	if (node == null || node == undefined) { node = document; }
	if (tag == null || tag == undefined)  { tag = '*'; }
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if (pattern.test(els[i].className)) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}


function Rectangle() {
}
Rectangle.prototype = {
initByPt : function(x, y, x2, y2) {
	this.left = x; this.top = y;
	this.width = x2-x;
	this.height = y2-y;
},
inside : function(x, y) {
	if (x < this.left) return false;
	if (x >= this.left+this.width) return false;
	if (y < this.top) return false;
	if (y >= this.top+this.height) return false;
	return true;
},
grow : function(dh, dv) {
	this.left -= dh;
	this.top -= dv;
	this.width += dh*2;
	this.height += dv*2;
	return this;
}
};
function getWindowRect()
{
	var ua = navigator.userAgent.toLowerCase();
	var _netspape = (i = ua.indexOf("netscape")) != -1;
	if (_netspape) {
		scrollL = window.pageXOffset;
		scrollT = window.pageYOffset;
	}
	else if (document.documentElement) {
		scrollL = document.documentElement.scrollLeft;
		scrollT = document.documentElement.scrollTop;
	}
	else {
		scrollL = document.body.scrollLeft;
		scrollT = document.body.scrollTop;
	}
	if (_netspape) {
		windowW = window.innerWidth;
		windowH = window.innerHeight;
	}
	else if (document.documentElement) {
		windowW = document.documentElement.clientWidth;
		windowH = document.documentElement.clientHeight;
	}
	else {
		windowW = document.body.offsetWidth;
		windowH = document.body.offsetHeight;
	}
	var rect = new Rectangle();
	rect.left = scrollL; rect.top = scrollT;
	rect.width = windowW; rect.height = windowH;
	return rect;
}
function getElementRect(node)
{
	var rect = new Rectangle();
	rect.left = rect.top = 0;
	rect.width = node.offsetWidth;
	rect.height = node.offsetHeight;
	do {
		rect.left += node.offsetLeft;
		rect.top  += node.offsetTop;
		node = node.offsetParent;
	} while (node);
	return rect;
}


function addStyleSheet(url, nDoc)
{
	if (nDoc == null || nDoc == undefined) { nDoc = document; }
	var nLink = nDoc.createElement('link');
	nLink.rel = "StyleSheet";
	nLink.type = "text/css";
	nLink.href = url;
	var oHEAD = nDoc.getElementsByTagName('head').item(0);
	oHEAD.appendChild(nLink);
	return nLink;
}
function removeStyleSheet(nLink, nDoc)
{
	nLink.disabled = true;
	if (nDoc == null || nDoc == undefined) { nDoc = document; }
	if (nDoc.createStyleSheet) {
		nLink.href = "";
	}
	var oHEAD = nDoc.getElementsByTagName('head').item(0);
	oHEAD.removeChild(nLink);
}
function getActiveStyle(element, property, pseudo)
{
	if (element.currentStyle) { //IE
		property = (property.match(/-/)) ? property.camelize() : property;
		return element.currentStyle[ property.camelize() ];
	}
	else if (document.defaultView.getComputedStyle) { //Mozilla
		property = (property.match(/-/) == null) ? property.deCamelize() : property;
		return document.defaultView.getComputedStyle(element, pseudo).getPropertyValue(property);
	}
	return "";
}
function addRule(selector, property, sheetindex, ruleindex)
{
	if (sheetindex == undefined) sheetindex = 0;
	var sheet = document.styleSheets[sheetindex];
	if (sheet.addRule) { //IE
		if (ruleindex == undefined) ruleindex = sheet.rules.length;
		sheet.addRule( selector, "{" + property + "}", ruleindex );
		return ruleindex;
	}
	else if (sheet.insertRule) { //Mozilla
		if (ruleindex == undefined) ruleindex = sheet.cssRules.length;
		return sheet.insertRule( selector + "{" + property + "}", ruleindex );
	}
	return null;
}
function removeRule(index, sheetindex)
{
	if (sheetindex == undefined) sheetindex = 0;
	var sheet = document.styleSheets[sheetindex];
	if (sheet.removeRule) { //IE
		sheet.removeRule(index);
	}
	else if (sheet.deleteRule) { //Mozilla
		sheet.deleteRule(index);
	}
}


String.prototype.camelize = function()
{
	return this.replace(/-([a-z])/g,
		function($0, $1) { return $1.toUpperCase() } );
}
String.prototype.deCamelize = function()
{
	return this.replace(/[A-Z]/g,
		function($0) { return "-" + $0.toLowerCase() } );
}


function createCookie(name,value,days)
{
	var expires = "";
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = "; expires="+date.toGMTString();
	}
	document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}


function MyAjaxObject() {
}
MyAjaxObject.prototype = {
_create : function()
{
	if (window.XMLHttpRequest) { // Mozilla, Firefox, Safari, IE7
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) { // IE5, IE6
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");    // MSXML3
		} catch(e) {
			return new ActiveXObject("Microsoft.XMLHTTP"); // MSXML2
		}
	} else {
		return null;
	}
},
send : function(url, postdata, callback, params)
{
	var httpReq = this._create();
	httpReq.onreadystatechange = function() {
		if (httpReq.readyState == 4 && httpReq.responseText) {
			callback(httpReq, postdata, params);
			httpReq = null;
		}
	}
	httpReq.open("POST", url, true);
	httpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var senddata = "";
	for (var key in postdata) {
		if (senddata != "") senddata += "&";
		senddata += key+"="+escape(postdata[key]);
	}
	httpReq.send(senddata);
	return httpReq;
},
abort : function(httpReq)
{
	if (httpReq.readyState!=0 && httpReq.readyState!=4) {
		httpReq.abort();
	}
}
};


function FlashPlayerVersion() {
	this.reset();
}

FlashPlayerVersion.prototype = {
reset : function()
{
	this.setVersion([0,0,0]);
	if(navigator.plugins && navigator.mimeTypes.length){
		var x = navigator.plugins["Shockwave Flash"];
		if(x && x.description) {
			this.setVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
		}
	}else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0){ // if Windows CE
		var axo = 1;
		var counter = 3;
		while(axo) {
			try {
				counter++;
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+ counter);
				this.setVersion([counter,0,0]);
			} catch (e) {
				axo = null;
			}
		}
	} else { // Win IE (non mobile)
		// do minor version lookup in IE, but avoid fp6 crashing issues
		// see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
		try{
			var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		}catch(e){
			try {
				var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
				this.setVersion([6,0,21]);
				axo.AllowScriptAccess = "always"; // error if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code)
			} catch(e) {
				if (this.major == 6) {
					return;
				}
			}
			try {
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			} catch(e) {}
		}
		if (axo != null) {
			this.setVersion(axo.GetVariable("$version").split(" ")[1].split(","));
		}
	}
},
setVersion : function(arrVersion)
{
	this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;
	this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;
	this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0;
},
isValid : function(major,minor,rev)
{
	if(this.major < major) return false;
	if(this.major > major) return true;
	if(this.minor < minor) return false;
	if(this.minor > minor) return true;
	if(this.rev < rev) return false;
	return true;
}
};


/*old version*/
function MyHttpRequest() {
	this.httpReq = null;
}
MyHttpRequest.prototype = {
_create : function()
{
	if (window.XMLHttpRequest) { // Mozilla, Firefox, Safari, IE7
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) { // IE5, IE6
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");    // MSXML3
		} catch(e) {
			return new ActiveXObject("Microsoft.XMLHTTP"); // MSXML2
		}
	} else {
		return null;
	}
},
send : function(url, postdata, callback)
{
	this.abort();
	this.httpReq = this._create();
	this.postdata = postdata;
	var httpReq = this.httpReq;
	httpReq.onreadystatechange = callback;
	httpReq.open("POST", url, true);
	httpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var senddata = "";
	for (var key in postdata) {
		if (senddata != "") senddata += "&";
		senddata += key+"="+escape(postdata[key]);
	}
	httpReq.send(senddata);
	return true;
},
abort : function()
{
	if (this.httpReq) {
		if (this.httpReq.readyState!=0 && this.httpReq.readyState!=4) {
			this.httpReq.abort();
		}
	}
},
check : function()
{
	var httpReq = this.httpReq;
	this.httpError = 0;
	if (httpReq.readyState != 4 || !httpReq.responseText) {
		return null;
	}
	if (httpReq.status != 200) {
		this.httpError = httpReq.status;
		alert("http error:"+httpReq.status);
		return null;
	}
	return httpReq;
}
};
