﻿
if ( !page )
    var page = {};

if ( !jgn )
    var jgn = {};

jgn.util = {};

jgn.util.json = {
    
    toForm : function(field, obj)
    {
        if ( obj == null || field == null || field.type == "" )
            return;
        
        var value = null;
        var name = field.id;
        if ( name == null || name == "" )
            name = field.name;
        
        if ( name == null || name == "" )
            return;
        
        if ( typeof(obj[name]) == "undefined" )
            return;
        
        value = obj[name];
        if ( value == null || value == "" )
            return;
        
        if ( field.type == "text" )
        {
            field.value = value;
        }
        else if ( field.type == "select-one" )
        {
            for ( var i = 0; i < field.options.length; i ++ )
            {
                if ( field.options[i].value == value )
                {
                    field.selectedIndex = i;
                    break;
                }
            }
        }
    },
    
    fromForm : function(field, obj)
    {
        if ( obj == null || field == null || field.type == "" )
            return;
        
        var value = null;
        var name = field.id;
        if ( name == null || name == "" )
            name = field.name;
        
        if ( name == null || name == "" )
            return;
        
        if ( typeof(obj[name]) == "undefined" )
            return;
        
        if ( field.type == "text" )
        {
            value = field.value;
        }
        else if ( field.type == "select-one" )
        {
            if ( field.selectedIndex < 0 )
                value = "";
            else
                value = field.options[ field.selectedIndex ].value;
        }

        obj[name] = value;
    },
    
    toQS : function(obj)
    {
        if ( obj == null )
            return "";
            
        var qs = "";
        var type = "";
        var value = "";
        
        if ( obj.length )
        {
        }
        else
        {
            for ( field in obj )
            {
                type = typeof(obj[field]) + "";
                
                if ( type == "function" || type == "object" )
                    continue;
                
                value = obj[field];
                if ( value == null || value == "" )
                    continue;
                
                qs += field + "=" + escape(obj[field]) + "&";
                
            }
            
            if ( qs != "" )
                qs = qs.substring(0, qs.length-1);
            
            return qs;
        }
    },
    
    fromQS : function(T, str)
    {
        if ( str == null )
            str = "";

        var obj = ( T ? new T() : {} );

        var parts = str.split("&");
        var pair = null;
        var name = null;
        var value = null;
        
        for ( var idx = 0; idx < parts.length; idx ++ )
        {
            pair = parts[idx].split("=");
            if ( pair.length != 2 )
                continue;
                
            name = pair[0];
            value = pair[1];
            if ( name == "" || value == "" )
                continue;
            
            if ( typeof( obj[name] ) == "undefined" )
                continue;
            
            obj[name] = unescape(value);
        }
        
        return obj;                
    }
}
