var userAgent = navigator.userAgent.toLowerCase();
var isOpera = userAgent.indexOf('opera') != -1 && opera.version();
var isMoz = (navigator.product == 'Gecko') && userAgent.substr(userAgent.indexOf('firefox') + 8, 3);
var isIE = (userAgent.indexOf('msie') != -1 && !isOpera) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);
var isMac = userAgent.indexOf('mac') != -1;
//----------------------------------------------------------------------------------------------------------------------------------
var errType = new Array('TEXT','TEXTAREA','PASSWORD');
var eastmy = new Array('SBH','SRW');
var _errIco = new Array();
var _errSpan = new Array();
// var _isdrag = null;
// var _iseditor = null;
var _selection = null;
// var isMilkBox = false;
var isDragged = false;
var cat_isCheckBox = false;
var isVIP = false;
var isReturnDocument = true;

var westlist = new Array('courierRow_W','discountRow_W','voucherRow_W');
var eastlist = new Array('courierRow_E','discountRow_E','voucherRow_E');
var mainFile = new Array('myprofile.php','myshop.php');

var hasSpan = false;
var hasMsg = false;
var showMsg = {0 : '', 1 : '', 2 : ''};

var msgDiv = new Array('errMsg','warMsg','okMsg');
var isminorder = new Array();
var ismaxorder = new Array();
var eEditor = new Array();

var count = {
	'form' : 0,
	'price' : 1,
	'voucher' : 0,
	'category' : 0,
	'editor' : 0,
	'moderators' : 0
};


//=================================================================================
var mouseMove = function() { }
var mouseDown = function() { }
var mouseUp = function() { }

//=================================================================================
function setCookie(name,value,days) {
	var date = new Date();
	date.setTime(date.getTime ()+(days*24*60*60*1000));

	var expires = "; expires="+date.toGMTString();
	document.cookie = name + '=' + value + expires;
}

function getCookie(name) {
	var cookiename = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(cookiename) == 0) return c.substring(cookiename.length,c.length);
	}
	return null;
}

//=================================================================================
// document.getElementById() --> $()
//=================================================================================
function print_r(array,level) {
	var dumped_text = "";
	if(!level) level = 0;
	//The padding given at the beginning of the line.
	var level_padding = "   ";
	for(var j=0;j<level;j++) level_padding += "    ";
	if(typeof(array) == 'object') { //Array/Hashes/Objects
		var obj = 0;
		for(var item in array) {
			var value = array[item];
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "[" + item + "] => Array\n " + level_padding + "( \n";
				dumped_text += print_r(value,level+1);
				dumped_text += level_padding + ")\n";
			} else {
				dumped_text += level_padding + level_padding +  "[" + item + "] => " + value + "\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===&gt;"+array+"&lt;===("+typeof(array)+")";
	}
	return dumped_text;
}

function is_array(input){
	return typeof(input)=='object'&&(input instanceof Array);
}

function iif(v,t,f){
	return v ? t : f;
}

function lg(str) {
	var v = _[str];
	if (arguments.length > 1) {
		for(var i=1;i<arguments.length;i++) {
			if (is_array(arguments[i])) {
				for(var j=0;j<arguments[i].length;j++) {
					v = v.replace('{?}',arguments[i][j]);
				}
			} else {
				v = v.replace('{?}',arguments[i]);
			}
		}
	}
	return v;
}

function randStr(len,format) {
	if(isEmpty(format)) format = 'ALL';
	var randomstring = '';
	switch(format) {
		case 'CHAR': 		var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; break;
		case 'CHARNUM': var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; break;
		case 'NUMBER': 	var chars = '0123456789'; break;
		default:
		case 'ALL': 		var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-'; break;
	}
	for (var i=0;i<len;i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}


function copyLink(txt, msg){
	if (isEmpty(msg)) msg = lg('msg_copy_link');
	copyText(msg,txt);
}

function copyText(msg,v){
	if (isIE) {
		clipboardData.setData('Text', v);
		if(msg) ealert(msg);   
	} else if (prompt(lg('msg_copy_pressc'), v)) {
		if(msg) ealert(msg);
  }   
}

function upload(frm,o) {
	var form = frm;
	var obj = o;
	var msg = '';
	var span = 0;
	
	this.getFileExt = function(v) {
		var pos = v.lastIndexOf('.');
		if (pos > -1) {
			return v.substr(pos+1,v.length).toLowerCase();
		} else {
			return '';
		}
	},
	
	this.submit = function(param) {
		if (isEmpty(param)) param = '';
		if (!form.getAttribute('enctype')) form.setAttribute('enctype','multipart/form-data');
		form.setAttribute('action',addParam(form.getAttribute('action'),'act=upload&'+param));
		form.appendChild($ce('INPUT').setAttributes({id:'uploadid',name : 'uploadid', type : 'hidden', value:obj.getAttribute('name')}));
		var ef = new ezForm(form);
		if (ef.submit(false)) {
			if (this.chkFilter()) {
				form.submit();
				form.setAttribute('action',rmvParam(form.getAttribute('action'),'act=upload&'+param));
				obj.disabled = 'disabled';
				disabledButton();
			} else {
				ef.setMsg(msg,span);
				obj.disabled = '';	
				disabledButton(false);
			}
		}
		form.removeChild($('uploadid'));
	},
	
	this.setLinkview = function(id,name,dir) {
		if(typeof(id) != 'string' || typeof(name) != 'string' || typeof(dir) != 'string') return;
		$('pre_'+id).innerHTML = name;
		$('img_'+id).innerHTML = name+'<br><img src="'+dir+name+'">';
		$('f'+id).value = name;
		$(id).value = '';
		$(id).disabled = '';
		$('preview_'+id).show();
		$(id).hide();
		disabledButton(false);
	},
	
	this.setPreview = function(id,name,dir) {
		if(typeof(id) != 'string' || typeof(name) != 'string' || typeof(dir) != 'string') return;
		$('pre_'+id).innerHTML = '<img src="'+dir+name+'" class="photo">';
		$('pre_'+id).onmouseover = function() { };
		$('pre_'+id).onmouseout = function() { };
		$('delimg_'+id).style.styleFloat = $('delimg_'+id).style.cssFloat = 'left';
		$('f'+id).value = name;
		$(id).value = '';
		$(id).disabled = '';
		$('preview_'+id).show();
		$(id).hide();
		disabledButton(false);
	},
	
	this.setDrag = function(id,name,dir,w,h) {
		if(typeof(id) != 'string' || typeof(name) != 'string' || typeof(dir) != 'string') return;
		var inner = '';
		// $('pre_'+id).innerHTML = '<img src="'+dir+name+'" class="photo">';
		// $('pre_'+id).onmouseover = function() { };
		// $('pre_'+id).onmouseout = function() { };
		// $('delimg_'+id).style.styleFloat = $('delimg_'+id).style.cssFloat = 'left';
		// if(!$('drag_'+id)) {
			// $ce('DIV')
		// }
		$('f'+id).value = name;
		// $('main'+id).remove();
		$('topC_'+id).value = 0;
		$('leftC_'+id).value = 0;
		var inner = '<img id="'+id+'" src="'+dir+name+'" style="position:absolute;" onload="cropImage(this.id,'+w+','+h+');">';
		$('drag_'+id).innerHTML = inner;
		
		// alert($('drag_'+id).innerHTML);
		// $(id).onload = function() { };
		// $(id).src = dir+name;
		// $(id).onload = function() { cropImage(this.id,w,h) };
		$('n'+id).disabled = '';
		// $('preview_'+id).show();
		// $(id).hide();
		// cropImage(id,w,h);
		disabledButton(false);
	},
	
	this.hidePreview = function(id) {
		if(typeof(id) != 'string') return;
		$('pre_'+id).innerHTML = '';
		if ($('img_'+id)) $('img_'+id).innerHTML = '';
		$('f'+id).value = '';
		// $(id).disabled = '';
		$(id).show();
		$('preview_'+id).hide();
		disabledButton(false);
	},
	
	this.chkFilter = function() {
		var v = obj.value;
		var required = obj.getAttribute('required') ? true : false;
		var filter = obj.getAttribute('filter');
		var t = obj.getAttribute('mode') == 1 ? true : false;
		filter = filter.split(',');

		if (required && isEmpty(v)) {
			msg = lg('err_empty',obj.msg);
			return false;
		} else {
			ext = this.getFileExt(v);
			if (!is_array(filter)) filter = new Array();
			msg = lg('err_invalid_file',obj.getAttribute('filter'));
			if (in_array(ext,filter)) {
				return t;
			}  else {
				return !t;
			}
		}
	}
}

// function clrDiv(div) {
	// if(typeof(div) == 'string') div = $(div);
	// div.innerHTML = '';
// }

// function removeElement(div) {
	// if(typeof(div) == 'string') div = $(div);
	// if(div) div.parentNode.removeChild(div);
// }

function eventPush(obj, event, handler) { 
	if (obj.addEventListener) { 
		obj.addEventListener(event, handler, false); 
	} else if (obj.attachEvent) { 
		obj.attachEvent('on'+event, handler); 
	} 
} 

function ezForm(obj) {
	var _this = this;
	var form = $(obj);
	var tmpDiv = null;
	
	this.frame = function() {
		var frmName = 'frm_'+count.form;
		tmpDiv = $ce('DIV').setContent('<iframe style="display:none" src="about:blank" id="'+frmName+'" name="'+frmName+'"></iframe>').appendTo(document.body);
 
		var obj = $(frmName);
		eventPush(obj,'load',function() { _this.loaded(obj) }); 
		if (form.onSuccess) _this._onSuccess = form.onSuccess;
		if (form.onError) _this._onError = form.onError;
		// if (c && typeof(c.onSuccess) == 'function') {
			// Form._onSuccess = c.onSuccess;
		// }
 
		count.form++;
		return frmName;
	};
 
	this.onSuccess = function(result) {
		if (typeof(_this._onSuccess) == 'function') _this._onSuccess();
		else {
			alert('in onSuccess');
		}
	}
	
	this.onError = function(result) {
		if (typeof(_this._onError) == 'function') _this._onError();
		else {
			alert('in onError');
		}
	}
	
	this.onComplete = function(result) {
		try {
			eval(result);
		} catch(e) {
			if (!isUndefined(e.description)) {
				alert("Error : " + e.description + "\n\n" + result);
			} else {
				alert("Error : " + e + "\n\n" + result);
			}
			return;
		}
		
		if (hasSpan) this.setErrSpan(arr);
		if (hasMsg) {
			for(var k=0;k<=2;k++) {
				if (!isEmpty(showMsg[k])) this.setMsg(showMsg[k],k);
			}
			hasMsg = false;
			showMsg = {0 : '', 1 : '', 2 : ''};
		}
		// }
	};
 
	this.submit = function(chk) {
		disabledButton();
		if (isEmpty(chk)) chk = true;
		if(!form.getAttribute('method')) form.setAttribute('method','POST');
		var frmName = this.frame();
		var isIframe = form.getAttribute('isIframe') ? form.getAttribute('isIframe') : '1';
		if (isIframe == '1') form.setAttribute('target',frmName);
		else form.setAttribute('target','');
		if(isIframe == '1') form.setAttribute('action',addParam(form.getAttribute('action'),'isIframe='+isIframe));
		this.clrErrSpan();
		this.clrErrMsg();

		if (chk) {
			// alert(this.fieldChecking());
			if (this.fieldChecking()) {
				disabledButton(false);
				return true;
			} else {
				disabledButton(false);
				return false;
			}
		} else {
			disabledButton(false);
			return true;
		}
		disabledButton(false);
		return false;
	};
 
	this.loaded = function(obj) {
		if (obj.contentDocument) {
			var d = obj.contentDocument;
		} else if (obj.contentWindow) {
			var d = obj.contentWindow.document;
		} else {
			var d = obj.document;
		}
		
		if (d.location.href == 'about:blank') {
			// this.onComplete();
			// this.clrIframe();
			return;
		} else {
			this.onComplete(d.body.innerHTML);
		}
	};
 
	this.clrIframe = function () {
		document.body.removeChild(tmpDiv);
	};
 
	this.fieldChecking = function () {
		var allchkbox = new Array();
		var allradio = new Array();
		var arr = new Array();
		var cnt = 0;

		for (k=0; k<form.elements.length; k++) {
			// s = obj.elements[k].id.split("|");
			var ele = form.elements[k];
			var com = ele.getAttribute('required') ? true : false;;
			var msg = ele.getAttribute('msg') ? ele.getAttribute('msg') : lg('value');
			var mod = ele.getAttribute('mode') ? 1 : 0;
			var isnum = ele.getAttribute('num') ? true : false;;
			var isemail = ele.getAttribute('email') ? true : false;;
			var isurl = ele.getAttribute('url') ? true : false;;
			var ischar = ele.getAttribute('char') ? true : false;;
			var isurlchar = ele.getAttribute('urlchar') ? true : false;;
			var ischarnum = ele.getAttribute('charnum') ? true : false;;
			var isdate = ele.getAttribute('date') ? true : false;;
			var isdatetime = ele.getAttribute('datetime') ? true : false;;
			var istime = ele.getAttribute('time') ? true : false;;
			var isvali = ele.getAttribute('vali') ? true : false;;
			
			if (com) {
				if (ele.tagName == 'INPUT' && ele.type == 'checkbox') {
					var si = ele.name.replace('[]','');
					if (!in_array(si,allchkbox)) allchkbox.push({ 'name' : si, 'mode' : mod, 'minlength' : ele.getAttribute('minlength'), 'msg' : msg });
				} else if (ele.tagName == 'INPUT' && ele.type == 'radio') {
					var si = ele.name.replace('[]','');
					if (!in_array(si,allradio)) allradio.push({ 'name' : si, 'mode' : mod, 'msg' : msg });
				}
			}
			
			if((ele.tagName == 'INPUT' && in_array(ele.type,new Array('text','hidden','password'))) || ele.tagName == 'TEXTAREA') {
				if(ele.tagName == 'TEXTAREA') {
					if(ele.getAttribute('rel') == 'ezEditor') eEditor[ele.id].instanceById(ele.id).saveContent();
						// $('tmpabc').addContent(eEditor[ele.id].instanceById(ele.id));
						// for(var k in eEditor[ele.id]) $('tmpabc').addContent(k+' => '+eEditor[ele.id][k]+'<br>');
						// }
				}
				
				if (com && isEmpty(ele.value)) {
					arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_empty',msg)});
				} else {
					if (!isEmpty(ele.getAttribute('maxlength')) && ele.getAttribute('maxlength') != 0) {
						var vlen = ele.tagName == 'TEXTAREA' ? strlen(ele.value,true) : strlen(ele.value,false)
						if (vlen > ele.getAttribute('maxlength')) 
							arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_maximum_char',msg,ele.getAttribute('maxlength'))});
					}
					
					if (!isEmpty(ele.getAttribute('minlength')) && ele.getAttribute('minlength') != 0) {
						var vlen = ele.tagName == 'TEXTAREA' ? strlen(ele.value,true) : strlen(ele.value,false)
						if (vlen < ele.getAttribute('minlength')) 
							arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_minimum_char',ele.getAttribute('minlength'),msg)});
					}
					if (!isEmpty(ele.value)) {
						if(isnum) {
							if (!isNum(ele.value)) arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_numeric',msg)});
						} else if(isemail) {
							if (!isEmail(ele.value)) arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_email',msg)});
						} else if(isurl) {
							if (!isURL(ele.value)) arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_url',msg)});
						} else if(ischar) {
							if (!isChar(ele.value)) arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_invalid_char',msg)});
						} else if(isurlchar) {
							if (!isURLChar(ele.value)) arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_invalid_urlchar',msg)});
						} else if(ischarnum) {
							if (!isCharNum(ele.value)) arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_invalid_charnum',msg)});
						} else if(isdate) {
							if (!isDate(ele.value)) arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_date',msg)});
						} else if(isdatetime) {
							if (!isDateTime(ele.value)) arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_datetime',msg)});
						} else if(istime) {
							if (!isTime(ele.value)) arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_time',msg)});
						} else if(isvali) {
							var sessionCode = $('session_'+ele.name).value;
							if (ele.value.toLowerCase() != sessionCode.toLowerCase()) arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_valicode',msg)});
						}
					}
				}
			} else if(ele.tagName == 'INPUT' && ele.type == 'file') {
				if (com && isEmpty(ele.value)) {
					arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_empty',msg)});
				} else if (!isEmpty(ele.value)) {
					var u = new upload(form,ele);
					if(!u.chkFilter()) arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_invalid_file',msg)});
				}
			} else if (ele.tagName == 'SELECT') {
				if (com && isEmpty(ele.options[ele.selectedIndex].value)) {
					arr.push({'name' : ele.name, 'mode' : mod, 'msg' : lg('err_empty',msg)});
				}
			}
			 
		}
		
		if (allchkbox.length > 0) {
			for(var i=0;i<allchkbox.length;i++) {
				var w = 0;
				var v = allchkbox[i];
				var obj = $N(v.name+'[]');
				for(i=0;i<obj.length;i++) if (obj[i].checked) w++;

				if (w < v.minlength) arr.push({'name' : v.name, 'msg' : lg('err_minimum_chk',v.minlength,v.msg)});
			}
		}
		
		if (allradio.length > 0) {
			for(var i=0;i<allradio.length;i++) {
				var w = false;
				var v = allradio[i];
				var obj = $N(v.name+'[]');
				for(i=0;i<obj.length;i++) {
					if (obj[i].checked) { w = true; break; };
				}
				if (!w) arr.push({'name' : v.name, 'msg' : lg('err_empty_chk',v.msg)});
			}
		}
		
		if (arr.length > 0) {
			this.setErrSpan(arr);
			this.setMsg(lg('err_fillall'));
			return false;
		} else {
			return true;
		}
	};

	this.clrErrSpan = function() {
		for (k=0; k<form.elements.length; k++) {
			var ele = $(form.elements[k]);
			if (in_array(ele.type.toUpperCase(),errType)) ele.replaceClassName('txtboxErr','txtbox');
		}
		
		for(i=0;i<_errIco.length;i++) {
			_errIco[i]['parent'].removeChild(_errIco[i]['child']);
			_errSpan[i]['parent'].removeChild(_errSpan[i]['child']);
		}
		
		_errIco = new Array();
		_errSpan = new Array();
		
		// var obj = $T('IMG');
		// for (i=0;i<obj.length;i++) {
			// if (obj[i].name == 'errImg') obj[i].parentNode.removeChild(obj[i]);
		// }
		
		// var obj = $T('SPAN');
		// for (i=0;i<obj.length;i++) {
			// if (instr('errspan_',obj[i].id)) obj[i].parentNode.removeChild(obj[i]);
		// }
		
	};

	this.clrErrMsg = function() {
		for(var i=0;i<msgDiv.length;i++) {
			if ($(msgDiv[i])) {
				$(msgDiv[i]).innerHTML = '';
				$(msgDiv[i]).hide();
			}
		}
	};

	this.setMsg = function(msg, t) {
		var div;
		if (isEmpty(t)) t = 0;
		if (t == 0) div = 'errMsg';
		else if(t == 1) div = 'okMsg';
		else if(t == 2) div = 'warMsg';
		
		if ($(div)) {
			$(div).innerHTML = msg;
			$(div).show();
		}
	};

	this.setErrSpan = function(arr) {
		for(i=0;i<arr.length;i++) {
			var mode = arr[i].mode;
			var msg = arr[i].msg;
			if (mode == 1) {
				this.setMsg(arr[i].msg);
			} else {
				var id = arr[i].name;
				if (form[id]) {
					var obj = $(form[id]);
					var frmType = obj.type;
					// var nextSibling = obj.nextSibling ? obj.nextSibling : obj; 
					if(frmType) if (in_array(frmType.toUpperCase(),errType)) obj.replaceClassName('txtbox','txtboxErr');
					// var pos = getElePos(obj);
					var img = $ce('IMG').setAttributes({
						name : 'errImg',
						'id' : id,
						src : INC_URL + 'img/err.png'
					}).setStyles({
						position : 'absolute',
						cursor : 'pointer',
						marginLeft : $('hlp_'+id) || $('imgdate_'+id) || $(id+'Button') ? '25px' : '5px',
						marginTop : '2px',
						width : '16px',
						height : '14px'
					// }).addEvents({
						// 'mouseover' : function() { $('errspan_'+this.id).show(); },
						// 'mouseout' : function() { $('errspan_'+this.id).hide(); }
					});
					
					// (obj.nextSibling) ? img.appendBefore(obj.nextSibling) : img.appendTo(obj.pranetNode);
					
					// var nextSibling = obj.nextSibling ? obj.nextSibling : obj; 
					// img.name = 'errImg';
					// img.id = id;
					// img.src = 'img/err.png';
					// img.style.position = 'absolute';
					// img.style.cursor = 'pointer';
					// img.style.marginLeft = $('hlp_'+id) || $('imgdate_'+id) ? '25px' : '5px';
					// img.style.marginTop = '2px';
					// img.style.width = '16px';
					// img.style.height = '14px';
					// img.style.left = (pos.x + obj.offsetWidth + 5) + 'px';
					// img.style.top = (pos.y + 3) + 'px';
					img.onmouseover = function() { $('errspan_'+this.id).show(); };
					img.onmouseout = function() { $('errspan_'+this.id).hide(); };

					var span = $ce('SPAN').setAttributes({id : 'errspan_'+id}).setStyles({
						className : 'errMsg',
						position : 'absolute',
						marginLeft : $('hlp_'+id) || $('imgdate_'+id) || $(id+'Button') ? '45px' : '25px',
						zIndex : 1
					}).setContent(msg).hide();
					// span.hide();
					// span.id = 'errspan_'+id;
					// span.innerHTML = msg;
					// span.className = 'errMsg';
					// span.style.position = 'absolute';
					// span.style.marginLeft = $('hlp_'+id) || $('imgdate_'+id) ? '45px' : '25px';
					// span.style.zIndex = '1';
					// span.style.left = (pos.x + obj.offsetWidth) + 'px';
					// span.style.top = pos.y + 'px';
					_errIco[_errIco.length] = {'parent' : obj.parentNode, 'child' : img};
					_errSpan[_errSpan.length] = {'parent' : obj.parentNode, 'child' : span};

					// (img.nextSibling) ? span.appendBefore(img.nextSibling) : span.appendTo(obj.pranetNode);
					obj.parentNode.insertBefore(img, obj.nextSibling);
					obj.parentNode.insertBefore(span, img.nextSibling);
				}
				
				// if($('err_'+id)) {
					// $('err_'+id).innerHTML = msg;
					// $('err_'+id).style.display = 'inline-block';
				// }
			}
		}
		document.body.scrollTop = 0;
	};

}

function getScrollBarPos() {
	var c = { x: 0, y: 0 };
	if(document.documentElement) {
		c.x = document.documentElement.scrollLeft;
		c.y = document.documentElement.scrollTop;
	} else if(document.body) {
		c.x = document.body.scrollLeft;
		c.y = document.body.scrollTop;
	} else if(window) {
		c.x = window.pageXOffset;
		c.y = window.pageYOffset;
	}
	return c;
}

function setScrollBarPos(x,y) {
	if(document.documentElement) {
		document.documentElement.scrollLeft = x;
		document.documentElement.scrollTop = y;
	} else if(document.body) {
		document.body.scrollLeft = x;
		document.body.scrollTop = y;
	} else if(window) {
		window.pageXOffset = x;
		window.pageYOffset = y;
	}
}

function getElePos(obj) {
	obj = $(obj);
	var c = { x: 0, y: 0 };
  
	while (obj) {
		c.x += obj.offsetLeft;
		c.y += obj.offsetTop;
		obj = obj.offsetParent;
  }

 return c;
}

function inArray(v, arr, k){
	if (isEmpty(k)) k = '';
	for (var a in arr) {
		if(is_array(a)){
			if(inArray(v,a,k)) return true;
		} else{
			if(isEmpty(k)) {
				return (in_array(v,arr));
			} else {
				if(arr[k] == v) return true;
			}
		}
	}
	return false;
}

function in_array(str, arr) {
	for (var s = 0; s <arr.length; s++) {
		v = arr[s].toString();
		if (v == str) return true;
	}
	return false;
} 

function array_key_exists(str, arr) {
	for (var s in arr) {
		v = s.toString();
		if (v == str) return true;
	}
	return false;
} 

function strpos(v, pos, offset) {
	if(isUndefined(offset)) offset = 0;

	index = v.toLowerCase().indexOf(pos.toLowerCase(), offset);

	return index == -1 ? false : index;
}

function instr(se,v) {
	if (isUndefined(v)) return false;
	return (v.indexOf(se) > -1) ? true : false;
}

//=================================================================================
// GO TO PAGE
//=================================================================================
function returnDocument() {
	var file_name = document.location.href;
	var end = (file_name.indexOf("?") == -1) ? file_name.length : file_name.indexOf("?");
	return file_name.substring(file_name.lastIndexOf("/")+1, end);
}
		
function rmvParam(url,param) {
	if(instr('?',url)) {
		currentParam = url.split('?')[1].param2array();
		url = url.split('?')[0];
		param = param.param2array();
		
		var newParam = '';
		for (var i in currentParam) {
			if (!inArray(currentParam[i],param,i)) newParam += (newParam ? '&' : '') + i + '=' + currentParam[i];
		}
		if(newParam) {
			url = url + '?' + newParam;
		} else {
			return url;
		}
	} else {
		url = url + '?' + param;
	}
	
	return url;
}
		
function addParam(url,param) {
	if(instr('?',url)) {
		currentParam = url.split('?')[1].param2array();
		param = param.param2array();
		
		var newParam = '';
		for (var i in param) {
			if (!inArray(param[i],currentParam,i)) newParam += (newParam ? '&' : '') + i + '=' + param[i];
		}
		if(newParam) {
			if(in_array(url.substring(url.length-1),new Array('?','&'))) {
				url = url + newParam;
			} else {
				url = url + '&' + newParam;
			}
		} else {
			return url;
		}
	} else {
		url = url + '?' + param;
	}
	
	return url;
}
		
function getURL(file) {
	if(isReturnDocument) {
		if(file.indexOf('?') > -1) {
			var fName = file.split('?');
			file = returnDocument()+'?file='+fName[0] + (isEmpty(fName[1]) ? '' : '&'+fName[1]);
		} else {
			file = returnDocument()+'?file='+file;
		}
	}
	return file;	
}

function goTo(url,top,target) {
	if(isEmpty(top)) top = false;
	if(isEmpty(target)) target = '';
	if (!isEmpty(url)) {
		url = repairString(url);
		if (url == 'login.php' || url == '../login.php' || top) {
			try {top.location.href = url; } catch(e) { location.href = url; }
		} else {
			if (target) {
				window.open(url,target);
			} else {
				location.href = url;
			}
		}
	}
}

function goToCMS(url, target, sel) {
	var obj = $T('DIV');
	for(i=0;i<obj.length;i++) if (obj[i].getAttribute('name') == 'menu') obj[i].removeClassName('selected');
	if (sel) addClassName(sel,'selected');
	if (!isEmpty(url)) top.frames[target].location.href = url;
}

function goToPage(file,obj,e) {
	if (onlyNum(obj,e)) {
	  var key;
		if (typeof(e)=='undefined') e = window.event;
	  if(window.event) key = window.event.keyCode;     //IE
	  else key = e.which;     //firefox
		
		if (key == 13 && !isEmpty(obj.value) && isNum(obj.value)) {
			goTo(file);
		}
		return true;
	} else return false;
}

//=================================================================================
// NUMERIC ONLY
//=================================================================================
function onlyNum(myfield, e, isdec, dec) {
	if (typeof(myfield) == 'object') myfield = myfield.value;
	var key;
	var keychar;
	if (isdec && isEmpty(dec)) dec = 2;

	if (window.event) key = window.event.keyCode;
	else if (e) key = e.which;
	else return true;
	keychar = String.fromCharCode(key);
	
	// control keys
	var sysKey = new Array(8,9,13,16,17,18,35,36,37,38,39,40,46,144);
	var numKey = new Array(48,49,50,51,52,53,54,55,56,57,96,97,98,99,100,101,102,103,104,105);
	
	// CONTROL KEYS && NUMBER KEY
	if ((key==null) || in_array(key,sysKey) || in_array(key,numKey)) {
		// if (in_array(key,numKey) && isdec) {
			// if (myfield.value.indexOf('.') > -1 && myfield.value.length - myfield.value.indexOf('.') > dec) return false;
			// else return true;
		// } else {
			return true;
		// }

	// DECIMAL POINT JUMP
	} else if (isdec && (key == 110 || key == 190)) {
		if (myfield.indexOf('.') > -1) {
			return false;
		} else {
			return true;
		}
	
	} else return false;
}

//=================================================================================
// CHECK ALL CHECKBOX IN SAME FORM
//=================================================================================
function checkall(form, prefix, checkall) {
  var checkall = checkall ? checkall : 'chkall';
  for(var i = 0; i < form.elements.length; i++) {
    var e = form.elements[i];
    if(e.name != checkall && (!prefix || (prefix && e.name.match(prefix))) && e.type == 'checkbox') {
      if(!e.getAttribute('disabled')) e.checked = form.elements[checkall].checked;
    }
  }
}

function getLoc(el) {
 var c = { x: 0, y: 0 };
  
  while (el) {
		c.x += el.offsetLeft;
		c.y += el.offsetTop;
		el = el.offsetParent;
  }

 return c;
}


function rmvCurrency(v) {
	return parseFloat(v.replace(/,/gi,''));
}

function currency(v) {
	return addCommas(parseFloat(v).toFixed(2));
}

//=================================================================================
// DISABLE ENTER KEY
//=================================================================================
function disableEnterKey() {
  var obj = $T('INPUT',{type : 'text'});
  for (i=0; i<obj.length; i++) {
		// if (obj[i].type == 'text') {
			obj[i].onkeypress = dk;
		// }
  }
}

function dk() {
  var key;
  e = window.event;
  if(window.event) key = window.event.keyCode;     //IE
  else key = e.which;     //firefox
  
  if(key == 13) {
    // $('page').value = 1;
    
    //parent.document.body.scrollTop = 0;
    // document.frm.submit();
    return false;
  } else {
    //return true;
  }
}

//=================================================================================

var ann = {
	id : 'announce',
	delay : 5000,
	st : 0,
	stop : 0,
	rowcount : 0,
	count : 0,
	lis : null,
	rows : new Array(),
	status : null,

	init : function(id) {
		ann.id = id;
		ann.lis = $(ann.id+'_list').getChilds({tagName : 'LI'});
		$(ann.id).addEvents({
			 'mouseover' : function() { ann.stop = 1; },
			 'mouseout' : function() { ann.stop = 0; }
		});
		ann.scroll();
	},
	
	scroll : function() {
		if(ann.stop) {
			ann.st = setTimeout('ann.scroll()', ann.delay);
			return;
		}
		
		if(!ann.st) {
			var lasttop = -1;
			for(i = 0;i < ann.lis.length;i++) {

				if(lasttop != ann.lis[i].offsetTop) {
					if(lasttop == -1) {
						lasttop = 0;
					}
					ann.rows[ann.rowcount] = ann.lis[i].offsetTop - lasttop;
					ann.rowcount++;
				}
				lasttop = ann.lis[i].offsetTop;
			}

			if(ann.rows.length == 1) {
				$(ann.id).onmouseover = $(ann.id).onmouseout = null;
			} else {
				ann.rows[ann.rowcount] = ann.rows[1];
				$(ann.id+'_list').innerHTML += $(ann.id+'_list').innerHTML;
				ann.st = setTimeout('ann.scroll()', ann.delay);
			}
			ann.rowcount = 1;
			return;
		}
		
		if(ann.rowcount >= ann.rows.length) {
			$(ann.id+'_body').scrollTop = 0;
			ann.rowcount = 1;
			ann.st = setTimeout('ann.scroll()', ann.delay);
		} else {
			ann.count = 0;
			ann.scrollNext(ann.rows[ann.rowcount]);
		}
	},

	scrollNext :function(time) {
		$(ann.id+'_body').scrollTop++;
		ann.count++;
		if(ann.count != time) {
			ann.st = setTimeout('ann.scrollNext(' + time + ')', 10);
		} else {
			ann.rowcount++;
			ann.st = setTimeout('ann.scroll()', ann.delay);
		}
	}
}
//=================================================================================
var slideshow = {
	slidetime : '',
	speed : 30,
	delay : 5000,
	size : 48,
	ann : '',
	ann1 : '',
	ann2 : '',
	i : 0,
	init : function(ann) {
		slideshow.ann = $(ann);
		slideshow.ann1 = $(ann+'1');
		
		var div = slideshow.ann1.cloneNode(true);
		div.id = ann+'2';
		slideshow.ann1.parentNode.appendChild(div);
		slideshow.ann2 = $(ann+'2');
		slideshow.ann2.innerHTML = slideshow.ann1.innerHTML;
		
		setTimeout('slideshow.start()', slideshow.delay);
	},
	
	stop : function() {
		clearInterval(slideshow.slidetime);
		slideshow.i=0;
	},
	
	start : function() {
		slideshow.slidetime = setInterval(slideshow.slide,slideshow.speed);
	},
	
	slide : function() {
		if(slideshow.ann2.offsetTop - slideshow.ann.scrollTop<=0) slideshow.ann.scrollTop -= slideshow.ann1.offsetHeight;
		else {
			slideshow.ann.scrollTop++;
			slideshow.i++;
		}
		if (slideshow.i >= slideshow.size) {
			clearInterval(slideshow.slidetime);
			slideshow.i=0;
			setTimeout('slideshow.start()', slideshow.delay);
		}
	}
}
//=================================================================================
function toArray(v,s) {
	if (typeof(v) == 'object') {
    var len = v.length;
    var arr = new Array(len);
    for(var i=0;i<len;i++) arr[i] = v[i];
	} else {
		if(isEmpty(s)) s = ',';
		var arr = v.split(',');
	}
	return arr;
}
//=================================================================================
function br2nl(v) {
	v = v.preg_replace(['<br>','<br />'], ['\r\n','\r\n']);
	return v;
}

function nl2br(v) {
	v = v.replace('(\r\n|\n|\r)', '<br />');
	return v;
}

function strlen(v,ised) {
	if(isEmpty(ised)) ised = false;
	if(ised) {
		var tmp = v;
		tmp = tmp.replace("\r","").replace("\n","");
		tmp = tmp.replace("<br>","").replace("<br />","");
		tmp = tmp.replace("<br / >","").replace("<br / >","").replace("<br/>","").replace("<br/ >","");
		if (isEmpty(tmp)) v = '';
	}
	return (isIE && v.indexOf('\n') != -1) ? v.replace(/\r?\n/g, '_').length : v.length;
}

function trim(v) {
	return (v + '').replace(/(\s+)$/g, '').replace(/^\s+/g, '');
}
function isNum(v) {
  return !(isNaN(v) || isEmpty(v));
}

function isEmpty(v) {
	v = trim(v);
	return (v == '' || v == null || v == 'null' || isUndefined(v));
}

function isUndefined(v) {
	return (typeof(v) == 'undefined' || v == undefined || v == 'undefined');
}

function isEmail(v) {
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	return reg.test(v);
}

function isURL(v) {
	var reg = /^(www.|https?:\/\/|http:\/\/|ftp:\/\/|gopher:\/\/|news:\/\/|telnet:\/\/|rtsp:\/\/|mms:\/\/|callto:\/\/|bctp:\/\/|ed2k:\/\/|thunder:\/\/|synacast:\/\/){1}([^\[\"']+?)+$/;
	return reg.test(v);
}

function isURLChar(v) {
	var reg = /^([A-Za-z0-9_])+$/;
	return reg.test(v);
}

function isChar(v) {
	var reg = /^([A-Za-z0-9_\-\x7f-\xff\u4e00-\u9fa5])+$/;
	return reg.test(v);
}

function isCharNum(v) {
	var reg1 = /([A-Za-z])/;
	var reg2 = /([0-9])/;
	return reg1.test(v) && reg2.test(v);
}

function isDate(v) {
	var reg = /^\d{4}\-\d{1,2}\-\d{1,2}$/;
	if(reg.test(v)) {
		calendar.cType = 'D';
		return calendar.isValidDate(v);
	} else {
		return false;
	}
}

function isTime(v) {
	var reg = /^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/;
	return reg.test(v);
}

function isDateTime(v) {
	var reg = /^\d{4}\-\d{1,2}\-\d{1,2} ([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/;
	if(reg.test(v)) {
		calendar.cType = 'DT';
		return calendar.isValidDate(v);
	} else {
		return false;
	}
}

function isColorCode(v) {
  if (v.length == 7) {
    var strPattern = /^#([0-9a-f]{1,2}){3}$/i ; 
    if (strPattern.test(v)) {
			return true;
      // return v.toUpperCase();
    } else {
			return false;
      // return '#000000';
    }
  } else if(v == '') {
    return true;
  } else {
    return false;
  }
}

function addCommas(nStr) {
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function NaN2Zero(v) {
	v = Number(v);
	if(isNaN(v)) v = 0;
	return v;
}

function rgbToHex(R,G,B) {
	alert([R,G,B]);
	return '#' + toHex(R)+toHex(G)+toHex(B);
}

function toHex(N) {
 if (N==null) return "00";
 N=parseInt(N); if (N==0 || isNaN(N)) return "00";
 N=Math.max(0,N); N=Math.min(N,255); N=Math.round(N);
 return "0123456789ABCDEF".charAt((N-N%16)/16) + "0123456789ABCDEF".charAt(N%16);
}

function nohtml(str) {
	return preg_replace([(isMac && isIE ? '&' : '&(?!#[0-9]+;)'), '<', '>', '"'], ['&amp;', '&lt;', '&gt;', '&quot;'], str);
}

function toLowerCase(v) {
	if (typeof(v) == 'string') return v.toLowerCase();
	else return '';
}

function toUpperCase(v) {
	if (typeof(v) == 'string') return v.toUpperCase();
	else return '';
}

function preg_replace(search, replace, str) {
	var len = search.length;
	for(var i = 0; i < len; i++) {
		re = new RegExp(search[i], "ig");
		str = str.replace(re, typeof replace == 'string' ? replace : (replace[i] ? replace[i] : replace[0]));
	}
	return str;
}

function hasClassName(obj,className) {
	if (obj.className.length > 0) {
		return (obj.className == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(obj.className));
	} else {
		return false;
	}
}

function addClassName(obj,className) {
	if (!hasClassName(obj,className)) obj.className += (obj.className ? ' ' : '') + className;
	return obj;
}

function removeClassName(obj,className) {
	for(var i=1;i<arguments.length;i++) {
		obj.className = obj.className.replace(new RegExp("(^|\\s+)" + arguments[i] + "(\\s+|$)"), ' ');
	}
	// obj.className = obj.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ');
	return obj;
}
	
function replaceClassName(obj,className,newClassName) {
	obj.className = obj.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ' + newClassName + ' ');
	return obj;
}

function repairString(str) {
	 var temp_div = document.createElement('div');
	 temp_div.innerHTML = str;
	 return temp_div.firstChild.nodeValue;
}

function disabledButton(t) {
	if (isEmpty(t)) t = true;
	var o = $T('INPUT');
	for(var i=0;i<o.length;i++) if(o[i].type == 'button' || o[i].type == 'submit') o[i].disabled = t ? 'disabled' : '';
}

function getSize(obj){
	if (isEmpty(obj)) obj = document.body;
	return {x: obj.offsetWidth, y: obj.offsetHeight};
}

function getScroll(obj){
	if (isEmpty(obj)) obj = document.body;
	return {x: obj.scrollLeft, y: obj.scrollTop};
}

function getScrollSize(obj){
	if (isEmpty(obj)) obj = document.body;
	return {x: obj.scrollWidth, y: obj.scrollHeight};
}

function getFullScreenSize(obj){
	if (isEmpty(obj)) obj = document.body;
	// alert([screen.availHeight,obj.clientHeight,obj.scrollHeight,obj.scrollTop,obj.offsetHeight])
	var x = screen.availWidth > obj.clientWidth ? screen.availWidth : obj.clientWidth;
	var y = screen.availHeight > obj.clientHeight ? screen.availHeight : obj.clientHeight;
	return {x: x, y: y};
}

function bookmark(name,title) {
	var url = lg('shopURL',name);
	if(document.all) window.external.addFavorite(url, title);
	else window.sidebar.addPanel(title, url, '')
}

function doane(event) {
	e = event ? event : window.event;
	if(is_ie) {
		e.returnValue = false;
		e.cancelBubble = true;
	} else if(e) {
		e.stopPropagation();
		e.preventDefault();
	}
}


/****************************************************************************************************************************************/
// var p = 'file=produ.php&type=myprofile&isFrame=1';
// alert(print_r(p.param2array()));
function IncludeJavaScript(jsFile) {
  document.write('<script type="text/javascript" src="' + INC_URL + 'inc/js/' + jsFile + '"></script>'); 
}

IncludeJavaScript('function.js');
IncludeJavaScript('dialog.js');
