
// ----------------------------- //
//        FIELD SEARCH           //
// ----------------------------- //
FieldSearch = {
    // need to define list of all fields
    FieldList: [], 
    // need to define search url
    SearchUrl: 'JSONForm?Form=FieldSearch',
    // flag to show if search is in proccess
    FlagDoSearch: true,
    // Result of search
    Result: null,
    // Id of a result table
    ResultElement: 'search_field_results',
    // constructor for our FieldSearch
    //  - FieldSearch.SearchUrl must be defined to assign events to field
    //  - assign event to each field that was passed in list
    __init__: function() {
        $(FieldSearch.ResultElement).makeDraggable();
        if (FieldSearch.SearchUrl != null) {
            FieldSearch.FieldList.each(FieldSearch.AssignEvent);
        }
    },
    FormName: 'VnosnaForma',
    // ASSIGN EVENT WHEN KEY IS PRESSED
    AssignEvent: function(field_id) {
        var field = $(field_id);
        if (field != null) {
            
            field.addEvents( {
                'change': function(field) {
                    var ResultElement = $(FieldSearch.ResultElement)
                    ResultElement.empty()
                    ResultElement.addClass('ajax-loading');
                    
                    FieldSearch.Request = new Ajax(FieldSearch.SearchUrl, {
                        method: 'post',
                        data: $(FieldSearch.FormName),
                        onComplete: function(data) {
                            ResultElement.removeClass('ajax-loading');
                            FieldSearch.Result = Json.evaluate(data);
                            FieldSearch.ShowResults()
                        }
                    }).request();
                }
            });
        }
    },
    
    // SEARCH RESULTS
    //  - create table and replace it instead of ResultElement
    //  - make table draggable
    ShowResults: function() {
        // get table and emty it
        TABLE = $(FieldSearch.ResultElement);
        TABLE.empty();
        TABLE.addClass('show');
        
        
        // row caption
        var THEAD_TR = new Element('tr');
        THEAD_TR.setProperty('id', 'search_field_results_header');
        FieldSearch.Result.columns.each(
            function(item) {
                var TD = new Element('td');
                TD.setText(item);
                TD.injectInside(THEAD_TR)
            });
        THEAD_TR.setProperty('style', 'cursor: move;');
        
        // table head
        var THEAD = new Element('thead');
        THEAD_TR.injectInside(THEAD);
        THEAD.injectInside(TABLE);
        
        // table body
        var TBODY = new Element('tbody');
        FieldSearch.Result.rows.each(
            function(item, index) {
                var TBODY_TR = new Element('tr', {
                        'onclick': 'FieldDisplay.GetData('+FieldSearch.Result.ids[index]+')',
                        'style': 'cursor: pointer;',
                    });
                item.each(
                    function(item) {
                        var TD = new Element('td');
                        TD.setText(item);
                        TD.injectInside(TBODY_TR);
                    });
                TBODY_TR.injectInside(TBODY);
            });
        TBODY.injectInside(TABLE);
        
        // status row
        var THEAD_TR_STATUS = new Element('tr');
        var TD = new Element('td');
        var A_CLOSE = new Element('a');
        THEAD_TR_STATUS.setProperty('id', 'search_field_results_statusbar');
        TD.setProperty('colspan', '6');
        A_CLOSE.setProperty('href', '#')
        A_CLOSE.addEvent('click', function(event) {
            $(FieldSearch.ResultElement).removeClass('show');
        });
        A_CLOSE.setText('Zapri');
        A_CLOSE.injectInside(TD);
        TD.injectInside(THEAD_TR_STATUS);
        THEAD_TR_STATUS.injectInside(TBODY);
        
        
        
    }
};


// ----------------------------- //
//        FIELD DISPLAY          //
// ----------------------------- //
FieldDisplay = {
    // need to define list of all fields where results should be displayed
    FieldList: [], 
    // need to define search url
    DisplayUrl: 'JSONForm?Form=FieldDisplay',
    
    // DIPLAY SELECTED DATA
    GetData: function(id) {
        new Ajax(FieldDisplay.DisplayUrl+'&id='+id, FieldDisplay.RequestHandler).request();
    },
    
	
    // REQUEST HANDLER 
    //  - go thru fields and display data in fields
    //  - set FlagDoSearch to true so new search can be made
    RequestHandler: {
        method: 'get',
        onComplete: function(data) {
			
			/* if you don't reset form you have previous data in checkboxes */
			document.getElementById(FieldSearch.FormName).reset();
			
            var Result = Json.evaluate(data);
            FieldDisplay.FieldList.each(
                function(field) {
                    // set value
					
					
					
                    var value
                    switch (Result[field]) {
                        case true:
                            value = 'True';
                            break;
                        case false:
                            value = 'False';
                            break;
                        default:						
							value = Result[field];
                    }
					
					

					
                    // make field show the new value
                    switch (field.type) {
                        
						// normaly this should do the job
                        default:
							
							if(field=='work_position' && value==-2)
							{
								$('work_position_other').disabled = null;
							}
							
							if(field=='contact_work_position' && value==-2)
							{
								$('contact_work_position_other').disabled = null;
							}
							
							
							if (field=='themes' || field=='target_groups')
							{

								value = String(value);
								checked_boxes = value.split(',');
															
								for (i=0;i<checked_boxes.length;i++)
								{
									name = field + '_' + checked_boxes[i];
									element = document.getElementById(name);
									
									element.checked = 'checked'	
								}	
							}
                            $(field).value = value;
							
							
                    }
                    /*
                    tmp = FieldSearch.Request2[field];
                    if (field == "subscribed") {
                	    $(field).checked = FieldSearch.Request2[field];
                    } else 
                    if ((typeof(tmp) === 'object') && (tmp)) {
                	    //TODO: make it more beautifull
                	    if (field == 'theme2')
                    	UnCkeckAll (document.forms[0].theme2);
                	    if (field == 'targetGroups2')
                    	UnCkeckAll (document.forms[0].targetGroups2);
                        //UnCkeckAll ($("select[@name='" + field + "']"));
                	    for (var i=0; i < tmp.length; i++) {
    	                $(field + '_'+ tmp[i]).checked = true;
    	            }
                    } else {
                        $(field).value = FieldSearch.Request2[field];
                    }
                    */
                });
            FieldSearch.FlagDoSearch = true;
        },
    },
};



/*
ResponseHandler = {
    Data: null,
}

FieldSearch2 = {
    FieldArray: {},
    IDArray: {},
    FieldList: [], 
    ResultElement: 'search_result',
    SearchUrl: '/admin/users/search',
    IDUrl: '/admin/users/get_id',
    Request: null,
    Request2: null,
    Data: null,
    DoSearch: true,
    __init__: function() {
        // assign event to each field that was passed in list
        FieldSearch2.FieldList.each(FieldSearch2.AssignEvents);
    },
    AssignEvents: function(field_id) {
        var field = $(field_id);
        $(field_id).addEvents({
            'keyup': FieldSearch2.JSONRequest,
        });
    },
    JSONRequest: function() {
        if (FieldSearch2.DoSearch === false) {
            return null;
        }
        // make object list of all field
        FieldSearch2.FieldList.each(
            function(field) {
                FieldSearch2.FieldArray[field] = $(field).value;
            });
        // do json request
        new Ajax(FieldSearch2.SearchUrl+'?'+Object.toQueryString(FieldSearch2.FieldArray), RequestHandlerA).request();
    },
    ShowResults: function() {
        // make table
        var TABLE = $(FieldSearch2.ResultElement).empty(); // empties result table and returns it
        
        // table head
        var THEAD = new Element('thead');
        var THEAD_TR = new Element('tr');
        FieldSearch2.Request.columns.each(
            function(item) {
                var TD = new Element('td');
                TD.setText(item);
                TD.injectInside(THEAD_TR)
            });
        THEAD_TR.setProperty('style', 'cursor: move;');
        THEAD_TR.injectInside(THEAD);
        THEAD.injectInside(TABLE);
        
        // table body
        var TBODY = new Element('tbody');
        FieldSearch2.Request.rows.each(
            function(item, index) {
                var TBODY_TR = new Element('tr', {
                        'onclick': 'FieldSearch2.ShowField('+FieldSearch2.Request.ids[index]+')',
                        'style': 'cursor: pointer;',
                    });
                item.each(
                    function(item) {
                        var TD = new Element('td');
                        TD.setText(item);
                        TD.injectInside(TBODY_TR);
                    });
                TBODY_TR.injectInside(TBODY);
            });
        TBODY.injectInside(TABLE);
        
        $(FieldSearch2.ResultElement).replaceWith(TABLE);
        
        // make search box dragabble
        $(FieldSearch2.ResultElement).makeDraggable();
    },
    JSONRequest2: function(id) {
        FieldSearch2.IDArray['id'] = id;
        new Ajax(FieldSearch2.IDUrl+'?'+Object.toQueryString(FieldSearch2.IDArray), RequestHandlerA2).request();
    },
    ShowField: function(id) {
        FieldSearch2.JSONRequest2(id);
    },
}
RequestHandlerA = {
    method: 'get',
    onComplete: function(data) {
        FieldSearch2.Request = Json.evaluate(data);
        FieldSearch2.ShowResults();
    },
}
RequestHandlerA2 = {
    method: 'get',
    onComplete: function(data) {
        FieldSearch2.Request2 = Json.evaluate(data);
        FieldSearch2.DoSearch = false;
        FieldSearch2.FieldList.each(
            function(field) {
                $(field).value = FieldSearch2.Request2[field];
            });
        FieldSearch2.DoSearch = true;
    },
}
ResponseHandlerA = {
    Data: null,
}

function UnCkeckAll(chk)
{
   for (i=0; i < chk.length; i++)
      chk[i].checked = false;
}
*/
