/*
* Filename	: util.js
* Function	:
* Comment		:
* History		: 2003/05/09, jerry, setup
*
* Version		:	1.0
* Author		:	Copyright (c) 2005 by JcomTech Corp. All Rights Reserved.
*/

/* trim */
function trimString(str) {
	if (str.length == 0) {return str;}
	str = ltrim(str);
	return rtrim(str);
}

function ltrim(str) {return str.indexOf(' ') == 0 ? str.replace(/\s+/, '') : str;}

function rtrim(str) {return str.replace(/\s+$/, '');}

/* cookie */
function setCookie(name, value) {
	document.cookie = name + "=" + value + "; path=/;";
}

function removeCookie(name) {
	var date = new Date();
	var oldTime = date.getTime() - (2 * 24 * 60 * 60 * 1000); // 2 days ago
	date.setTime(oldTime);
	document.cookie = name + "=;path=/;expires=" + date.toGMTString() + ";";
}

function getCookie(name) {
	var arg = name + "=";
	var argLen = arg.length;
	var ckLen = document.cookie.length;
	var i = 0;

	while (i < ckLen) {
		var j = i + argLen;
		if (document.cookie.substring(i, j) == arg) {return getCookieVal(j);}
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) {break;}
	}

	return null;
}

function getCookieVal(offset) {
	var endStr = document.cookie.indexOf(";", offset);
	if (endStr == -1) {endStr = document.cookie.length;}
	return unescape(document.cookie.substring(offset, endStr));
}

/* money */
function makeMoneyType(str) {
	var prefix = "";
	var decimal = "";

  str = "" + str;
  if (str.substring(0, 1) == "-") {
  	prefix = "-";
  	str = str.substring(1);
  }
	if (str.indexOf(".") > -1) {
		decimal = str.substring(str.indexOf("."));
		str = str.substring(0, str.indexOf("."));
		if (new Number(decimal.substring(1)) == 0) {
			decimal = "";
		}
	}

  len = str.length - 3;
  while (len > 0) {
    str = str.substr(0, len) + "," + str.substr(len);
    len -= 3;
  }
  return prefix + str + decimal;
}

/* image size */
function sizeOptimize(imgObj, maxWd, maxHt) {
	if ((maxWd == null || maxWd == 0) && (maxHt == null || maxHt == 0)) {
		return;
	} else if (maxHt == null || maxHt == 0) {
		imgObj.width = imgObj.width > maxWd ? maxWd : imgObj.width;
		return;
	} else if (maxWd == null || maxWd == 0) {
		imgObj.height = imgObj.height > maxHt ? maxHt : imgObj.height;
		return;
	} else {
		var curWd = imgObj.width;
		var curHt = imgObj.height;

		if (curWd > maxWd && curHt > maxHt) {
			if ((maxWd / curWd) > (maxHt / curHt)) {
				imgObj.height = maxHt;
			} else {
				imgObj.width = maxWd;
			}
		} else if (curWd > maxWd) {
			imgObj.width = maxWd;
		} else if (curWd > 0  && curWd < maxWd) {
			curWd = curWd;
		} else if (curHt > maxHt) {
			imgObj.height = maxHt;
		} else {
			imgObj.width = maxWd;
		}
	}
}

/*******************************************
 * AJAX
 *******************************************/
var loadingFader;

function showLoading() {
	if (!$("ajaxLoading")) {
		var objBody = document.getElementsByTagName("body").item(0);

		var objLoading = document.createElement("div");
		objLoading.setAttribute("id", "ajaxLoading");
		objLoading.style.position = "absolute";
		objLoading.style.visibility = "hidden";
		objLoading.style.left = 0;
		objLoading.style.top = 0;
		objLoading.style.width = "0px";
		objLoading.style.height = "0px";
		objLoading.style.zIndex = "9999";
		objLoading.innerHTML = "<span id='ajaxLoadingText' style='color: #ff0000; font-size: 12pt; font-weight: bold; position: absolute;'>"
												 + "Wait..."
												 + "</span>";
		objBody.appendChild(objLoading);
	}
	
	$("ajaxLoading").style.width = document.documentElement.scrollWidth + "px";
	$("ajaxLoading").style.height = document.documentElement.scrollHeight + "px";
	$("ajaxLoading").style.backgroundColor = "#000000";

	$("ajaxLoadingText").style.left = ((document.documentElement.clientWidth / 2) - ($("ajaxLoadingText").offsetWidth / 2)) + "px";
	$("ajaxLoadingText").style.top = ((document.documentElement.clientHeight / 2) - ($("ajaxLoadingText").offsetHeight / 2) + document.documentElement.scrollTop) + "px";
	
	loadingFader = new fx.Opacity("ajaxLoading");
	loadingFader.show();
//	loadingFader.set(0.3);
}

function hideLoading() {
	if ($("ajaxLoading")) {
		loadingFader.toggle();
	}
}

/**
 * post type ajax
 * @param url			target url
 * @param formId	form object, form id, form name
 * @param func		typeof(func) == function ? action request : typeof(func) == string(element id) ? action update
 */
function callPostAjax(url, formId, func, isModal) {
	var myAjax = new Ajax.Request(url, {
		method: "post",
		parameters: $(formId).serialize(),
//		asynchronous: !isModal,
		onCreate: function() {if (isModal) {showLoading();}},
//		onFailure: null,
//		onSuccess: null,
		onComplete: function(result) {
			func(result);
			if (isModal) {hideLoading();}
		}
	});
}

function callPostAjaxModal(url, formId, func) {
	callPostAjax(url, formId, func, true);
}

function callGetAjax(url, params, func, isModal) {
	var myAjax = new Ajax.Request(url, {
		method: "get",
		parameters: params,
//		asynchronous: !isModal,
		onCreate: function() {if (isModal) {showLoading();}},
//		onFailure: null,
//		onSuccess: null,
		onComplete: function(result) {
			func(result);
			if (isModal) {hideLoading();}
		}
	});
}

function callGetAjaxModal(url, params, func) {
	callGetAjax(url, params, func, true);
}

