/**
 * HyLS
 * Peter, Chen
 * www.hyweb.com.tw
 * Hyweb Technology Co., Ltd. (c) 2009 All Rights Reserved.
 */
var HyLS = {};

HyLS.URL = "http://eservice.dwins.com/eservice/";
HyLS.ClientID = "";
HyLS.Version = "1.0.0";

HyLS.Settings = {
	serviceURI: HyLS.URL + "serviceStart.jsp",
	serviceInfoURI: HyLS.URL + "serviceInfo",
	serviceIconURI: HyLS.URL + "images/",
	charset: "",
	width: 150,
	marginTop: 80,
	marginLeft: "auto",
	marginRight: "20px",
	backgroundColor: "#FFFFFF",
	border: "1px solid #336699",
	fontSize: "12px",
	titleText: ":::: \u5ba2\u670d\u901a - \u5373\u6642\u5ba2\u670d ::::",
	footText: "Powered by HyWeb",
	titleStyle: "text-align:center; color:#FFFFFF; background:#336699; margin:1px; height:20px; font-size:12px;",
	footStyle: "text-align:center; color:#A1A1A1; background:#F1F1F1; margin-top:4px; font-size:10px; font-family: Arial;",
	showFoot: true,
	holderID: "",
	maxHistroy: 6
};

HyLS._MenuHandler = function(list){
	var st = HyLS.Settings;
	
	var targetElm;
	if(st.holderID==""){
		targetElm = document.getElementsByTagName("body")[0];
	}else{
		targetElm = document.getElementById(st.holderID);
	}
	
	var container = document.createElement("div");
	container.id = HyLS.ClientID;
	container.style.width = st.width + "px";
	container.style.margin = "0";
	container.style.border = st.border;
	container.style.backgroundColor = st.backgroundColor;
	if(st.holderID == ""){ //fixed position
		var posY = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
		container.style.top = (st.marginTop + posY) + "px";
		container.style.position = "absolute";
		container.style.right = st.marginRight;
		container.style.left = st.marginLeft;
	}
	
	var html = new Array();
	html.push('<div style="' + st.titleStyle + '">' + st.titleText + '</div>');
	html.push('<table style="font-size:' + st.fontSize + '; margin:2px; width:' + (st.width-5) + 'px">');
	for(var i=0; i<list.length; i++){
		var serv = list[i];
		var link = '<a href="#" style="color:#ff0000;font-size:12px;" onclick="javascript:HyLS.OpenLSService(\'' + serv.id + '\')">' + (serv.status=='off' ? '\u7559\u8a00' : '\u8a62\u554f') + '</a>';
		var icon = '<img src="' + st.serviceIconURI + (serv.status=="off" ? "user-offline.png" : "user-online.png") + '"/>';
		html.push('<tr>');
		html.push('<td>' + icon + '&nbsp;' + serv.name + '&nbsp;[' + link + ']</td>');
		//html.push('<td align="left" width="63%">' + serv.name + '</td>');
		//html.push('<td align="right" width="37%">[ ' + link + ' ]</td>');
		html.push('</tr>');
	}
	html.push("</table>");
	if(st.showFoot){
		html.push('<div style="' + st.footStyle + '">' + st.footText + '</div>');
	}
	
	container.innerHTML = html.join("");
	targetElm.appendChild(container);
}

HyLS.ShowServiceMenu = function(){
	HyLS._Request("clientID=" + HyLS.ClientID + "&charset=" + HyLS.Settings.charset + "&handler=HyLS._MenuHandler");
};

HyLS._Request = function(params){
	var script_id = null;
	var script = document.createElement('script');
	script.setAttribute('type', 'text/javascript');
	script.setAttribute('src', HyLS.Settings.serviceInfoURI + "?" + params);
	script.setAttribute('id', 'script_id');
	script_id = document.getElementById('script_id');
	if(script_id){
		document.getElementsByTagName('head')[0].removeChild(script_id);
	}
	document.getElementsByTagName('head')[0].appendChild(script);
};

HyLS.GetService = function(sid, handlerName) {
	HyLS._Request("clientID=" + HyLS.ClientID + "&charset=" + HyLS.Settings.charset + "&SID=" + sid + "&handler=" + handlerName);
};

HyLS.OnScroll = function(evt){
	var container = document.getElementById(HyLS.ClientID);
	if(container && HyLS.Settings.holderID == ""){
		var moveTo = ( document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
		container.style.top = (HyLS.Settings.marginTop + moveTo) + "px";
	}
};

HyLS.OpenLSService = function(sid){
    var theURL = HyLS.Settings.serviceURI + "?SID=" + sid + "&viewMode=blank";
    var myWidth = 560, myHeight = 460;
    if(window.screen){
        var myLeft = (screen.width-myWidth)/2;
        var myTop = (screen.height-myHeight)/2;
    }
    var t = window.open(theURL, "LSService", "toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=" + myWidth + ",height="+ myHeight + ",left=" + myLeft + ",top=" + myTop);
	t.focus();
};

HyLS.GetCookie = function(name) {
	function getCookieVal (offset) {
		var endstr = document.cookie.indexOf (";", offset);
		if (endstr == -1){
			endstr = document.cookie.length;
		}
		return unescape(document.cookie.substring(offset, endstr));
	}
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg){
			return getCookieVal(j);
		}
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0){
			break;
		}
	}
	return null;
};

HyLS.OnClickTrack = function (ev){

	function setCookie(name, value) {
		var exp = new Date();
		exp.setTime(exp.getTime() + 3600000000);
		document.cookie = name + "=" + value + "; expires=" + exp.toGMTString();
    }

	function encodeCookie(str) {
		var strRtn="";
		for (var i=str.length-1; i>=0; i--) {
			strRtn += str.charCodeAt(i);
			if (i) {
				strRtn += "a";
			}
		}
		return strRtn;
	}

	var evt = ev ? ev : window.event;
	var srcElem = (evt.target) ? evt.target : evt.srcElement;
	try {
		while(srcElem.parentNode && srcElem!=srcElem.parentNode) {
			if(srcElem.tagName && srcElem.tagName.toUpperCase()=="A") {
				var linkname = escape(encodeCookie(srcElem.innerHTML));

				if(srcElem.href.indexOf("#")>-1 || srcElem.href.indexOf("javascript")>-1){
					break;
				}

				var address = srcElem.href + "|@@|";
				var wlink = linkname + "+" + address;

				var hisLink = "";
				var cookieInfo = HyLS.GetCookie("HyLSHistoryInfo");

				var insert = true;
				if(cookieInfo==null) {
					insert = true;
				} else {
					var hisLinkArr = cookieInfo.split("|@@|");
					for(var i=0; i<HyLS.Settings.maxHistroy; i++) {
						if(hisLinkArr[i]){
							var hisLinkName = hisLinkArr[i];
							if(hisLinkName.indexOf(linkname)!=-1) {
								insert = false;
								hisLink = "";
								break;
							}
						    hisLink += hisLinkArr[i] + "|@@|";
						}
					}
				}
				if(insert) {
					if(cookieInfo){
						wlink += hisLink;
					}
					setCookie("HyLSHistoryInfo", wlink);
					break;
				}
			}
			srcElem = srcElem.parentNode;
		}
	} catch(e){
		alert(e);
	}
	return true;
};

HyLS.GetTrackLogs = function() {
	function decodeCookie(str) {
		var strArr;
		var strRtn="";
		strArr = str.split("a");
		for (var i=strArr.length-1; i>=0; i--) {
			strRtn += String.fromCharCode(eval(strArr[i]));
		}
		return strRtn;
	} 

	var content = "";
	try{
		var cookieInfo = HyLS.GetCookie("HyLSHistoryInfo");
		if(cookieInfo!=null) {
			var hisArr = cookieInfo.split("|@@|");
			for(var i=0; i<hisArr.length; i++) {
				if(hisArr[i]!=null) {
					if(hisArr[i]){
						var wlink = hisArr[i].split("+");
						content += (decodeCookie(wlink[0]) + " : " + wlink[1] + "<br/>");
					}
				}
			}
		}
	}catch(e){
		alert(e);
	}

	function escapeXml(text){
		text = text.replace(/</g, '&lt;');
		text = text.replace(/>/g, '&gt;');
		text = text.replace(/\+/g, '#plus');
		text = text.replace(/%/g, '#percent');
		text = text.replace(/&/g, 'бо');
		return text;
	}

	return escapeXml(content);
};
