﻿if(typeof(Epoint_Button) != "object")
	var Epoint_Button=[];
var aButton = new Array();
var butCount = 0;

function Init_Button(id,type,autoDisableWhenClick,msg,url,opentype,features,FunArguments,FunAfterDialogClose)
{
    var elem = Epoint_getElementById(id);
    if(typeof(elem)!="object") return;
    var button;
    switch(type.toLowerCase())
    {
        case "add":
            button = new AddButton(id,type,elem,autoDisableWhenClick,url,opentype,features,FunArguments,FunAfterDialogClose,autoDisableWhenClick);
            break;
        case "delete":
            button = new DeleteButton(id,type,msg,elem,autoDisableWhenClick);
            break;
        case "close":
            button = new CloseButton(id,type,elem,autoDisableWhenClick);
            break;
        default:
            button = new Button(id,type,elem,autoDisableWhenClick);
            EpointaddEventListener(elem,"click",NormalButtonClick);
            break;
    }
    Epoint_Button[id] = button;    
}      

function Button(id,type,elem,autoDisableWhenClick)
{    
    this.Id = id;
    this.Type = type;
    this.Element = elem;
    this.HasClick = false;
    this.AutoDisableWhenClick = autoDisableWhenClick;
    aButton[butCount++] = id;    
}

function CloseButton(id,type,elem,autoDisableWhenClick)
{
    var me = new Button(id,type,elem);
    me.AutoDisableWhenClick = autoDisableWhenClick;
    EpointaddEventListener(elem,"click",CloseMe);
    return me;
}

function AddButton(id,type,elem,autoDisableWhenClick,url,opentype,features,FunArguments,FunAfterDialogClose)
{
    var me = new Button(id,type,elem);
    me.Url = url;
    me.OpenType = opentype;
    me.Features = features;
    me.FunAfterDialogClose = FunAfterDialogClose;
    me.AutoDisableWhenClick = autoDisableWhenClick;
    if(FunArguments !=null && FunArguments!="")
        me.FunArguments = eval(FunArguments + "()");
    else
        me.FunArguments= "";
    EpointaddEventListener(elem,"click",OpenUrl);
    return me;
}



function DeleteButton(id,type,msg,elem,autoDisableWhenClick)
{
    var me = new Button(id,type,elem);
    me.RaiseMsg = msg;
    me.Confirm = ConfirmInfo;
    me.AutoDisableWhenClick = autoDisableWhenClick;
    EpointaddEventListener(elem,"click",ButtonClick);
    return me;
}

function OpenUrl(evt)
{
    if(evt == null) evt = window.event;
	if(evt != null)
	{
	    var elem = Epoint_getSrcElement(evt);
		var but = Epoint_Button[elem.id];

	    var script =" window.";
		if(but.OpenType != "")
		{
		    var arg = but.FunArguments;
		    script += but.OpenType;
		    script += "('" + but.Url + "',";
		    script += "arg";
		    script += ",'" + but.Features + "')";
		    eval(script);
		}
		
		if(but.OpenType != "showModalDialog")
		{
		    if(but.FunAfterDialogClose != "")
		        eval(but.FunAfterDialogClose);
		}
	}    
}

function CloseMe()
{    
    if(aButton != null && aButton.length > 0)
    {
        for(var i=0;i<aButton.length;i++)
        {
            if(Epoint_Button[aButton[i]].Type != "delete")
                continue;
            Epoint_Button[aButton[i]].HasClick = false;
        }
    }
    window.close();
}

function NormalButtonClick(evt)
{
    if(evt == null) evt = window.event;
	if(evt != null)
	{
		var elem = Epoint_getSrcElement(evt);
		var but = Epoint_Button[elem.id];
		if(but)
		{
		    if(Epoint_Button[elem.id].AutoDisableWhenClick)
            {
                setTimeout('Epoint_Button["'+ elem.id + '"].Element.disabled=true',10);
                setTimeout('Epoint_Button["'+ elem.id + '"].Element.disabled=false',2000);
            }
		    if(aButton != null && aButton.length > 0)
            {
                for(var i=0;i<aButton.length;i++)
                {
                    if(Epoint_Button[aButton[i]].Type != "delete")
                        continue;
                    Epoint_Button[aButton[i]].HasClick = false;
                }
            }
        }
    }
}

function ConfirmInfo()
{
    if(this.HasClick)
    {
        this.HasClick = false;
        return confirm(this.RaiseMsg);
    }
    return true;
}

function ConfirmDelButton()
{
    
    if(aButton != null && aButton.length > 0)
    {
        for(var i=0;i<aButton.length;i++)
        {
            if(Epoint_Button[aButton[i]].Type != "delete")
                continue;
            if(Epoint_Button[aButton[i]].HasClick && !Epoint_Button[aButton[i]].Confirm())
                return false;
        }
    }
    return true;
}

function ButtonClick(evt)
{
    if(evt == null) evt = window.event;
	if(evt != null)
	{
		var elem = Epoint_getSrcElement(evt);
		var but = Epoint_Button[elem.id];
		if(but)
		{
		    if(aButton != null && aButton.length > 0)
            {
                for(var i=0;i<aButton.length;i++)
                {
                    if(Epoint_Button[aButton[i]].Type != "delete")
                        continue;
                    Epoint_Button[aButton[i]].HasClick = false;
                }
            }
            but.HasClick = true;
		}
	}    
}