﻿

Type.registerNamespace("Syncfusion.Web.UI");
Syncfusion.Web.UI.ControlBase = function( element )
{
    Syncfusion.Web.UI.ControlBase.initializeBase(this, [element]);
    
    this.id = this.get_id();
    
    this._name = element.id;
    this._serverId = element.id;
    this._scriptObjectId = element.id;
    this._clientOnly = false;
}
Syncfusion.Web.UI.ControlBase.prototype = 
{
    initialize : function(){
        window[this.get_scriptObjectId()] = this;        
        Syncfusion.Web.UI.ControlBase.callBaseMethod(this, "initialize");
        this.addToControlManager.apply( this );
    },
    addToControlManager : function(){
        Syncfusion.Web.UI.ControlManager.Add( this );
    },
    dispose : function(){
        Syncfusion.Web.UI.ControlManager.Remove( this );
        window[this.get_scriptObjectId()] = null;
        Syncfusion.Web.UI.ControlBase.callBaseMethod(this, "dispose");
    },
    set_name : function(sVal){
        this._name = sVal;
    },
    get_name : function(){
        return this._name;
    },
    set_serverId : function( sVal ){
        this._serverId = sVal;
    },
    get_serverId : function(){
        return this._serverId;
    },
    set_clientOnly : function( bVal ){
        this._clientOnly = bVal;
    },
    get_clientOnly : function(){
        return this._clientOnly;
    },
    set_scriptObjectId : function( sVal ){
        this._scriptObjectId = sVal;
    },
    get_scriptObjectId : function(){
        return this._scriptObjectId;
    },
    set_images : function(arrImgs){
        Syncfusion.Web.UI.ImageStorage.storageImages( arrImgs );
    },
    get_images : function(){
        return;
    },    
    
    //virtual
    SetAttributes: function() {},
    Create: function() {},
    
    //public methods
    ensureImg : function( sURL )
	{		
		return Syncfusion.Web.UI.ImageStorage.ensureImg(sURL);
	}
}
Syncfusion.Web.UI.ControlBase.registerClass('Syncfusion.Web.UI.ControlBase', Sys.UI.Control);

Syncfusion.Web.UI.CallbackControl = function( element )
{
    Syncfusion.Web.UI.CallbackControl.initializeBase(this, [element]);
    
    this.enableCallback = true;
    this.enablePostback = true;
    
    this.BeforeCallbackScript = "";
    this.BeforeCallback = function(arg){
        if( this.BeforeCallbackScript ){
            eval(this.BeforeCallbackScript);
        }            
    }
    this.AfterCallbackScript = "";
    this.AfterCallback = function(arg){
        if( this.AfterCallbackScript ){
            eval(this.AfterCallbackScript);
        }            
    }
    this.BeforeCallbackResponseProcessingScript = "";
    this.BeforeCallbackResponse = function(arg){
        if( this.BeforeCallbackResponseProcessingScript ){
            eval(this.BeforeCallbackResponseProcessingScript);
        }
    }
    
    this.AfterCallbackResponseProcessedScript = "";
    this.AfterCallbackResponse = function(arg){
        if( this.AfterCallbackResponseProcessedScript ){
            eval(this.AfterCallbackResponseProcessedScript);
        }
    }    
    this.AfterCallbackResponseScriptInternal = "";
    this.AfterCallbackInternal = function(arg){
        if( this.AfterCallbackResponseScriptInternal ){
            eval(this.AfterCallbackResponseScriptInternal);
        }
    }
    
    this.ShowLoadingImage = false;
    this.LoadingHtml = "";
    this.ShowWaitingPopup = false;
    this.DisabledElementID = "";
    this.TimeSpan = 0;
    
    this.StatusBarText = "";
    
    this.CallbackHandler = function(){alert("None")};
}

Syncfusion.Web.UI.CallbackControl.prototype = 
{
    initialize : function(){        
        __SFControlCollection.Add( this);
        Syncfusion.Web.UI.CallbackControl.callBaseMethod(this, "initialize");
    },
    dispose : function(){
        Syncfusion.Web.UI.ControlManager.Remove( this );
        window[this.get_scriptObjectId()] = null;
        Syncfusion.Web.UI.CallbackControl.callBaseMethod(this, "dispose");
    },
    
    callback : function(arg, async, ev ){
        SFCallBackControl_DoCallBack( this, this.get_name(), this.StatusBarText, this.CallbackHandler, arg, async, ev );        
    }
}
Syncfusion.Web.UI.CallbackControl.registerClass("Syncfusion.Web.UI.CallbackControl", Syncfusion.Web.UI.ControlBase);

Syncfusion.Web.UI._DisposableObject = function()
{    
    this._disposed = false;
    Sys.Application.registerDisposableObject(this);
}
Syncfusion.Web.UI._DisposableObject.prototype =
{
    get_isDisposed : function(){
        return this._disposed;
    },
    dispose : function(){
        this._disposed = true;
        Sys.Application.unregisterDisposableObject(this);
    }
}
Syncfusion.Web.UI._DisposableObject.registerClass("Syncfusion.Web.UI._DisposableObject", null, Sys.IDisposable );

Syncfusion.Web.UI.ControlCollection = function()
{
    Syncfusion.Web.UI.ControlCollection.initializeBase(this);
    this._ids = [];
    this._objects = {};
}
Syncfusion.Web.UI.ControlCollection.prototype =
{   
    dispose : function(){
        delete this._objects;
        this._objects = {};
        Syncfusion.Web.UI.ControlCollection.callBaseMethod(this, "dispose");
    },    
    Add : function( obj ){
        if( obj && obj.id )
        {
            var sID = obj.id;
            if( this.Contains( sID ) )
            {
                this.RemoveAt( sID );                
            }
            this._objects[ sID ] = obj;
            Array.add( this._ids, sID );
        }
    },    
    Get : function( sID ){
        return this._objects[ sID ];
    },    
    Remove : function( obj ){
        if( obj && obj.id )
        {
            this.RemoveAt( obj.id );
        }
    },    
    RemoveAt : function( sID ){
        if( sID )
        {
            this._objects[ sID ] = null;            
            Array.remove( this._ids, sID );
        }
    },    
    Contains : function( obj ){
        var bRes = false;
        if( typeof( obj ) == "string" )
	    {
	        bRes = null != this.Get(obj);
	    }
	    else if( obj && obj.id )
	    {
	        bRes = obj == this.Get(obj.id);
	    }
        return bRes;
    },    
    GetEnumerator : function(){
        return this._ids;
    }
}
Syncfusion.Web.UI.ControlCollection.registerClass("Syncfusion.Web.UI.ControlCollection", Syncfusion.Web.UI._DisposableObject );

Syncfusion.Web.UI._ControlManager = function()
{
    this._attributes = {};
    Syncfusion.Web.UI._ControlManager.initializeBase(this);
}
Syncfusion.Web.UI._ControlManager.prototype =
{   
    dispose : function(){       
        delete this._attributes;
        this._attributes = {};
        Syncfusion.Web.UI._ControlManager.callBaseMethod(this, "dispose");
    },    
    Add : function(obj){
        Syncfusion.Web.UI._ControlManager.callBaseMethod(this, "Add", [obj] );
        this._checkControlAttributes( obj.id );
    },
    SetControlAttributtes : function( sID, attributes ){
        this._attributes[ sID ] = attributes;
        this._checkControlAttributes( sID );
    },    
    _checkControlAttributes : function( sID ){
        var obj = this.Get( sID );
        if( obj && this._attributes[ sID ] )
        {
            obj.SetAttributes( this._attributes[ sID ] );
            this._attributes[ sID ] = null;
            obj.Create();
        }
    }
}
Syncfusion.Web.UI._ControlManager.registerClass("Syncfusion.Web.UI._ControlManager", Syncfusion.Web.UI.ControlCollection );
Syncfusion.Web.UI.ControlManager = new Syncfusion.Web.UI._ControlManager();

Syncfusion.Web.UI._ImageStorage = function()
{
    Syncfusion.Web.UI._ImageStorage.initializeBase(this);
    this._images = {};
}
Syncfusion.Web.UI._ImageStorage.prototype =
{   
    dispose : function(){
        delete this._images;
        Syncfusion.Web.UI._ImageStorage.callBaseMethod(this, "dispose");
    },
    ensureImg : function( sURL ){
        if (sURL && this._images && ( 0 != sURL.indexOf( "javascript:" ) ) )
		{
		    if (!this._images[sURL])
			{
				var oImg = new Image();
				oImg.src = sURL;
				this._images[sURL] = oImg;
			}
			return this._images[sURL].src;
		}
		return sURL;
    },    
   storageImages : function( arrImgUrls ){
        if( arrImgUrls && arrImgUrls.length ){
            for (var i = 0; i < arrImgUrls.length; ++i){
				this.ensureImg( arrImgUrls[i] );
			}
        }
    }
}
Syncfusion.Web.UI._ImageStorage.registerClass("Syncfusion.Web.UI._ImageStorage", Syncfusion.Web.UI._DisposableObject );
Syncfusion.Web.UI.ImageStorage = new Syncfusion.Web.UI._ImageStorage();


Syncfusion.Web.UI._Utility = function() {
}
Syncfusion.Web.UI._Utility.prototype = {

    getFirstChildByTagName : function( tagName, elem ){        
        if (!elem) throw Error.argumentNull('elem');
        var res = null;
        tagName = tagName.toUpperCase();
        var childs = elem.childNodes;
        for( var i = 0, len = childs.length; i < len; ++i )
        {
            var child = childs[i];
            if( child &&( child.tagName == tagName ))
            {
                res = child;
                break;
            }
        }
        return res;
    },
    parseUnit : function(value) {
        if (!value) throw Error.argumentNull('value');
        value = value.trim().toLowerCase();
        var l = value.length;
        var s = -1;
        for(var i = 0; i < l; i++) {
            var ch = value.substr(i, 1);
            if((ch < '0' || ch > '9') && ch != '-' && ch != '.' && ch != ',') {
                break;
            }
            s = i;
        }
        if(s == -1) {
            throw Error.create( "Unit '"+value + "'" +"has no digits");
        }
        var type;
        var size;
        if(s < (l - 1)) {
            type = value.substring(s + 1).trim();
        } else {
            type = 'px';
        }
        size = parseFloat(value.substr(0, s + 1));
        if(type == 'px') {
            size = Math.floor(size);
        }
        return { 
            size: size,
            type: type
        };
    }
}

Syncfusion.Web.UI._Utility.registerClass("Syncfusion.Web.UI._Utility");
Syncfusion.Web.UI.Utility = new Syncfusion.Web.UI._Utility();
 


Common={};
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();