if ( typeof(YougoLinkApi) == 'undefined' ) YougoLinkApi = function() {};
YougoLinkApi.yougolink = function (apiServerPath) {
	this.apiServerPath = apiServerPath
	this.openPopupDiv = null;
}

YougoLinkApi.yougolink.prototype.yougoWindowOpen = function(obj,id){
	if(yougoLinkApi_obj.openPopupDiv != null){
		yougoLinkApi_obj.yougoWindowClose(yougoLinkApi_obj.openPopupDiv.id);
	}
	var pos = yougoLinkApi_obj.pos();
	var objOffset = yougoLinkApi_obj.getOffset(obj);
	var elm = document.getElementById(id);
	var offsetY ,offsetX ,mode_bt,mode_lr;
	//calculate the layer position
	elm.style.visibility = "hidden";
	elm.style.display="block";

	var event=window.event;
	if(document.all){event.pageX=pos.scrollX+window.event.clientX;}
	if(document.all){event.pageY =pos.scrollY+window.event.clientY;}

	objOffset.offsetLeft = event.pageX;
	objOffset.offsetTop = event.pageY;

	if((objOffset.offsetLeft - pos.scrollX) <pos.winWidth/2){
		// mode l
		offsetX = objOffset.offsetLeft+10;
		mode_lr="left";
	}else{
		//mode r
		offsetX = objOffset.offsetLeft - parseInt(elm.offsetWidth) + 10;
		mode_lr="right";
	}

	if((objOffset.offsetTop-pos.scrollY) < pos.winHeight / 2 ){
		//mode t
		if(mode_lr == "left"){
			offsetY = objOffset.offsetTop ;
			offsetY -= 5;
		} else {
			offsetY = objOffset.offsetTop ;
			offsetY -= 10;
			offsetX -= 6;
		}
		mode_bt = "top";
	}else{
		//mode b
		if(mode_lr == "left"){
			offsetY = objOffset.offsetTop - elm.offsetHeight;
			offsetY += 10;
		} else {
			offsetY = objOffset.offsetTop - elm.offsetHeight ;
			offsetY -= 5;
			offsetX += 5;
		}
		mode_bt = "bottom";
	}


	elm.style.top  = parseInt(offsetY) + "px";
	elm.style.left=parseInt(offsetX) + "px";
	elm.style.display="block";
	elm.style.visibility = "visible";
	elm.style.position="absolute";
	elm.className = "box-word-01 " + mode_bt +"-"+ mode_lr;
	yougoLinkApi_obj.openPopupDiv = elm;
}
YougoLinkApi.yougolink.prototype.yougoWindowFix = function(obj){
	obj.style.display="block";
}
YougoLinkApi.yougolink.prototype.yougoApiInit = function(){
	var metatags = document.getElementsByTagName('meta');
	var strLastModifie ;
	if(typeof(document.lastModified)=='string'){
		strLastModifie = new Date(document.lastModified).toGMTString();
	} else {
		strLastModifie = new Date().toGMTString();
	}

	var findTarget = false;
	var lastTarget;
	for (var i = 1; i <= 10; i++) {
		var target = document.getElementById('yougoContents'+i);
		if(target != null){
			lastTarget = target;
			findTarget = true;
		}
	}
	var scriptLocation = yougoLinkApi_obj.apiServerPath;
	scriptLocation += '?url=';
	scriptLocation += encodeURIComponent(document.location.href);
	scriptLocation += '&upd=';
	scriptLocation += encodeURIComponent(strLastModifie);
	var s = document.createElement("script");
	s.src = scriptLocation;
	s.charset = "UTF-8";
	lastTarget.parentNode.insertBefore(s,lastTarget);

}

YougoLinkApi.yougolink.prototype.yougoWindowClose = function(id) {
    document.getElementById(id).style.display='none';
    yougoLinkApi_obj.openPopupDiv = null;
}

YougoLinkApi.yougolink.prototype.pos = function(){
	var yScroll;
	if (window.pageYOffset) {
		yScroll = window.pageYOffset;
	}else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		yScroll = document.documentElement.scrollTop || document.body.scrollTop;
	}
	var windowHeight;
	if (window.innerHeight) {// all except Explorer
		windowHeight = window.innerHeight;
	} else{ // Explorer 6 Strict Mode
		windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
	}
	var xScroll;
	if (window.pageXOffset) {
		xScroll = window.pageXOffset;
	}else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.documentElement.scrollLeft || document.body.scrollLeft;
	}
	var windowWidth;
	if (window.innerWidth) {// all except Explorer
		windowWidth = window.innerWidth;
	} else{ // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth || document.body.clientWidth;
	}

	return {scrollY:yScroll,scrollX:xScroll,winHeight:windowHeight,winWidth:windowWidth}
}

YougoLinkApi.yougolink.prototype.getOffset = function(elm) {
	var top = 0, left = 0,width = 0,height = 0;
	width=elm.offsetWidth;
	height=elm.offsetHeight;
	var element = elm;
	do {
		top += element.offsetTop  || 0;
		left += element.offsetLeft || 0;
		element = element.offsetParent;
	} while (element);
	return {offsetTop:top , offsetLeft:left , offsetWidth:width ,offsetHeight:height};
}

YougoLinkApi.yougolink.prototype.addListener = function (elm, type, func) {
	if(! elm) { return false; }
	if(elm.addEventListener) { /* W3C */
		elm.addEventListener(type, func, false);
	} else if(elm.attachEvent) { /* Internet Explorer */
		elm.attachEvent('on'+type, func);
	} else {
		return false;
	}
	return true;
}

var yougoLinkApi_obj = new YougoLinkApi.yougolink('http://search.nissay.sr.team-lab.com/yougolink/api');
yougoLinkApi_obj.addListener(window, "load", yougoLinkApi_obj.yougoApiInit);
if(window.addEventListener){//W3C
	window.addEventListener( "click", function(e){ window.event = e;},true);
}


