﻿/* 

###### 公共函数库 ######

相对于QDLibrary.JS.Extend.js：

QDLibrary.JS.Extend.js  更专注对 javascript对象本身的扩展和功能加强

QDLibrary.JS.CFL.js     则专注于实际应用中全新开发的对象或函数

*/

//
//全选[e:一个name值，或者一个控件数组; frm,可选],可实现跨框架或窗体操作，如果e==null,则查找所有的checkbox控件
//
//支持 checkall.oncheck 事件
//
function checkall(e,frm)
{
	var list;
	
	if(e == null)
	{
		try
		{
			list = $PV("type","checkbox","input");
		}
		catch(e){return;}
	}
	else if(typeof(e) == "string")
	{
	    if(frm == null)
	        frm = window;
	        
		list = frm.document.getElementsByName(e);
	}
	else
		list = e;
			
	var len = list.length;
	var chk ;
	
	for(var i=0; i<len; i++)
	{
	    chk = list[i];
		chk.checked = true;
		
		if(checkall.oncheck != null)
		    checkall.oncheck(chk);
	}
}

//
//反选[e:一个name值，或者一个控件数组; frm,可选,可实现跨框架或窗体操作]，如果e==null,则查找所有的checkbox控件
//
//支持 reverseheck.oncheck 事件
//
function reverseheck(e,frm)
{
	var list;
		
	if(e == null)
	{
		try
		{
			list = $PV("type","checkbox","input");
		}
		catch(e){return;}
	}
	else if(typeof(e) == "string")
	{
	    if(frm == null)
	        frm = window;
	        
		list = frm.document.getElementsByName(e);
	}
	else
		list = e;
	
	var len = list.length;
	var chk = null;
	
	for(var i=0; i<len; i++)
	{
		chk = list[i];
		
		chk.checked = (!chk.checked);
		
		if(reverseheck.oncheck != null)
		    reverseheck.oncheck(chk);
	}
} 


//
// 选择器
//
// 示例:
// var s = new Selector("color:balck","color:red;height:40px;");
// <a href='#' onclick='s.select(this);'>..</a>
//
function Selector(defCss, selCss)
{
    this.selected = null;
    this.onselect = null;
    
    this.defcss = defCss;
    this.selcss = selCss;
    
    this.select = function(e)
    {
        if(e == this.selected)
            return;
            
        e.style.cssText = this.selcss;
        
        if(this.selected != null)
            this.selected.style.cssText = this.defcss;
        
        this.selected = e;
        
        if(this.onselect != null)
        {
            try
            {
                this.onselect(e);
            }
            catch(ex){}
        }
    }
}

function Point()
{
    this.X = null;
    this.Y = null;
}
//获取某个对象的(x,y)
//
Point.Get = function(e)
{    
    var p = new Point(); 
    
	p.Y = e.offsetTop;
	p.X = e.offsetLeft;	
	
	var e1 = e.offsetParent;
	
	while (e1)
	{
	    p.Y  += e1.offsetTop;
	    p.X  += e1.offsetLeft;
	    
	    e1 = e1.offsetParent;
	}			
	return p;
}
