var browser = {};

var a, ua = navigator.userAgent;

browser.iemobile = navigator.appName == 'Microsoft Pocket Internet Explorer';
browser.safari = ua.match(/AppleWebKit/gi) !== null || ((a = ua.split('Konqueror/')[1]) ? a.split(';')[0] : 0) >= 3.3;
browser.konqueror = ((a = ua.split('Konqueror/')[1]) ? a.split(';')[0] : 0) >= 3.3;
browser.mozes = ((a = ua.split('Gecko/')[1]) ? a.split(' ')[0] : 0) >= 20011128;
browser.opera = (!!window.opera) && ((typeof XMLHttpRequest) == 'function');
browser.msie7 = (!!window.ActiveXObject) ? ((typeof XMLHttpRequest) == 'object') : false;
browser.msie = (!!window.ActiveXObject) ? (!!createHttpRequest()) && ((typeof XMLHttpRequest) != 'object') : false;
browser.msie8 = ua.match(/Trident/) !== null ? true : false;

//browser.msie9 = window.msPerformance !== undefined ? true : false;
	browser.msie9 = false;
 	if(browser.msie && document.createElement("div").style.opacity != 'undefined'){
		browser.msie9 = true;
	}

// IE8のときは、msie=false, msie7=true, msie8=true, msie9=false,
// IE9のときは、msie=false, msie7=true, msie8=true, msie9=true,
// -> IE9のときは、msie=false, msie7=false, msie8=false, msie9=true,とする
if(browser.msie9){
	browser.msie = false;
	browser.msie7 = false;
	browser.msie8 = false;
}

if(browser.opera){
	navigator.userAgent.match(/^Opera\/(.+?) \(.+$/);
	browser.operaversion = parseFloat(RegExp.$1);
}

if(ua.match(/Macintosh/)){
	browser.mac = true;
}
else{
	browser.mac = false;
}			

if(ua.match(/(iPod|iPad)/)){
	browser.ipod = true;
}
else{
	browser.ipod = false;
}

browser.chrome = false;
browser.android = false;
browser.safari2 = false;
if(browser.safari){
	if(ua.match(/Android/)){
		browser.android = true;
		browser.chrome = true;
	}
	if(ua.match(/Chrome/)){
		browser.chrome = true;
	}
	else if(ua.match(/Version\/2/)){
		browser.safari2 = true;
	}
}

browser.linux = false;
if(ua.match(/X11/)){
	browser.linux = true;
}

var re_over = new RegExp("mouseover");
var re_out = new RegExp("mouseout");
var re_over_rev = new RegExp("mouseover_rev");
var re_out_rev = new RegExp("mouseout_rev");
var re_over_menu = new RegExp("mouseover_menu");
var re_out_menu = new RegExp("mouseout_menu");
var re_textbutton = new RegExp("textbutton$");
var re_textbutton_rev = new RegExp("textbutton_rev$");
var re_textbutton2 = new RegExp("textbutton2");
var re_textbutton2_rev = new RegExp("textbutton2_rev");
var re_textbutton_large = new RegExp("textbutton_large");
var re_textbutton_large_rev = new RegExp("textbutton_large_rev");
var re_textbutton_green_large = new RegExp("textbutton_green_large");
var re_textbutton_green_large_rev = new RegExp("textbutton_green_large_rev");
var re_textbutton_red_large = new RegExp("textbutton_red_large");
var re_textbutton_red_large_rev = new RegExp("textbutton_red_large_rev");
var re_textbutton_gray_large = new RegExp("textbutton_gray_large");
var re_textbutton_gray_large_rev = new RegExp("textbutton_gray_large_rev");

function setMouseOver() {
	var cl = this.className.replace(re_out, "mouseover");
	cl = cl.replace(re_textbutton, "textbutton_rev");
	cl = cl.replace(re_textbutton2, "textbutton2_rev");
	cl = cl.replace(re_textbutton_large, "textbutton_large_rev");
	cl = cl.replace(re_textbutton_green_large, "textbutton_green_large_rev");
	cl = cl.replace(re_textbutton_red_large, "textbutton_red_large_rev");
	cl = cl.replace(re_textbutton_gray_large, "textbutton_gray_large_rev");
	cl = cl.replace(re_out_rev, "mouseover_rev");
	cl = cl.replace(re_out_menu, "mouseover_menu");
	if(this.id.match(/mypage(edit|prop)(\d+)/)){
		var mypageitem = document.getElementById("mypageitem" + RegExp.$2);
		var cl2 = mypageitem.className.replace(re_out, "mouseover")
		mypageitem.setAttribute("class", cl2);
		mypageitem.setAttribute("className", cl2);
	}
  this.setAttribute("class", cl);
  this.setAttribute("className", cl);
}

function setMouseOut() {
	var cl = this.className.replace(re_over, "mouseout");
	cl = cl.replace(re_textbutton_rev, "textbutton");
	cl = cl.replace(re_textbutton2_rev, "textbutton2");
	cl = cl.replace(re_textbutton_large_rev, "textbutton_large");
	cl = cl.replace(re_textbutton_green_large_rev, "textbutton_green_large");
	cl = cl.replace(re_textbutton_red_large_rev, "textbutton_red_large");
	cl = cl.replace(re_textbutton_gray_large_rev, "textbutton_gray_large");
	cl = cl.replace(re_over_rev, "mouseout_rev");
	cl = cl.replace(re_over_menu, "mouseout_menu");
	if(this.id.match(/mypage(edit|prop)(\d+)/)){
		var mypageitem = document.getElementById("mypageitem" + RegExp.$2);
		var cl2 = mypageitem.className.replace(re_over, "mouseout")
		mypageitem.setAttribute("class", cl2);
		mypageitem.setAttribute("className", cl2);
	}
  this.setAttribute("class", cl);
  this.setAttribute("className", cl);
}

function setMouseEvent(elm) {
  elm.onmouseover = setMouseOver;
	elm.onmouseout = setMouseOut;
	elm.onmouseup = setMouseOut;
}

function setMouseSelector(elms) {
	for(var i = 0;i < elms.length; i++){
		if(elms[i].className.search(re_out) != -1){
			setMouseEvent(elms[i]);
		}
		if(elms[i].className.search(re_textbutton) != -1){
			setMouseEvent(elms[i]);
		}
		if(elms[i].className.search(re_textbutton2) != -1){
			setMouseEvent(elms[i]);
		}
		if(elms[i].className.search(re_textbutton_large) != -1){
			setMouseEvent(elms[i]);
		}
		if(elms[i].className.search(re_textbutton_green_large) != -1){
			setMouseEvent(elms[i]);
		}
		if(elms[i].className.search(re_textbutton_red_large) != -1){
			setMouseEvent(elms[i]);
		}
		if(elms[i].className.search(re_textbutton_gray_large) != -1){
			setMouseEvent(elms[i]);
		}
	} 
}

function getCookie(key) {
	if(!document.cookie)
	  return undefined;
	var v = "; " + document.cookie;
	var ns = v.indexOf("; " + key + "=");
  if(ns < 0)
		return undefined;
	ns = ns + key.length + 1 + 2;
	var ne = v.indexOf(";", ns);
	if(ne < 0)
		ne = v.length;
	return v.substring(ns, ne);
}

function showSociety(){
	if(document.getElementById("society")){
		if(document.getElementById("society").value == ""){
			var soc = getCookie("previous_society");
			if(soc !== undefined){
				soc.match(/^(.+?)_x_(.+?)$/);

				var tmpsoc = RegExp.$1;
				tmpsoc = tmpsoc.replace(/_z_/g, ".");

				if(tmpsoc != "roomguest" && document.getElementById("society").value == ""){
					document.getElementById("society").value = tmpsoc;
				}
			}
	  }
	}
}

function bodyOnLoad(){
	var divs = document.getElementsByTagName("div");
	setMouseSelector(divs);
	var tds = document.getElementsByTagName("td");
	setMouseSelector(tds);

	var userNameInput = document.getElementById("user_name");
	if(userNameInput){
		var user_name = getCookie("user_name");
		if(user_name !== undefined && userNameInput.value == ""){
			userNameInput.value = decodeURIComponent(user_name);
		}
	}
}

function searchOnSubmit(){
	var searchwords = document.getElementById("searchwords");
	var searchtype = document.getElementById("searchtype");
	var form = document.getElementById("form_search");
	form.action = searchtype.value + "/search/" + "w=" + encodeURI(searchwords.value);
	if(searchwords.value != ""){
		return true;
	}
	return false;
}

function worldHighlightBg(elm){
	if(/*@cc_on!@*/false){
		elm.setAttribute("className", "world_block_white_bg_color");
	}
	else{
		elm.setAttribute("class", "world_block_white_bg_color");
	}
}

function worldNormalBg(elm){
	if(/*@cc_on!@*/false){
		elm.setAttribute("className", "world_block_light_bg_color");
	}
	else{
		elm.setAttribute("class", "world_block_light_bg_color");
	}
}


function createHttpRequest() {
	if(window.XMLHttpRequest){
		return new XMLHttpRequest();
	}
	else if(window.ActiveXObject){
		try{
			return new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch(e){
			try{
				return new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch(e2){
				return null;
			}
		}
	}
	else{
		return null;
	}
};

function sendRequest(c, d, p, u, y, t, v, w) {
	var o = createHttpRequest();
	if(o === null)
		return null;
	var t = (!!sendRequest.arguments[5]) ? t : false;
	if(t || p.toUpperCase() == 'GET')
		u += '?';
	if(t)
		u = u + 't=' + (new Date()).getTime();
	var z = browser;
	var op = z.opera;
	var s = z.safari;
	var k = z.konqueror;
	var m = z.mozes;
	if(typeof c == 'object'){
		var l = c.onload;
		var h = c.onbeforsetheader
	}
	else{
		var l = c;
		var h = null;
	}
	if(op || s || m){
		o.onload = function() {
			l(o);
		}
	}
	else{
		o.onreadystatechange = function() {
			if(o.readyState == 4){
				l(o);
			}
		}
	}
	d = r(d, u);
	if(p.toUpperCase() == 'GET'){
		if(d.match(/^&(.+)/)){
			d = RegExp.$1;
		}
		u += d
	}
	o.open(p, u, y, v, w);
	if(!!h)
		h(o);
	x(o);
	o.send(d);
	function x(o) {
		var g = 'application/x-www-form-urlencoded; charset=UTF-8';
		if(!window.opera){
			o.setRequestHeader('Content-Type', g);
		}
		else{
			if((typeof o.setRequestHeader) == 'function')
				o.setRequestHeader('Content-Type', g);
		}
		return o
	}
	function r(d, u) {
		var n = (u.indexOf('?') == -1) ? '?dmy' : '';
		if(typeof d == 'object'){
			for(var i in d)
				n += '&' + encodeURIComponent(i) + '=' + encodeURIComponent(d[i]);
		}
		else if(typeof d == 'string'){
			if(d == '')
				return '';
			var n = '';
			var f = d.split('&');
			for(var i = 1;i < f.length; i++){
				var q = f[i].split('=');
				n += '&' + encodeURIComponent(q[0]) + '=' + encodeURIComponent(q[1]);
			}
		}
		return n;
	}
	return o
};


function createElm(tag, id, cl) {
	var elm = document.createElement(tag);
	if(id){
		elm.setAttribute("id", id);
	}
	if(cl){
		if(browser.msie || browser.msie7){
			elm.setAttribute("className", cl);
		}
		else{
			elm.setAttribute("class", cl)
		}
	}
	return elm;
};

function selectAllCheckbox(keyword){
	var boxes = document.getElementsByTagName("input");
	for(var i=0; i<boxes.length; i++){
		if(boxes[i].type == "checkbox" && boxes[i].id.match(keyword)){
			boxes[i].checked = true;
		}
	}
}



