﻿//////////////////////////////////////////////////////////////
// utility.js
//
// David Yang (prowyh@hotmail.com)
// Levensoft Co., Ltd. (www.levensoft.com)
//
// Copyright (C) 2007.4.3
//////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////
// register namespace
// this is a global function !!!
function registerNamespace()
{
	for (var d = 0; d < arguments.length; d++)
	{
		var b = arguments[d].split(".");
		var c = window;
		for (var a = 0; a < b.length; a++)
		{
			if (!c[b[a]]) c[b[a]] = {};
			c = c[b[a]];
		}
	}
}

//////////////////////////////////////////////////////////////
// Utility object constructor
registerNamespace("Levensoft.JS");

Levensoft.JS.Utility = function(){};


var __aryCtrlList = null;
var __tvar = null;
var __EventHandlerStack = null;
//////////////////////////////////////////////////////////////
// private functions

Levensoft.JS.Utility.prototype.getXmlDocument = function()
{
	return new ActiveXObject("Microsoft.XMLDOM");
};
Levensoft.JS.Utility.prototype.loadScript = function(url)
{
	document.write( '<scr' + 'ipt type="text/javascript" src="' + url + '"><\/scr' + 'ipt>' ) ;
};
Levensoft.JS.Utility.prototype.setOpacity = function(element, opacity)
{
	if ( isIE )
	{
		opacity = Math.round( opacity * 100 ) ;
		element.style.filter = ( opacity > 100 ? '' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')' ) ;
	}
	else
	{
		element.style.opacity = opacity ;
	}
};
Levensoft.JS.Utility.prototype.scrollToTop = function()
{
	window.scrollBy(0, -9999999);
};

Levensoft.JS.Utility.prototype.validateEmailAddress = function(sEml)
{
	var bOK = true;
	var objRegExp  = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9]{1,}[a-z0-9_\-\.]*)(\.[a-z]{2,4}(\.[a-z]{2}){0,2})$/i;

	// trim the end ';' character
	if (sEml.charAt(sEml.length-1) == ";") {
		sEml = sEml.substr(0, sEml.length-1);
	}

	sEml = sEml.replace(/\s/g, "");
	var aEml = sEml.split(";");
	for (var i = 0; i < aEml.length; i++) {
		var eml = aEml[i];
		
		if (eml.indexOf('<') >= 0) {
			eml = eml.substring(eml.indexOf('<') + 1, eml.length-1);
		}
		if (eml.indexOf('>') > 0) {
			eml = eml.substring(0, eml.indexOf('>') - 1);
		}
		bOK = objRegExp.test(eml);
		if (!bOK) {
			break;
		}
	}
	return bOK;
};

Levensoft.JS.Utility.prototype.validateDate = function(sDate)
{
	var bOk = true;
	var objRegExp = /[^0]{1}[0-9]{3}-[0-1]{1}[0-9]{1}-[0-3]{1}[0-9]{1}/;
	if (sDate.length > 0) bOk = objRegExp.test(sDate);
	
	return bOk;
};

Levensoft.JS.Utility.prototype.getRandomString = function()
{
	var _str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	var _string = "";
	var _len = arguments.length == 0 ? 6 : arguments[0];
	for (var i = 0; i < _len; i++)
	{
		_string += _str.substr(parseInt(Math.random() * _str.length), 1);
	}
	
	return _string;
};

Levensoft.JS.Utility.prototype.htmlEncode = function(str)
{
	var _str = str;
	
	if (_str && _str.length > 0)
	{
	    _str = _str.replace(/\<\!\[CDATA\[/g, "__CDATA_BEGIN__").replace(/\]\]\>/g, "__CDATA_END__");
		_str = _str.replace(/\&/g, "&amp;");
		_str = _str.replace(/</g, "&lt;");
		_str = _str.replace(/>/g, "&gt;");
		_str = _str.replace(/\"/g, "&quot;");
		_str = _str.replace(/\'/g, "&#39;");
	}
	
	return _str;
};

Levensoft.JS.Utility.prototype.htmlDecode = function(str)
{
	var _str = str;
	
	if (_str && _str.length > 0)
	{
		_str = _str.replace(/\&\l\t\;/g, "<");
		_str = _str.replace(/\&\g\t\;/g, ">");
	}
	
	return _str;
};

Levensoft.JS.Utility.prototype.registerControlList = function(sCtrlList)
{
	__aryCtrlList = sCtrlList.split(";");
};
Levensoft.JS.Utility.unregisterControlList = function()
{
	__aryCtrlList = null;
};

Levensoft.JS.Utility.prototype.openMessaging = function(message)
{
	var divLoadingMessage = document.getElementById("divLoadingMessage");
	var divLoadingMessageText = document.getElementById("divLoadingMessageText");
	
	if (divLoadingMessage)
	{
	    divLoadingMessageText.innerHTML = message;
	    
	    divLoadingMessage.style.top = document.body.scrollTop;
		divLoadingMessage.style.left = (arguments.length > 1 && arguments[1] == true) ? 134 : 0;

		divLoadingMessage.firstChild.style.display = "";
		divLoadingMessage.style.display = "";
		try
		{
			divLoadingMessage.setActive();
		}
		catch (e) {}
	}

	if (__aryCtrlList != null)
	{
		for (var i = 0; i < __aryCtrlList.length; i++)
		{
			this.disableButton(__aryCtrlList[i]);
		}
	}
};

Levensoft.JS.Utility.prototype.closeMessaging = function()
{
	if (__tvar != null)
	{
		clearInterval(__tvar);
		__tvar = null;
	}
	
	var divLoadingMessage = document.getElementById("divLoadingMessage");
	if (divLoadingMessage)
	{
		divLoadingMessage.firstChild.style.display = "none";
		divLoadingMessage.style.display = "none";
	}

    if (__aryCtrlList != null)
    {
		for (var i = 0; i < __aryCtrlList.length; i++)
		{
			util.enableButton(__aryCtrlList[i]);
		}
	}
};

Levensoft.JS.Utility.prototype.errorMessaging = function(message)
{
	var divLoadingMessage = document.getElementById("divLoadingMessage");
	var divLoadingMessageText = document.getElementById('divLoadingMessageText');
	
	if (divLoadingMessage) {
	    divLoadingMessageText.innerHTML = message;
	    
	    divLoadingMessage.style.top = document.body.scrollTop;
	    divLoadingMessage.style.left = (arguments.length > 1 && arguments[1] == true) ? 134 : 0;

		divLoadingMessage.firstChild.style.display = "none";
		divLoadingMessage.style.display = "";
		try
		{
			divLoadingMessage.setActive();
		}
		catch (e) {}
	}
	
	if (__tvar != null)
	{
		clearInterval(__tvar);
		__tvar = null;
	}
	__tvar = setInterval(this.closeMessaging, 2000);
};

Levensoft.JS.Utility.prototype.enableButton = function(btnID)
{
    if (typeof(btnID) == "object")
    {
        if (btnID) btnID.disabled = false;
    }
    else if (typeof(btnID) == "string")
    {
	    var btnColl = document.getElementsByName(btnID);
	    for (var i = 0; i < btnColl.length; i++)
	    {
		    if (btnColl[i]) btnColl[i].disabled = false;
	    }
    }
};

Levensoft.JS.Utility.prototype.disableButton = function(btnID)
{
    if (typeof(btnID) == "object")
    {
        if (btnID) btnID.disabled = true;
    }
    else if (typeof(btnID) == "string")
    {
	    var btnColl = document.getElementsByName(btnID);
	    for (var i = 0; i < btnColl.length; i++)
	    {
		    if (btnColl[i]) btnColl[i].disabled = true;
	    }
    }
};

Levensoft.JS.Utility.prototype.fillOptionList = function(oNode, oList)
{
	for (var i = oList.options.length - 1; i >= 0; i--)
	{
		oList.remove(i);
	}

	var aryMember = oNode.text.split(";");
	for (var i = 0; i < aryMember.length; i++)
	{
		if (aryMember[i].length > 0)
		{
			var opt = document.createElement("OPTION");
			var aryPair = aryMember[i].split(":");
			opt.value = aryPair[0];
			opt.innerText = aryPair[1];
			oList.appendChild(opt);
		}
	}
};

Levensoft.JS.Utility.prototype.getFileName = function(url)
{
	var aryComponent = url.split("/");
	return aryComponent[aryComponent.length - 1];
};

Levensoft.JS.Utility.prototype.attachUnloadEventHandler = function(evtHandler)
{
	if (__EventHandlerStack == null) __EventHandlerStack = new Stack();
	__EventHandlerStack.push(evtHandler);
};

function __executeUnloadEventHandler()
{
	if (__EventHandlerStack == null) return;
	
	while (!__EventHandlerStack.isEmpty())
	{
		var proc = __EventHandlerStack.pop();
		if (typeof(proc) == "function")
		{
		    proc();
        }
        else if (typeof(proc) == "string")
        {
		    try { eval(proc); } catch (e) {}
        }
	}

	__EventHandlerStack = null;
	util = null;
	__aryCtrlList = null;
	if (__tvar != null)
	{
		clearInterval(__tvar);
		__tvar = null;
	}
	
}

//////////////////////////////////////////////////////////////
// Utility instantiation

var util = new Levensoft.JS.Utility();

window.onunload = __executeUnloadEventHandler;

//////////////////////////////////////////////////////////////
// pagingbar utilities
//
// related js utilities
// EventUtil.js
//////////////////////////////////////////////////////////////
Levensoft.JS.Pager = function(pagingbarID)
{
	this.pagingbarID = (arguments > 0) ? pagingbarID : "pagingbar";
};

Levensoft.JS.Pager.prototype.MouseOver = function()
{
	var oEvent = EventUtil.getEvent();
	if (oEvent)
	{
		var target = oEvent.target;
		var xColor = target.getAttribute("hbcolor");
		target.style.backgroundColor = xColor;
		xColor = target.getAttribute("hfcolor");
		target.style.color = xColor;
	}
};

Levensoft.JS.Pager.prototype.MouseOut = function()
{
	var oEvent = EventUtil.getEvent();
	if (oEvent)
	{
		var target = oEvent.target;
		var xColor = target.getAttribute("bcolor");
		target.style.backgroundColor = xColor;
		xColor = target.getAttribute("lcolor");
		target.style.color = xColor;
	}
};

Levensoft.JS.Pager.prototype.Head = function(wid)
{
	var pagingbar = document.getElementById("PAGINGBAR_" + wid);
	if (!pagingbar) return;
	
	var cpn = 1;
	pagingbar.setAttribute("CPN", cpn);
	
	var callback = pagingbar.getAttribute("CALLBACK");
	if (callback == null || typeof(callback) == "undefined")
	{
	    callback = pagingbar.getAttribute("LISTING");
        try { eval(callback + "_gotoPage(" + cpn + ")"); } catch (e) { }
	}
	else
	{
	    window.execScript(pager.__buildCallback(callback, cpn, wid));
    }
};

Levensoft.JS.Pager.prototype.Prev = function(wid)
{
	var pagingbar = document.getElementById("PAGINGBAR_" + wid);
	if (!pagingbar) return;
	
	var cpn = parseInt(pagingbar.getAttribute("CPN"));
	cpn -= 10;
	if (cpn <= 0) cpn = 1
	
	pagingbar.setAttribute("CPN", cpn);
	
	var callback = pagingbar.getAttribute("CALLBACK");
	if (callback == null || typeof(callback) == "undefined")
	{
	    callback = pagingbar.getAttribute("LISTING");
        try { eval(callback + "_gotoPage(" + cpn + ")"); } catch (e) { }
	}
	else
	{
	    window.execScript(pager.__buildCallback(callback, cpn, wid));
    }
};

Levensoft.JS.Pager.prototype.Go = function(page, wid)
{
	var pagingbar = document.getElementById("PAGINGBAR_" + wid);
	if (!pagingbar) return;
	
	pagingbar.setAttribute("CPN", page);
	
	var callback = pagingbar.getAttribute("CALLBACK");
	if (callback == null || typeof(callback) == "undefined")
	{
	    callback = pagingbar.getAttribute("LISTING");
        try { eval(callback + "_gotoPage(" + page + ")"); } catch (e) { }
	}
	else
	{
	    window.execScript(pager.__buildCallback(callback, page, wid));
    }
};

Levensoft.JS.Pager.prototype.Next = function(wid)
{
	var pagingbar = document.getElementById("PAGINGBAR_" + wid);
	if (!pagingbar) return;
	
	var pages = parseInt(pagingbar.getAttribute("PAGES"));
	var cpn = parseInt(pagingbar.getAttribute("CPN"));
	cpn += 10;
	if (cpn > pages)
	{
		cpn = pages;
	}
	
	pagingbar.setAttribute("CPN", cpn);

	var callback = pagingbar.getAttribute("CALLBACK");
	if (callback == null || typeof(callback) == "undefined")
	{
	    callback = pagingbar.getAttribute("LISTING");
        try { eval(callback + "_gotoPage(" + cpn + ")"); } catch (e) { }
	}
	else
	{
	    window.execScript(pager.__buildCallback(callback, cpn, wid));
    }
};

Levensoft.JS.Pager.prototype.Tail = function(wid)
{
	var pagingbar = document.getElementById("PAGINGBAR_" + wid);
	if (!pagingbar) return;
	
	var pages = parseInt(pagingbar.getAttribute("PAGES"));
	var cpn = pages;

    pagingbar.setAttribute("CPN", cpn);
    
	var callback = pagingbar.getAttribute("CALLBACK");
	if (callback == null || typeof(callback) == "undefined")
	{
	    callback = pagingbar.getAttribute("LISTING");
        try { eval(callback + "_gotoPage(" + cpn + ")"); } catch (e) { }
	}
	else
	{
	    window.execScript(pager.__buildCallback(callback, cpn, wid));
    }
};

Levensoft.JS.Pager.prototype.__buildCallback = function(callback, page, wid)
{
	if (callback.indexOf("(") > 0)
	{
		var a = callback.split("(");
		callback = a[0];
		if (a.length > 1 && a[1].length > 1)
		{
		    callback += "(" + a[1].replace(/\)/, "") + "," + page + "," + wid + ")";
        }
        else
        {
            callback += "(" + page + "," + wid + ")";
        }
	}
	else
	{
		callback += "(" + page + "," + wid + ")";
	}

    return callback;
};

var pager = new Levensoft.JS.Pager();

//////////////////////////////////////////////////////////////
// form
Levensoft.JS.Form = function (formObject) { this.formObject = formObject; };
Levensoft.JS.Form.prototype.setNamedItem = function()
{
    if (this.formObject == null) return;
    if (arguments.length < 2) return;
    
    var _ok = false;
    var _fLen = this.formObject.length;
    for (var i = 0; i < _fLen; i++)
    {
        var fObj = this.formObject[i];
        var fObjName = (typeof(fObj.name) == "undefined" || fObj.name == "") ? fObj.id : fObj.name;
        if (fObjName == arguments[0])
        {
		    var fObjType = "";
		    try
		    {
		        fObjType = fObj.type.toUpperCase();
		    }
		    catch (e) {}
		    
		    if (fObjType == "SELECT-ONE")
		    {
		        for (var k = 0; k < fObj.options.length; k++)
		        {
		            if (fObj.options[k].value == arguments[1])
		            {
		                fObj.selectedIndex = k;
                        break;
                    }
                }
		    }
		    else if (fObjType == "CHECKBOX")
		    {
		        fObj.checked = arguments[1];
		    }
		    else
		    {
                fObj.value = arguments[1];
            }
            if (arguments.length == 3 && fObjType != "HIDDEN")
            {
                fObj.disabled = arguments[2];
            }
            
            _ok = true;
            break;
        }
    }
    
    if (!_ok)
    {
        var o = document.createElement("<INPUT type=\"hidden\" name=\"" + arguments[0] + "\" />");
//        o.type = "hidden";
//        o.setAttribute("name", arguments[0]);
        o.setAttribute("id", arguments[0]);
        o.setAttribute("value", arguments[1]);

        this.formObject.appendChild(o);
    }
};
Levensoft.JS.Form.prototype.toXML = function()
{
	if (this.formObject == null) return null;
	if (arguments.length < 1) return null;
	
	var sXML = new StringBuilder();
	var tag = arguments[0];
	var idName = null;
	var idValue = null;
	switch (arguments.length)
	{
	    case 3:
	        idName = arguments[1];
	        idValue = arguments[2];
	        break;
        case 2:
            idName = "id";
            idValue = arguments[1];
            break;
    }
	
	sXML.appendFormat("<{0}>\r\n", tag);
	var _fLen = this.formObject.length;
	var __idOk = false;
	for (var i = 0; i < _fLen; i++)
	{
		var fObj = this.formObject[i];
		var fObjType = "";
		try
		{
		    fObjType = fObj.type.toUpperCase();
		}
		catch (e) {}
		if (fObjType == "") continue;
		
		var fObjName = (typeof(fObj.name) == "undefined" || fObj.name == "") ? fObj.id : fObj.name;
		var fObjValue = fObj.value;
        if (fObjName == "") continue;
        
        if (fObjType == "HIDDEN")
        {
            if ((fObjName.indexOf("_id") > 0 || fObjName == "id") && idName == fObjName)
            {
                sXML.appendFormat("<{0}><![CDATA[{1}]]></{2}>\r\n", idName, idValue, idName);
                __idOk = true;
            }
            else
            {
                sXML.appendFormat("<{0}><![CDATA[{1}]]></{2}>\r\n", fObjName, fObjValue, fObjName);
            }
        }
		else if (fObjType == "TEXT" || fObjType == "SELECT-ONE" || fObjType == "TEXTAREA")
		{
			sXML.appendFormat("<{0}><![CDATA[{1}]]></{2}>\r\n", fObjName, fObjValue, fObjName);
		}
		else if (fObjType == "PASSWORD")
		{
		    sXML.appendFormat("<{0}><![CDATA[{1}]]></{2}>\r\n", fObjName, hex_md5(fObjValue), fObjName);
		}
		else if (fObjType == "RADIO" && fObj.checked == true)
		{
			sXML.appendFormat("<{0}>{1}</{2}>\r\n", fObjName, fObjValue, fObjName);
		}
		else if (fObjType == "CHECKBOX")
		{
			sXML.appendFormat("<{0}>{1}</{2}>\r\n", fObjName, fObj.checked == true ? "true" : "false", fObjName);
		}
	}
	if (idName != null && !__idOk) sXML.appendFormat("<{0}><![CDATA[{1}]]></{2}>\r\n", idName, idValue, idName);
	
	sXML.appendFormat("</{0}>", tag);
	
	return sXML.toString();
};
Levensoft.JS.Form.prototype.queryParams = function()
{
	if (this.formObject == null) return null;

    var rootElement = this.formObject.id;
	var sXML = new StringBuilder();
	sXML.appendFormat("<{0}>\r\n", rootElement);
	var _fLen = this.formObject.length;
	for (var i = 0; i < _fLen; i++)
	{
		var fObj = this.formObject[i];
		var fObjType = "";
		try
		{
		    fObjType = fObj.type.toUpperCase();
		}
		catch (e) {}
		if (fObjType == "") continue;
		
		var fObjName = (typeof(fObj.name) == "undefined" || fObj.name == "") ? fObj.id : fObj.name;
		var fObjValue = fObj.value;
		
		if (fObj.getAttribute("query") == "1" && !sXML.contains("<" + fObjName + ">"))
		{
		    if (fObjType == "TEXT" || fObjType == "HIDDEN" || fObjType == "PASSWORD" || fObjType == "SELECT-ONE" || fObjType == "TEXTAREA")
		    {
			    sXML.appendFormat("<{0}><![CDATA[{1}]]></{2}>\r\n", fObjName, fObjValue, fObjName);
		    }
		    else if (fObjType == "RADIO" && fObj.checked == true)
		    {
			    sXML.appendFormat("<{0}>{1}</{2}>\r\n", fObjName, fObjValue, fObjName);
		    }
		    else if (fObjType == "CHECKBOX")
		    {
			    sXML.appendFormat("<{0}>{1}</{2}>\r\n", fObjName, fObj.checked == true ? "true" : "false", fObjName);
		    }
        }
	}
	sXML.appendFormat("</{0}>", rootElement);
	
	return sXML.toString();
};
Levensoft.JS.Form.prototype.clear = function()
{
    if (this.formObject == null) return;
    
    var _fLen = this.formObject.length;
    for (var i = 0; i < _fLen; i++)
    {
		var fObj = this.formObject[i];
		var fObjType = "";
		try
		{
		    fObjType = fObj.type.toUpperCase();
		}
		catch (e) {}
		if (fObjType == "") continue;
		
		if (fObjType == "TEXT" || fObjType == "PASSWORD" || fObjType == "TEXTAREA")
		{
			fObj.value = "";
		}
		else if (fObjType == "RADIO" || fObjType == "CHECKBOX")
		{
			fObj.checked = false;
		}
		else if (fObjType == "SELECT-ONE")
		{
			fObj.selectedIndex = 0;
		}
		//fObj.disabled = false;
    }
};
Levensoft.JS.Form.prototype.setButton = function(button, state)
{
	if (this.formObject == null) return;
	
	try
	{
		var btn = eval("this.formObject." + button);
		if (state == "disabled" || state == "false")
		{
			btn.disabled = true;
		}
		else
		{
			btn.disabled = false;
		}
	}
	catch (e) {}
};

//////////////////////////////////////////////////////////////
// StringBuilder
function StringBuilder()
{
	this._strings = new Array();
}
StringBuilder.prototype.append = function (str)
{
	var aLen = arguments.length;
	for (var i = 0; i < aLen; i++)
	{
		this._strings[this._strings.length] = arguments[i];
	}
};
StringBuilder.prototype.appendFormat = function (fmt)
{
	var re = /{[0-9]+}/g;
	var aryMatch = fmt.match(re);
	var aLen = aryMatch.length;

	for (var i = 0; i < aLen; i++)
	{
		fmt = fmt.replace(aryMatch[i], arguments[parseInt(aryMatch[i].replace(/[{}]/g, "")) + 1]);
	}

	this._strings[this._strings.length] = fmt;
};
StringBuilder.prototype.contains = function(str)
{
    for (var i = 0; i < this._strings.length; i++)
    {
        if (this._strings[i].indexOf(str) >= 0) return true;
    }
    
    return false;
}
StringBuilder.prototype.toString = function ()
{
	return this._strings.join("");
};

//////////////////////////////////////////////////////////////
// XML builder
function XmlBuilder()
{
    this.__strings = new StringBuilder();
}
XmlBuilder.prototype.createStartElement = function(se)
{
    this.__strings.append("<", se, ">");
    this.__startElement = se;
}
XmlBuilder.prototype.createElement = function(name, value)
{
    this.__strings.append("<", name, ">", value, "</", name, ">");
}
XmlBuilder.prototype.createEndElement = function()
{
    this.__strings.append("</", this.__startElement, ">");
}
XmlBuilder.prototype.toString = function()
{
    return this.__strings.toString();
}
//////////////////////////////////////////////////////////////
// Stack
function Stack()
{
	this._stack = new Array();
}

Stack.prototype.push = function(obj)
{
	this._stack.push(obj);
}

Stack.prototype.pop = function()
{
	return this._stack.pop();
}

Stack.prototype.isEmpty = function()
{
	return this._stack.length == 0;
}

//////////////////////////////////////////////////////////////
// Queue
function Queue()
{
	this._queue = new Array();
}

Queue.prototype.enqueue = function(obj)
{
	this._queue.push(obj);
}

Queue.prototype.dequeue = function()
{
	return this._queue.shift();
}

Queue.prototype.isEmpty = function()
{
	return this._queue.length == 0;
}

//////////////////////////////////////////////////////////////
// verify code
var verifycode = new Object();
verifycode.reload = function(wid)
{
	var vCodeContainer = document.getElementById("vcImage" + wid);
	if (vCodeContainer) vCodeContainer.src = vCodeContainer.src + "&x";
};

//////////////////////////////////////////////////////////////
//
var emoticon = new Object();
emoticon.toggle = function(o)
{
    if (o != null)
    {
        var d = "";
        if (o.style.display == "") d = "none";
        o.style.display = d;
    }
};
emoticon.add = function(o)
{
    var srcObj = EventUtil.getEventSource();
    if (o) o.value += srcObj.getAttribute("CHAR");
};

//////////////////////////////////////////////////////////////
// region
var region = new Object();
region.city = null;
region.getCityList = function(o)
{
    region.city = arguments.length == 1 ? o.form.city : arguments[1];
    
	util.openMessaging(gMessage.READING_DATA_MESSAGE);
	webServiceFramework.initialize("LevenSiteService");
	webServiceFramework.registerHandler(region.refreshCityList);
	webServiceFramework.callService("LevenSiteService", "GetCityList", 1, o.value);
};
region.refreshCityList = function(o)
{
    webServiceFramework.unregisterHandler();
    util.fillOptionList(o, region.city);
};

//////////////////////////////////////////////////////////////
// imgutil
var imgutil = new Object();
imgutil.uploader = new Object();
imgutil.register = function(tip)
{
	imgutil.uploader.tip = tip;
};
imgutil.browse = function(o, field)
{
    imgutil.uploader.imgCtrl = o;
    imgutil.uploader.imgField = field;
    imgutil.uploader.widthAndHeight = o != null ? o.getAttribute("widthAndHeight") : "0";
    
    var loaderDoc = document.frames("fileuploader").document;
    var loader = loaderDoc.getElementById("FileUploadComponent");
    var callback = loaderDoc.getElementById("Callback");
    callback.value = arguments.length < 3 ? "imgutil.uploadCallback" : arguments[2];
    
    loader.click();
    if (loader.value == "") return;
    
    if (o.getAttribute("ExcludedList"))
    {
        var xlist = o.getAttribute("ExcludedList").split(";");
        var fa = loader.value.split(".");
        var ext = "." + fa[fa.length - 1];
        for (var i = 0; i < xlist.length; i++)
        {
            if (xlist[i].toLowerCase() == ext.toLocaleLowerCase())
            {
                util.errorMessaging(gMessage.FILEUPLOAD_TYPE_ERROR_MESSAGE);
                return;
            }
        }
    }
    else if (o.getAttribute("PermittedTypes"))
    {
        var xlist = o.getAttribute("PermittedTypes").split(";");
        var fa = loader.value.split(".");
        var ext = "." + fa[fa.length - 1];
        var ok = false;
        for (var i = 0; i < xlist.length; i++)
        {
            if (xlist[i].toLowerCase() == ext.toLocaleLowerCase())
            {
                ok = true;
                break;
            }
        }
        if (! ok)
        {
            util.errorMessaging(gMessage.FILEUPLOAD_TYPE_ERROR_MESSAGE);
            return;
        }        
    }
    
    loader = loaderDoc.getElementById("FileUploadButton");
    if (loader)
    {
        util.openMessaging(gMessage.WRITING_DATA_MESSAGE);
        loader.click();
    }
};
imgutil.uploadCallback = function(code, info)
{
    if (code > 0)
    {
        util.errorMessaging(info);
        return;
    }

    var a = info.split(":");
    
    var imgCtrl = imgutil.uploader.imgCtrl;
    imgCtrl.style.backgroundImage = "url(" + a[0] + ")";
    imgCtrl.innerHTML = "";
    
    imgutil.uploader.imgField.value = a[0];
    if (imgutil.uploader.widthAndHeight == "1")
    {
        var v = document.getElementById(imgutil.uploader.imgField.id + "Width");
        if (v) v.value = a[2];
        v = document.getElementById(imgutil.uploader.imgField.id + "Height");
        if (v) v.value = a[3];
    }
    
    util.closeMessaging();
};
imgutil.deleteFile = function(o, field)
{
    o.style.backgroundImage = "";
    if (imgutil.uploader.tip != null) o.innerHTML = imgutil.uploader.tip;

    var v = field.value;
    field.value = "";
    
    if (o.getAttribute("widthAndHeight") == "1")
    {
        var actrl = document.getElementById(field.id + "Width");
        if (actrl) actrl.value = 0;
        actrl = document.getElementById(field.id + "Height");
        if (actrl) actrl.value = 0;
    }

    util.openMessaging(gMessage.SUBMIT_DATA_MESSAGE);
    webServiceFramework.initialize("LevenSiteService");
    webServiceFramework.callService("LevenSiteService", "DelFile", 1, v);
};
imgutil.scalizing = function(o, w)
{
	if (o.width > w)
	{
		var scale = o.height / o.width;
		o.width = w;
		o.height = w * scale;
		o.border = 0;
		o.alt = gMessage.IMAGE_SCALIZING_MESSAGE;
		
		var a = document.createElement("A");
		a.href = o.src;
		a.target = "_blank";
		a.innerHTML = o.outerHTML;
		o.outerHTML = a.outerHTML;
	}
};

//////////////////////////////////////////////////////////////
// news update
var newsup = new Object();
newsup.keepTime = 1500;
newsup.register = function(o, rows, height, keepTime)
{
	newsup.height = height;
	newsup.totalRolling = rows;
	newsup.scrollstop = false;
	newsup.timerID = null;
	newsup.currentTop = newsup.height;
	newsup.keepTime = keepTime;

	newsup.instance = typeof(o) == "object" ? o : document.getElementById(o);
	
	newsup.instance.scrollTop = 0;
	newsup.instance.style.height = newsup.height;
	newsup.instance.style.overflowX = "visible";
	newsup.instance.style.overflowY = "hidden";
	newsup.instance.noWrap = true;
	newsup.instance.onmouseover = new Function("newsup.scrollstop = true");
	newsup.instance.onmouseout = new Function("newsup.scrollstop = false");
	newsup.instance.innerHTML += newsup.instance.innerHTML;

	newsup.init();
};
newsup.scrollup = function()
{
	if (newsup.scrollstop) return;
	
	newsup.currentTop += 1;
	if (newsup.currentTop == newsup.height + 1)
	{
		newsup.currentTop = 0;
		clearInterval(newsup.timerID);
		setTimeout("newsup.init()", newsup.keepTime);
	}
	else
	{
		newsup.instance.scrollTop += 1;
		if (newsup.instance.scrollHeight == (newsup.instance.scrollTop + newsup.height))
		{
			newsup.instance.scrollTop = newsup.height * (newsup.totalRolling - 1);
		}
	}
};
newsup.init = function()
{
	newsup.timerID = setInterval("newsup.scrollup()", 40);
};