/***************************************************************************
 *     Manage Dynamic Fields                                               *
 ***************************************************************************

/* NOTE : This script provide with Valet for ETD. Just some change for adapt it
 * at our needs. */

function addField(source_elem_id,target_div_id) {
    var clone_count = getCloneCount(source_elem_id,target_div_id);
    if(clone_count<=4){
        incrementCount(source_elem_id,target_div_id,clone_count,1);
        cloneElement(source_elem_id,target_div_id,clone_count);
        //alert_debug("FORM: " + document.getElementById("advancedSearchMyForm").innerHTML);
    }
    return false;
}


function removeField(source_elem_id,target_div_id) {
    var clone_count = getCloneCount(source_elem_id,target_div_id);
        if(clone_count>1){
                decrementCount(source_elem_id,target_div_id,clone_count,1);
                removeClone(source_elem_id,target_div_id,clone_count-1);
        }
        //alert_debug("FORM: " + document.check_form.innerHTML);
    return false;
}


function getCloneCount(source_elem_id,target_div_id) {
    var clone_count_id = '_count_' + source_elem_id;
    var clone_count_elem = document.getElementById(clone_count_id);
    var clone_count;
    if (clone_count_elem) {
        clone_count = clone_count_elem.getAttribute('value');
        clone_count_elem.setAttribute('value',clone_count);
    }else{
        var new_input_elem = document.createElement('input');
        new_input_elem.setAttribute('type','hidden');
        new_input_elem.setAttribute('id',clone_count_id);
        new_input_elem.setAttribute('name',clone_count_id);
        clone_count = 1;
        new_input_elem.setAttribute('value',clone_count);
        document.getElementById("advancedSearchMyForm").appendChild(new_input_elem);
    }
    return clone_count;
}


function incrementCount(source_elem_id,target_div_id,clone_count,increment){
        var clone_count_id = '_count_' + source_elem_id;
        var count_tmp = parseInt(clone_count)+parseInt(increment);
        document.getElementById(clone_count_id).value=count_tmp;
}


function decrementCount(source_elem_id,target_div_id,clone_count,decrement){
        var clone_count_id = '_count_' + source_elem_id;
        var count_tmp = parseInt(clone_count)-parseInt(decrement);
        document.getElementById(clone_count_id).value=count_tmp;
}


function cloneElement(source_elem_id,target_div_id,clone_count) {
    var source_node = document.getElementById(source_elem_id);
    var cloned_node = source_node.cloneNode(true);
    cloned_node.setAttribute('id','');
    updateAttributes(cloned_node,clone_count);

    var target_node = document.getElementById(target_div_id);
    var new_target_div = document.createElement('div');
    var new_target_div_id = source_elem_id + '_' + clone_count; 
    new_target_div.setAttribute('id',new_target_div_id);        
       
    new_target_div.appendChild(cloned_node);
    target_node.appendChild(new_target_div);
}


function removeClone(source_elem_id,target_div_id,clone_count){
         var removed_name = document.getElementById(source_elem_id).id+'_'+clone_count;
         var node_child = document.getElementById(removed_name);
         var target_node = document.getElementById(target_div_id);
         var result = target_node.removeChild(node_child);
}


function updateAttributes(node,count) {
    // add a _COUNT to all name attributes (e.g. name="subject_2") 
    if (node.name) {
       if(node.name.substring(0,5)=="conju"){
	 node.name = "conjunction"+(parseInt(node.name.substring(11))+parseInt(count));
       } 
       if(node.name.substring(0,5)=="field"){
	 node.name = "field"+(parseInt(node.name.substring(5))+parseInt(count));
       }   
       if(node.name.substring(0,5)=="query"){
	 node.name = "query"+(parseInt(node.name.substring(5))+parseInt(count));
       }
    }
    // for any element that has an id of "count_label" then change it's
    // text content to the current count of the dynamic elements
    if (node.id) {
       if (node.id == 'count_label') {
          node.innerHTML = count;
       }
    }
    // Clear all values from input nodes
    if (node.type == 'text' && node.nodeName == 'INPUT') {
       node.value = '';
    }

    var children = node.childNodes;
    for(var i=0; i < children.length; i++) {
        // Recurse
        updateAttributes(children[i],count);
    }
}



/*
* DESCRIPTION:
*  This is called by the load(url) function at the top of this file. It will
*  add the appropriate number of dynamic fields to the form based on the user's
*  previous entries for this form.
* ACCEPTS:
*  total = number of dynamic fields to add
*  multiple_key = an identifier that encodes the source and target elements
*  that will be used for the cloning
*/
function addFields(total,multiple_key) {
        // Get source and target by splitting the _count key
        var source_target = multiple_key.substr(7); 
        var info = source_target.split('-');
        var source = info[0];
        var target = info[1];

        for (var i = 1; i <= total; i++) {
                addField(source,target);
        }
}


function alert_debug(string) {
        top.consoleRef=window.open('','myconsole',
          'width=500,height=500'
           +',menubar=0'
           +',toolbar=1'
           +',status=0'
           +',scrollbars=1'
           +',resizable=1')
        top.consoleRef.document.writeln(string);
        top.consoleRef.document.close()
}

