var obj = "";
var old = "";
var mod = "";
var sughtml = "";
var run = false;
var timecnt = 0;
var que = "";
var sug_true = false;
var sug_safe = false;
var sug_last = "";
var img_menu = new Array();
img_menu[0] = new Image();  img_menu[0].src = "img/menu/menu.png";
img_menu[1] = new Image();  img_menu[1].src = "img/menu/menu_active.png";
function InitSuggest(mode)
{
	mod = mode;
	obj = document.getElementById("word");
	Suggest();
}
var sugtimer = false;
var sugbreak = false;
function Suggest()
{
	timecnt ++;
	if (obj.value && obj.value != old && que != obj.value) {
		que = obj.value;
	} else {
		if (obj.value != old && que == obj.value && !run) {
			document.all.sug_wait.style.display = "block";
			timecnt = 0;
			SendRequest();
			old = obj.value;
		}
	}
	if (sug_last != obj.value) {
		document.getElementById("sug").style.display = "none";
	}
	sugtimer = setTimeout('Suggest()', 200);
}
function SuggestBreak()
{
	sugbreak = true;
	if (sugtimer) { clearTimeout(sugtimer); }
	document.getElementById("sug").style.display = "none";
	//document.getElementById("livemenu").style.display = "block";
}
function SendRequest()
{
	if (sugbreak) { return; }
	run = true;
	//sendRequest(finishSendRequest, "&sug=1&search="+mod+"&q="+obj.value, 'GET', "result.php", true, true);
	var ajax = new Ajax.Request("result.php", { method:'get', parameters: 'sug=1&search='+document.getElementById("search_val").value+'&q='+obj.value+'&t='+Math.floor(Math.random()*100), onComplete: finishSendRequest, requestHeaders: ['If-Modified-Since', '01 Jan 1970 00:00:00 GMT'] });

}
	function finishSendRequest(res)
	{
		if (sugbreak) { return; }
		var resdata = res.responseText;
		if (resdata) {
			var buffer = "";
			var cnt = 0;
			datas = resdata.split("<BR>");
			for (var i=0; i<datas.length; i++) {
				if (!datas[i]) break;
				cnt ++;
				if (cnt == 1) {
					sug_last = datas[i];
					if (sug_last != obj.value) { break; }
					continue;
				}
				entry = datas[i].split(",");
				title = entry[0];
				add   = entry[1];
				buffer += '<div id="'+cnt+'" class="sug_list" onclick="SuggestBreak();obj.value=\''+title+'\';document.sx.submit();" onmouseover="suggest_event(1, \''+cnt+'\')" onmouseout="suggest_event(0, \''+cnt+'\')">';
				buffer += '<TABLE border="0" width="100%"><TBODY><TR><TD id="title_'+cnt+'">'+title+'</TD><TD id="add_'+cnt+'" style="text-align : right;color : #005700;" nowrap>'+add+'</TD></TR></TBODY></TABLE>';
				buffer += '</div>';
			}
			if (sug_last == obj.value) {
				if (cnt > 1) {
					document.getElementById("sug").innerHTML = buffer;
					document.getElementById("sug").style.display = "block";
					//document.getElementById("livemenu").style.display = "none";
				}
			}
			if (cnt > 1) { sug_true = true; }
		}
		timecnt = 0;
		run = false;
		document.all.sug_wait.style.display = "none";
	}
function allreplace(from, to, msg)
{
	msg = msg.replace(""+from, ""+to);
	if (msg.indexOf(from) != -1) { msg = allreplace(from, to, msg); }
	return msg;
}
function suggest_event(flag, ef)
{
	if (flag) {
		sug_safe = true;
		document.getElementById(""+ef).style.backgroundColor='#fcdb41';
		document.getElementById("title_"+ef).style.color='#ffffff';
		document.getElementById("add_"+ef).style.color='#ffffff';
	} else {
		sug_safe = false;
		document.getElementById(""+ef).style.backgroundColor='#ffffff';
		document.getElementById("title_"+ef).style.color='#000000';
		document.getElementById("add_"+ef).style.color='#005700';
	}
}
function suggest_view(flag) {
	if (flag && sug_true) {
		timecnt = 0;
		document.getElementById("sug").style.display = "block";
		//document.getElementById("livemenu").style.display = "none";
	} else if (!sug_safe) {
		document.getElementById("sug").style.display = "none";
		//document.getElementById("livemenu").style.display = "block";
	}
}
function menumouse(inobj, flag){
	if (flag) { inobj.background = img_menu[1].src; } else { inobj.background = img_menu[0].src; }
}
//////////////////////////////////////
var HelpPickObj = false;
function ViewHelp(helpmsg, pickup) {
	if (pickup && HelpPickObj == pickup) { HideHelp(); return; }
	else if (HelpPickObj) { HideHelp(); }

	if (helpmsg) {
		document.all.HelpLayer.innerHTML = ""+helpmsg;
		document.all.HelpLayer.style.display = "block";
		var tmp = document.body.scrollTop+10;
		document.all.HelpLayer.style.top = ""+tmp+"px";
		if (pickup) {
			HelpPickObj = pickup;
			document.all[HelpPickObj].style.borderWidth = "1px 1px 1px 1px";
			document.all[HelpPickObj].style.borderStyle = "solid solid solid solid";
			document.all[HelpPickObj].style.borderColor = "red red red red";
		} else { HelpPickObj = false; }
	}
}

function HideHelp() {
	document.all.HelpLayer.style.display = "none";
	if (HelpPickObj) {
		document.all[HelpPickObj].style.borderWidth = "";
		document.all[HelpPickObj].style.borderStyle = "";
		document.all[HelpPickObj].style.borderColor = "";
	}
	HelpPickObj = false;
}

document.write('<DIV id="HelpLayer" onclick="HideHelp();" style="cursor : pointer;top : 10px;left : 10px;position : absolute;z-index : 1;display:none;background-color : #fcf5d6;padding : 3px;border-width : 1px;border-style : solid;border-color : #d9b453;width : 350px;font-size : 12px;line-height : 18px;letter-spacing : 1px;"></DIV>');
//////////////////////////////////////
function JoinMyList(uid, sv) {
	if (isJoinMyList(uid, sv) == false) {
		var cookie_mylist = cookie.get("cookie_mylist_"+sv);
		cookie_mylist = ""+cookie_mylist+""+uid+","
		cookie.set("cookie_mylist_"+sv, cookie_mylist);
	}
}
function DelMyList(uid, sv) {
	if (isJoinMyList(uid, sv) == true) {
		var cookie_mylist = cookie.get("cookie_mylist_"+sv);
		cookie_mylist = cookie_mylist.replace(""+uid+",", "");
		cookie.set("cookie_mylist_"+sv, cookie_mylist);
	}
}
function ClearMyList(sv) {
	cookie.set("cookie_mylist_"+sv, "");
}
function isJoinMyList(uid, sv) {
	var cookie_mylist = cookie.get("cookie_mylist_"+sv);
	if (cookie_mylist.indexOf(""+uid+",") != -1) { return true; } else { return false; }
}
//////////////////////////////////////
function HideSearchSelect(sv) {
	if (cookie.get("cookie_hide_"+sv)) {
		document.all.hideicon.src = "./img/hide_0.png";
		cookie.set("cookie_hide_"+sv, "");
	} else {
		document.all.hideicon.src = "./img/hide_1.png";
		cookie.set("cookie_hide_"+sv, "1");
	}
}
//////////////////////////////////////
var cookie = {};
cookie.get = function(name) {
    var regexp = new RegExp('; ' + name + '=(.*?);');
    var match  = ('; ' + document.cookie + ';').match(regexp);
    return match ? decodeURIComponent(match[1]) : '';
}
cookie.set = function(name, value) {
    var buf = name + '=' + encodeURIComponent(value);
    document.cookie = buf + '; expires=Mon, 31-Dec-2029 23:59:59 GMT';
}
function in_array(target, arrays) {
	for (var i=0; i<arrays.length; i++) { if (arrays[i] == target) { return true; } }
	return false;
}
function replace_all(source, before, after) {
	if (!source) return false;
	for (;;) {
		getnum = source.indexOf(before);
		if (getnum == -1) { break; }
		source = source.replace(before, after);
	}
	return source;
}
function jstrlen(str, len, i) {
	len = 0;
	str = escape(str);
	for (i = 0; i < str.length; i++, len++) {
		if (str.charAt(i) == "%") {
			if (str.charAt(++i) == "u") {
				i += 3;
				len++;
			}
			i++;
		}
	}
	return len;
}
//////////////////////////////////////
utf = new function() {
    this.unpackUTF16 = function(_str) {
        var i, utf16=[];
        for (i=0; i<_str.length; i++) utf16[i] = _str.charCodeAt(i);
        return utf16;
    }
    this.unpackChar = function(_str) {
    	var utf16 = this.unpackUTF16(_str);
    	var i,n, tmp = [];
    	for (n=i=0; i<utf16.length; i++) {
    		if (utf16[i]<=0xff) tmp[n++] = utf16[i];
    		else {
    			tmp[n++] = utf16[i] >> 8;
    			tmp[n++] = utf16[i] &  0xff;
    		}	
    	}
    	return tmp;
    }
    this.packChar  =
    this.packUTF16 = function(_utf16) {
        var i, str = "";
	for (var i=0; i<_utf16.length; i++) { str += String.fromCharCode(_utf16[i]); }
        return str;
    }
    this.unpackUTF8 = function(_str) {
       return this.toUTF8( this.unpackUTF16(_str) );
    }
    this.packUTF8 = function(_utf8) {
        return this.packUTF16( this.toUTF16(_utf8) );
    }
    this.toUTF8 = function(_utf16) {
        var utf8 = [];
        var idx = 0;
        var i, j, c;
        for (i=0; i<_utf16.length; i++)
        {
            c = _utf16[i];
            if (c <= 0x7f) utf8[idx++] = c;
            else if (c <= 0x7ff)
            {
                utf8[idx++] = 0xc0 | (c >>> 6 );
                utf8[idx++] = 0x80 | (c & 0x3f);
            }
            else if (c <= 0xffff)
            {
                utf8[idx++] = 0xe0 | (c >>> 12 );
                utf8[idx++] = 0x80 | ((c >>> 6 ) & 0x3f);
                utf8[idx++] = 0x80 | (c & 0x3f);
            }
            else
            {
                j = 4;
                while (c >> (6*j)) j++;
                utf8[idx++] = ((0xff00 >>> j) & 0xff) | (c >>> (6*--j) );
                while (j--) 
                utf8[idx++] = 0x80 | ((c >>> (6*j)) & 0x3f);
            }
        }
        return utf8;
    }
    this.toUTF16 = function(_utf8) {
        var utf16 = [];
        var idx = 0;
        var i,s;
        for (i=0; i<_utf8.length; i++, idx++)
        {
            if (_utf8[i] <= 0x7f) utf16[idx] = _utf8[i];
            else 
            {
                if ( (_utf8[i]>>5) == 0x6)
                {
                    utf16[idx] = ( (_utf8[i] & 0x1f) << 6 )
                                 | ( _utf8[++i] & 0x3f );
                }
                else if ( (_utf8[i]>>4) == 0xe)
                {
                    utf16[idx] = ( (_utf8[i] & 0xf) << 12 )
                                 | ( (_utf8[++i] & 0x3f) << 6 )
                                 | ( _utf8[++i] & 0x3f );
                }
                else
                {
                    s = 1;
                    while (_utf8[i] & (0x20 >>> s) ) s++;
                    utf16[idx] = _utf8[i] & (0x1f >>> s);
                    while (s-->=0) utf16[idx] = (utf16[idx] << 6) ^ (_utf8[++i] & 0x3f);
                }
            }
        }
        return utf16;
    }
    this.URLencode = function(_str) {
        return _str.replace(/([^a-zA-Z0-9_\-\.])/g, function(_tmp, _c)
            { 
                if (_c == "\x20") return "+";
                var tmp = utf.toUTF8( [_c.charCodeAt(0)] );
                var c = "";
		for (var i=0; i<tmp.length; i++)
                {
                    i = tmp[i].toString(16);
                    if (i.length == 1) i = "0"+ i;
                    c += "%"+ i;
                }
                return c;
            } );
    }
    this.URLdecode = function(_dat) {
        _dat = _dat.replace(/\+/g, "\x20");
        _dat = _dat.replace( /%([a-fA-F0-9][a-fA-F0-9])/g, 
                function(_tmp, _hex){ return String.fromCharCode( parseInt(_hex, 16) ) } );
        return this.packChar( this.toUTF16( this.unpackUTF16(_dat) ) );
    }
}

