/**
*	Констркутор класса.
*	@param cHydraWysiwygEditor wysiwygEditor эдитор которому пренадлежит
*	объект этого вспомогательного класса
*/
var cTableFunctions = function(wysiwygEditor)
{
    this.wysiwygEditor = wysiwygEditor;
}
/**
*	получает по запросу актуальную таблицу(this_table), актуальную строчку(this_tr)
*	и актуальную яйчеку(this_td) в которой находится курсор юзера
*/

cTableFunctions.prototype.get_table_data = function(){
    //var cwin = this.wysiwygEditor.get_iframe_elem().contentWindow;
    //debugger;
    var selection = this.wysiwygEditor.current_selection;
    var temp_node = this.wysiwygEditor.get_selected_object();
    var this_table = null;
    var this_tr = null;
    var this_td = null;
    while(temp_node!==null)
    {
        if(temp_node.nodeName=='TABLE')
        {
            this_table = temp_node;
            break;
        }
        if(temp_node.nodeName=='TR')
            this_tr = temp_node;

        if(temp_node.nodeName=='TD')
            this_td = temp_node;

        temp_node = temp_node.parentNode;
    }
    if(this_table == null || this_tr == null || this_td == null) return false;
    else{
        var arr = Array();
        arr['this_table']=this_table;
        arr['this_tr']=this_tr;
        arr['this_td']=this_td;
        return arr;
    }
}
/**
*	вставляет строку до.
*/

cTableFunctions.prototype.insert_table_row_before = function() {
   // debugger;
    var this_document = this.wysiwygEditor.get_iframe_elem().contentWindow.document;
    var table_data = this.get_table_data();
    var index = get_index_of_tr_in_table(table_data['this_table'],table_data['this_tr']);
    var tr = table_data['this_table'].insertRow(index);
    for(var i = 0; i<table_data['this_tr'].childNodes.length;i++){
        var td = this_document.createElement('TD');
        td.appendChild(this_document.createTextNode('node '+(index+1)+' '+(i+1)));
        tr.appendChild(td);
    }

}
/**
*	вставляет строку после.
*/

cTableFunctions.prototype.insert_table_row_after = function() {
    var this_document = this.wysiwygEditor.get_iframe_elem().contentWindow.document;
    var table_data = this.get_table_data();
    var index = get_index_of_tr_in_table(table_data['this_table'],table_data['this_tr'])+1;
    var tr = table_data['this_table'].insertRow(index);

    for(var i = 0; i<table_data['this_tr'].childNodes.length;i++){
        var td = this_document.createElement('TD');
        td.appendChild(this_document.createTextNode('node '+(index+1)+' '+(i+1)));
        tr.appendChild(td);
    }
}
/**
*	вставляет столбик до.
*/

cTableFunctions.prototype.insert_table_column_before = function() {
    var this_document = this.wysiwygEditor.get_iframe_elem().contentWindow.document;
    var table_data = this.get_table_data();
    var index = get_index_of_td_in_tr(table_data['this_tr'],table_data['this_td']);
    if(navigator.appName == 'Microsoft Internet Explorer')
        {
            var table_compatible = table_data['this_table'].childNodes[0];
        }
    if(navigator.appName == 'Netscape')
        {
            var table_compatible = table_data['this_table'];
        }
    for(var i = 0; i<table_compatible.childNodes.length;i++){
        var tr = table_compatible.childNodes[i];
        var td = tr.insertCell(index);
        td.appendChild(this_document.createTextNode('node '+(i+1)+' '+(index+1)));
    }
}
/**
*	вставляет столбик после.
*/

cTableFunctions.prototype.insert_table_column_after = function() {
    var this_document = this.wysiwygEditor.get_iframe_elem().contentWindow.document;
    var table_data = this.get_table_data();
    var index = get_index_of_td_in_tr(table_data['this_tr'],table_data['this_td'])+1;
        if(navigator.appName == 'Microsoft Internet Explorer')
        {
            var table_compatible = table_data['this_table'].childNodes[0];
        }
    if(navigator.appName == 'Netscape')
        {
            var table_compatible = table_data['this_table'];
        }
    for(var i = 0; i<table_compatible.childNodes.length;i++){
        
        var tr = table_compatible.childNodes[i];

        var td = document.createElement('td');
        tr.appendChild(td);

        //var td = tr.insertCell(index);
        td.appendChild(this_document.createTextNode('node '+(i+1)+' '+(index+1)));
    }
}
/**
*	создает лейбл с инпутом внутри (удобно для составления форм).
*/

function create_label_input(input_name,label_name,value)
{    
    var label = document.createElement('label');
    var input = document.createElement('input');
    var span = document.createElement('span');
    input.setAttribute('name', input_name);
    input.setAttribute('value', value);
    span.appendChild(document.createTextNode(label_name));
    label.appendChild(span);
    label.appendChild(input);

    return label;
}

/**
*	создает лейбл .
*/
function create_label(label_name,label_id)
{
    
    var label = document.createElement('label');
    label.setAttribute('id', label_id)
    var span = document.createElement('span');
    span.appendChild(document.createTextNode(label_name));
    label.appendChild(span);
    return label;
}
/**
*	возвращает индекс строки в таблице
*/

function get_index_of_tr_in_table(table,tr){
    if(navigator.appName == 'Microsoft Internet Explorer')
        {
            var nodes = table.childNodes[0].childNodes;
        }
    if(navigator.appName == 'Netscape')
        {
            var nodes = table.childNodes;
        }
    for(var i=0;i<nodes.length;i++){
        if (nodes[i] == tr)
            return i;
    }
    return -1;
}
/**
*	возвращает индекс яйчейки в строке
*/
function get_index_of_td_in_tr(tr,td){
    for(var i=0;i<tr.childNodes.length;i++){
        if (tr.childNodes[i] == td)
            return i;
    }
    return -1;
}
