// --------------------------------------------------
// [JS] jp.rinco  by yamachan  2007/03/14
// --------------------------------------------------

if (typeof jp == "undefined") {
    var jp = {};
}
if (typeof jp.rinco == "undefined") {
    jp.rinco = {};
}


// --------------------------------------------------
// [JS] jp.rinco.display  by yamachan  2007/03/13
// --------------------------------------------------

jp.rinco.display = function(id, v) {
  var target;
  if (typeof(id) == 'string')
	target = document.getElementById(id);
  else	
	target = id;

  var vflag;
  if (v == undefined) {
    if (target.style.visibility == 'hidden')
    	  vflag = true;
	  else
	      vflag = false;  	
  } else
	  vflag = v;

  if (vflag) {
    target.style.visibility = 'visible';
    target.style.display = 'block';
  } else {
    target.style.visibility='hidden';
    target.style.display = 'none';
  }
}


// --------------------------------------------------
// [JS] jp.rinco.urlTool  by yamachan  2007/03/15
// --------------------------------------------------

jp.rinco.urlTool = function(v) {
	this.init = function(v) {
		if (v == undefined)	
			this.value = location.href;
		else
			this.value = v;

		var pos = this.value.indexOf('?');
		if (pos < 0) {
			this.location = this.value;
			this.param = "";
		} else {
			this.location = this.value.substring(0, pos);
			this.param = this.value.substring(pos, this.value.length);
		}	

		this.dir = this.location.split('/');
		this.file = this.dir[this.dir.length - 1]		
	}

	this.getFile = function(v) {
		if (v == undefined || typeof(v) != "number")
			return this.file;
		var ret = this.file;
		for (loop = 2; loop < v + 1; loop++) {
			if (this.dir[this.dir.length - loop] == "")
				return "";
			ret = this.dir[this.dir.length - loop] + "/" + ret
		}
		return ret;
	}

	this.parse = function(v1, v2, v3) {
		var u; var n; var d;		
		if (v2 == undefined) {
			u = this.param; n = v1; d = "";
		} else if (v3 == undefined) {
			u = this.param; n = v1; d = v2;
		} else {
			u = v1; n = v2; d = v3;			
		}

		var pos = u.indexOf("?" + n + "=");
		if(pos < 0)		
			pos = u.indexOf("&" + n + "=");
		if(pos < 0)
			return  d;

		var r = u.substring(pos + n.length + 2);
		pos = r.indexOf('&'); 
		if (pos < 0)
			return decodeURIComponent(r);
		return decodeURIComponent(r.substring(0, pos));	
	}

	this.init(v);
}

jp.rinco.url = new jp.rinco.urlTool();





// --------------------------------------------------
// --------------------------------------------------


jp.rinco.parseURL = function(url, name, value) {
	var pos_s = url.indexOf(name + "=");
	if(pos_s < 0)
		return  value;	
	var url = url.substring(pos_s + name.length + 1);
	var pos_e = url.indexOf('&'); 
	if (pos_e < 0)
		return decodeURIComponent(url);
	return decodeURIComponent(url.substring(0, pos_e));
}

jp.rinco.lastWord = function(str) {
	if (str == "") return "";
	var s = str.replace(/(\s|\u3000)+/g,' ').split(' ');
	return s[s.length - 1];
}

jp.rinco.escapeHTML = function(str) {
	return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
}
jp.rinco.unescapeHTML = function(str) {
	return str.replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&amp;/g, "&");
}

jp.rinco.tagText = function(str, tag_s, tag_e, cflag) {
	if (tag_s == "" || tag_e == "") return "";
	
	var key_s = cflag ? jp.rinco.escapeHTML(tag_s) : tag_s;
	var key_e = cflag ? jp.rinco.escapeHTML(tag_e) : tag_e;	
	var pos_s = str.indexOf(key_s);
	var pos_e = str.indexOf(key_e);
	if (pos_s < 0 || pos_e < 0)
		return "";
	else
		return str.substring(pos_s + key_s.length, pos_e);
}

// --------------------------------------------------------------------------

jp.rinco.Suggest = function(t, h, d) {
	if (typeof(t) == 'string')
		this.target = document.getElementById(t);
	else	
		this.target = t;
	if (typeof(h) == 'string')
		this.help = document.getElementById(h);
	else	
		this.help = h;
	this.dic = d;

	this.target.aYamachanSuggest = this;
	this.target.onkeyup = function() {
		this.aYamachanSuggest.updateHelp();
	}

	this.keyElement = function(k) {
		var ke = document.createElement('div')
		ke.innerHTML = k;
		ke.aYamachanSuggest = this;
		ke.onclick = function(){
			this.aYamachanSuggest.click(this);
		}
		if (ke.aYamachanSuggest.onmouseover)
			ke.onmouseover = ke.aYamachanSuggest.onmouseover
		if (ke.aYamachanSuggest.onmouseout)
			ke.onmouseout = ke.aYamachanSuggest.onmouseout
		return ke;
	} 

	this.updateHelp = function() {
		var k = jp.rinco.lastWord(this.target.value);		
		if (k == "") {
		  	this.help.style.visibility='hidden';
	  		this.help.style.display = 'none';			
			return;
		}
		
		var lk = k.toLowerCase();
		var counter = 0;
		this.help.innerHTML = "";
				
		for (loop = 0; loop < this.dic.length; loop++) {
			var dk = this.dic[loop];
			if (dk.toLowerCase().indexOf(lk) == 0) {
				this.help.appendChild(this.keyElement(dk));
				counter++;
			}
		}

		if (counter > 0) {
			this.help.style.visibility = 'visible';
			this.help.style.display = 'block';
		} else {
		  	this.help.style.visibility='hidden';
	  		this.help.style.display = 'none';			
		}
	}
}

jp.rinco.Suggest.prototype.click = function(ke) {
	var te = ke.aYamachanSuggest.target;
	var k = jp.rinco.lastWord(te.value);
	if (k == "") return;
	
	te.value = te.value.substring(0, te.value.length - k.length) + ke.innerHTML;
	ke.aYamachanSuggest.updateHelp();
	te.focus();
} 

// --------------------------------------------------------------------------

jp.rinco.ImgTool = function(t, p1, p2) {
	if (typeof(t) == 'string')
		this.target = document.getElementById(t);
	else	
		this.target = t;
	if (this.target.evalAttribute)
		return;

	this.src = this.target.src;
	if (this.target.style.width == "")
		this.width = this.target.width;
	else
		this.width = this.target.style.width;
	if (this.target.style.height == "")
		this.height = this.target.height;
	else
		this.height = this.target.style.height;
   	this.border = this.target.style.border;
	this.color = this.target.style.color;
	this.bgcolor = this.target.style.backgroundColor;
	this.overWidth = "";
	this.overHeight = "";
	this.overSrc = "";
	this.overBorder = "";
	this.overColor = "";
	this.overBackgroundColor = "";
	this.downWidth = "";
	this.downHeight = "";
	this.downSrc = "";
	this.downBorder = "";
	this.downColor = "";
	this.downBackgroundColor = "";

	if (p1 != undefined) {
		if (typeof(p1) == 'string')
			this.overSrc = p1;
		else {
			if (p2 == undefined) {			
				this.overWidth = this.FxMulti(this.width, p1);		
				this.overHeight = this.FxMulti(this.height, p1);
			} else {
				this.overWidth = p1;		
				this.overHeight = p2;				
			}		
		}
	}

	this.target.evalAttribute = function(t, v, d) {
		if (v != "") {
			if (d == undefined) {
				eval("this." + t + "='" + v + "'");			
			} else {
				eval("this." + t + "='" + d + "'");			
			}
		}
	}
	this.target.evalAttribute("style.width", this.Fx(this.width));
	this.target.evalAttribute("style.height", this.Fx(this.height));
	
	this.onmouseover = function() {
		this.target.evalAttribute("style.width", this.Fx(this.overWidth));
		this.target.evalAttribute("style.height", this.Fx(this.overHeight));
		this.target.evalAttribute("src", this.overSrc);
		this.target.evalAttribute("style.border", this.overBorder);
		this.target.evalAttribute("style.color", this.overColor);
		this.target.evalAttribute("style.backgroundColor", this.overBackgroundColor);
	}
	this.onmouseout = function() {
		this.target.evalAttribute("style.width", this.overWidth, this.Fx(this.width));
		this.target.evalAttribute("style.height", this.overHeight, this.Fx(this.height));
		this.target.evalAttribute("src", this.overSrc, this.src);
		this.target.evalAttribute("style.border", this.overBorder, this.border);
		this.target.evalAttribute("style.color", this.overColor, this.color);
		this.target.evalAttribute("style.backgroundColor", this.overBackgroundColor, this.bgcolor);
	}
	this.onmousedown = function() {
		this.target.evalAttribute("style.width", this.Fx(this.downWidth));
		this.target.evalAttribute("style.height", this.Fx(this.downHeight));
		this.target.evalAttribute("src", this.downSrc);
		this.target.evalAttribute("style.border", this.downBorder);
		this.target.evalAttribute("style.color", this.downColor);
		this.target.evalAttribute("style.backgroundColor", this.downBackgroundColor);
	}
	this.onmouseup = function() {
		this.target.evalAttribute("style.width", this.downWidth, this.Fx(this.width));
		this.target.evalAttribute("style.height", this.downHeight, this.Fx(this.height));
		this.target.evalAttribute("src", this.downSrc, this.src);
		this.target.evalAttribute("style.border", this.downBorder, this.border);
		this.target.evalAttribute("style.color", this.downColor, this.color);
		this.target.evalAttribute("style.backgroundColor", this.downBackgroundColor, this.bgcolor);
	}
	
	this.target.aImgTool = this;
	this.target.onmouseover = function() {
		this.aImgTool.onmouseover();
	}
	this.target.onmouseout = function() {
		this.aImgTool.onmouseout();
	}
	this.target.onmousedown = function() {
		this.aImgTool.onmousedown();
	}
	this.target.onmouseup = function() {
		this.aImgTool.onmouseup();
	}
}

jp.rinco.ImgTool.prototype.Fx = function(v) {
	if (typeof(v) == "number")
		return v + "px";
	else
		return v;
}
jp.rinco.ImgTool.prototype.FxMulti = function(v, m) {
	if (typeof(v) == "number")
		return eval(v + "*" + m);
	var myReg = new RegExp("[0-9]+", "i");
	if (!myReg.test(v))
		return "error";

	var ret = eval(myReg.exec(v) + "*" + m);
	return RegExp.leftContext + ret + RegExp.rightContext;	
}
