var Tuki = new Object();

Tuki.ver = '1.0';

Tuki.reload = function()
{
	location.reload();
}

Tuki.number = new Object();	

Tuki.number.hour2day = function(num)
{
	hours = Math.ceil(num);
	
	var text = '';
	
	var days = Math.floor(hours / 24);
	var hours = Math.ceil(hours % 24);
	
	if (days > 0) {
		text = days.toString() + '天';
	}
	if (hours > 0) {
		text = text + hours.toString() + '小时';
	}
	
	return text;
}

Tuki.number.toString = function(num)
{
	if (num == 0) return 0;
	
	var text = '';
	
	if (num >= 100000000) {
		floor1  = Math.floor(num / 1000000) / 100;
		num = num - floor1 * 100000000;
		text = text + floor1 + '亿';
	}
	if (num >= 10000) {
		floor2  = Math.floor(num / 100) / 100;
		num = num - floor2 * 10000;
		text = text + floor2 + '万';
	}
	if (num > 0) text = text + num;
	
	return text;
}

Tuki.number.moneyFormat = function(num)
{
	num = num.toString().replace(/\$|\,/g, '');
	if(isNaN(num)) num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num * 100 + 0.50000000001);
	cents = num % 100;
	num = Math.floor(num / 100).toString();
	if(cents < 10) cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
	num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
	var money = (((sign) ? '' : '-') + num + '.' + cents);
	return money;
}

//select 操作
Tuki.select = new Object();

Tuki.select.addOption = function(obj, txt, val)
{
	if (typeof(obj) == 'string') obj = document.getElementById(obj);
	obj.options[obj.options.length] = new Option(txt, val);
}

Tuki.select.addOptions = function(obj, opts)
{
	//if (typeof(obj) == 'string') obj = document.getElementById(obj);
	var optionHtml = '';
	for(var v in opts) {
		optionHtml = optionHtml + '<option value="' + v + '">'+ opts[v] +'</option>'
		//obj.options.add(new Option(opts[v], v));
	}
	//console.log(optionHtml);
	$('#'+obj).html(optionHtml);
}

Tuki.select.removeOption = function(obj, indexValue)
{
	if (typeof(obj) == 'string') obj = document.getElementById(obj);
	obj.remove(indexValue);
}

Tuki.select.removeOptions = function(obj)
{
	if (typeof(obj) == 'string') obj = document.getElementById(obj);
	obj.options.length = 0;
}

Tuki.box = new Object();
Tuki.box.show = function()
{
	if (arguments.length == 1) {
		$('#facebox_title').html(arguments[0]);
	}
	//$('#facebox .header').hide();
	$('#facebox .content').html('<div class="loading">读取中...</div>');
	$('#facebox').fadeIn().css({
		top:  $(window).scrollTop() + $(window).height() / 10,
		left: $(window).width() / 2 - ($('#facebox table').width() / 2)
	});
}
Tuki.box.fill = function(html)
{
	if (arguments.length == 2) {
		$('#facebox_title').html(arguments[1]);
	}
	$('#facebox_content').html(html);
	//$("#facebox .header").show();
	//$("#facebox .body").show();
	$('#facebox').css('left', $(window).width() / 2 - ($('#facebox table').width() / 2))
	$('#ie6hack').css('height', $('#facebox').height());
}
Tuki.box.hide = function()
{
    $('#facebox').fadeOut();
}
Tuki.box.notice = function(message)
{
	$('#facebox .header').hide();
	$('#facebox .content').html('<div class="notice">' + message + '</div>');
	setTimeout('Tuki.box.hide()', 1500);
}

//window
Tuki.window = new Object();
Tuki.window.open = function(url) {
	window.open(url, 'window', 'height=640,width=600,titlebar=no,scrollbars=yes,status=no,toolbar=no,menubar=no,location=no,resizable=no');
}
Tuki.window.reload = function()
{
	window.location.reload();
}
Tuki.window.redirect = function(url)
{
	window.location.href = url;
}

Tuki.url = function()
{
	var parsed = false;
	var uri = {};
	
	var parse = function(str) {
		str = (typeof(str) == 'undefined') ? window.location : str;
		str = decodeURI(str);
		
		var  o   = {
			strictMode: true,
			key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
			q:   {
				name:   "queryKey",
				parser: /(?:^|&)([^&=]*)=?([^&]*)/g
			},
			parser: {
				strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?)(?:#(.*))?/,
				loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/\/?)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // Added one optional slash to post-protocol to catch file:/// (should restrict this)
			}
		};
		
		var m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
		//uri = {},
		i   = 14;
		while (i--) uri[o.key[i]] = m[i] || "";
		
		uri[o.q.name] = {};
		uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
		if ($1) uri[o.q.name][$1] = $2;
		});
		
		parsed = true;
	};
	
	var param = function(key)
	{
		if (!parsed) parse();
		return (uri.queryKey[key] === null ) ? null : uri.queryKey[key];
	};
	
	var attr = function(key)
	{
		if (!parsed) parse();
		return (uri[key] == '') ? null : uri[key];
	}
	
	var hash = function()
	{
		window.location.hash = uri['relative'];
	}
	
	return {
		hash: hash,
		parse: parse,
		param: param,
		attr: attr
	};
}();
	

//jquery tooltip plugin by ranhuan
jQuery.fn.tooltip = function() {
	return this.each(function(){
		var loading = '读取中......';
		var border = 10;
		var contents = false;
		var url = false;
		var tooltip = $('#tooltip');
		var $this = $(this);
		var offset = [20, 20];
		var tooltipLeft = false;
		var tooltipTop = false;
		var tooltipHeight = 40;
		var tooltipWidth = 100;
		$this.hoverIntent(
			function(event){
				$this.bind("mousemove", resize);
				if (contents) {
					//如果有内容则先填充再显示
					$('#tooltip_body').html(contents);
					resize(event);
					tooltip.show();
				} else {
					//如果无内容则先显示再填充
					resize(event);
					tooltip.show();
					if (!url) url = $this.attr('title');
					$.get(url, function(data){	
						contents = data;
						$('#tooltip_body').html(contents);
					});
					$this.attr('title', '');
				}
			},
			function() {
				$this.unbind("mousemove");
				tooltip.hide();
				$('#tooltip_body').html(loading);
			}
		);
		
		var resize = function(e)
		{
			tooltipWidth = tooltip.width();
			tooltipHeight = tooltip.height();
			
			//左边左边
			tooltipLeft = e.pageX + offset[0];
			//如果左溢出则转到右边
			if ($(window).width() + $(window).scrollLeft() < tooltipLeft + tooltipWidth) {
				tooltipLeft = e.pageX - offset[0] - tooltipWidth;
				//如果右边也溢出那还是回左边
				if (tooltipLeft < $(window).scrollLeft()) {
					tooltipLeft = e.pageX + offset[0];
				}
			}
			
			//顶部坐标
			tooltipTop = e.pageY + offset[1];
			
			//如果下溢出则抬高
			if (tooltipTop + tooltipHeight > $(window).scrollTop() + $(window).height()) {
				tooltipTop = $(window).scrollTop() + $(window).height() - tooltipHeight - border;
			}
			//如果上溢出则居中
			if (tooltipTop < $(window).scrollTop()) {
				tooltipTop = $(window).scrollTop() + $(window).height() - tooltipHeight;
			}
			
			tooltip.css({left:tooltipLeft, top:tooltipTop});
		}
	});
};

/*
//jquery validator plugin by ranhuan
jQuery.fn.validator = function(cfg) {
    return this.each(function(){
        var dCfg = {
            onsuccess: '',
            onempty: '必填',
            compare: ''
            };
        $.extend(dCfg, cfg);
                              
        var $this = $(this);
        var $tip = $('<span />');
        $tip.insertAfter($this);
        if (dCfg.onshow != '') {
            $tip.addClass('onshow').html(dCfg.onshow);
        }
        $this.bind('focus', function() {
            $tip.removeClass().addClass('onfocus').html(dCfg.onfocus);
        }).bind('blur', function(){
            //var class = 'onsuccess';
            var msg = dCfg.onsuccess;
            if (dCfg.type == 'input') {
                if ($.trim($this.val()) == '') {
                    class = 'onerror';
                    msg = dCfg.onempty;
                } else if ($this.val().length < dCfg.min || $this.val().length > dCfg.max) {
                    class = 'onerror';
                    msg = dCfg.onerror;
                }
            }
            if (dCfg.required) {
                if ($.trim($this.val()) == '') {
                    class = 'onerror';
                    msg = dCfg.onempty;
                }
            }
            if (dCfg.compare != '') {
                if ($this.val() != $('#' + dCfg.compare).val()) {
                    class = 'onerror';
                    msg = dCfg.compare_fail;
                }
            }
            $tip.removeClass().addClass(class).html(msg);
        });
    });
};

function isValidForm(formObj)
{
    $(formObj).contents().find(':input').trigger('blur');
    if ($(formObj).contents().find(':input + span').hasClass('onerror')) {
        return false;
    }
    return true;
}
 */ 