jQuery.fn.extend({
	autoTab: function(destination) {
		$(this).keyup(function(event) {
			var maxLen = $(this).attr('maxlength');
			if ($(this).val().length >= maxLen) {
				$(destination).val("");
				$(destination).focus();
			}
		});
		return false;
	},
	secureLoad: function(url, params, callback) {
		var off = url.indexOf(" ");
		if (off >= 0) {
			var selector = url.slice(off, url.length);
			url = url.slice(0, off);
		}

		callback = callback || function() {};

		var self = this;
		secureAjax(url, params, {
			type: "POST",
			dataType: "html",
			complete: function(res, status) {
				if ( status == "success" || status == "notmodified" ) {
					self.html( selector ?
						jQuery("<div/>")
							.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
							.find(selector) :
						res.responseText );
				}
				self.each( callback, [res.responseText, status, res] );
			}
		});
		return this;
	}
});

function postLink(url, params) {
	var formHtml = "<form id='postLinkForm' name='postLinkForm' method='POST' action='"+url+"'>";
	if ( params.constructor == Array || params.jquery ) {
		jQuery.each(params, function() {
			formHtml += "<input type='hidden' name='"+this.name+"' value='"+this.value+"'>";
		});
	} else {
		for (var i in params) {
			if (params[i] && params[i].constructor == Array) {
				jQuery.each( params[i], function(){
					formHtml += "<input type='hidden' name='"+i+"' value='"+this+"'>";
				});
			} else {
				formHtml += "<input type='hidden' name='"+i+"' value='"+params[i]+"'>";
			}
		}
	}
	
	formHtml += "</form>";
	jQuery("body").append(formHtml);
	XecureSubmit(document.postLinkForm);
}

function secureGetJSON(url, data, callback) {
	return secureGet(url, data, callback, "json");
}


function secureGet(url, data, callback, type) {
	if (jQuery.isFunction(data)) {
		callback = data;
		data = null;
	}

	return secureAjax(url, data, {
		success: callback,
		dataType: type
	});
}

function securePost(url, data, callback, type) {
	if ( jQuery.isFunction(data)) {
		callback = data;
		data = {};
	}

	return secureAjax(url, data, {
		type: "POST",
		success: callback,
		dataType: type
	});
}

function secureAjax(url, params, options) {
	if (params) {
		if (typeof params != "string") {
			params = jQuery.param(params);
		}
		params = decodeURIComponent(params).replace(/\+/g, "%20");
		try {
			params = "q=" + escape_url(XecureAjax(params));
		} catch(e) {  
			alert("¾ÏÈ£È­¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù. °ü¸®ÀÚ¿¡°Ô ¹®ÀÇÇÏ¿© ÁÖ¼¼¿ä!");
		}
	}
	
	var options = $.extend({
		url:  url,
		data: params
	}, options || {});
	
	return jQuery.ajax(options);
}

$.ajaxSetup({
	type: "POST",
	dataType: "json",
	timeout: 480000,
	contentType: "application/x-www-form-urlencoded;charset=UTF-8"
});

/**
 * ajax Åë½ÅÀÌ ÀÏ¾î³ª¸é ·ÎµùÁß ÀÌ¹ÌÁö°¡ º¸¿©ÁÖ°í ³¡³ª¸é »ç¶óÁö°Ô ÇÔ
 * 
 */
$(this).ajaxStart(function() {
	defaultLoading();
}).ajaxStop(function() {
	defaultUnloading(); 
}).ajaxError(function() {
	alert("ÁË¼ÛÇÕ´Ï´Ù. ½Ã½ºÅÛ ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù.\n»ó´ã½ÅÃ»À» ³²°Ü ÁÖ½Ã¸é ½Å¼ÓÈ÷ ´äº¯À» µå¸®°Ú½À´Ï´Ù.");
});


//helper
function objToString(o) {
    var s = '{\n';
    for (var p in o)
        s += '    ' + p + ': ' + o[p] + '\n';
    return s + '}';
}

// helper
function elementToString(n, useRefs) {
    var attr = "", nest = "", a = n.attributes;
    for (var i=0; a && i < a.length; i++)
        attr += ' ' + a[i].nodeName + '="' + a[i].nodeValue + '"';

    if (n.hasChildNodes == false)
        return "<" + n.nodeName + "\/>";

    for (var i=0; i < n.childNodes.length; i++) {
        var c = n.childNodes.item(i);
        if (c.nodeType == 1)       nest += elementToString(c);
        else if (c.nodeType == 2)  attr += " " + c.nodeName + "=\"" + c.nodeValue + "\" ";
        else if (c.nodeType == 3)  nest += c.nodeValue;
    }
    var s = "<" + n.nodeName + attr + ">" + nest + "<\/" + n.nodeName + ">";
    return useRefs ? s.replace(/</g,'&lt;').replace(/>/g,'&gt;') : s;
};









