var imgUrl = "pages/images/search_minus.png";
var index = 0;

//var cursordId = "input[" + 0 +"]";
var cursordId = "";

function hide( id ){
    var mySlide = new Fx.Slide( id , {
        duration: 'long',
        transition: Fx.Transitions.Bounce.easeOut
    });
    mySlide.hide();
}

function slideOut( id ){
    var mySlide = new Fx.Slide( id );
    mySlide.slideOut();
}

function slideIn( id ){
    var mySlide = new Fx.Slide( id );
    mySlide.slideIn();
}

function getTarget( id ) {
    var k = 0;
    for ( var i = 0; i < id.length; i++ ){
        if( id.charAt( i ) == '[' ) {
            k = i;
            break;
        }
    }
    var newId = id.substring( k+1, id.length - 1  ) ;
    return newId;
}


function clicked( e ){
    //alert( "other exploder" );
    var targetId = getTarget( e.target.id );
    var newId = "input[" + targetId +"]";
    if ( cursordId == newId  )
        return;
    slideIn( newId );
    var temp = cursordId;
    cursordId = newId;
//alert( "other exploder exit" );
}

function ie_clicked(){
    //alert( "internet exploder" );
    var id = event.srcElement.id;
    var targetId = getTarget( id );
    var newId = "input[" + targetId +"]";
    if ( cursordId == newId  )
        return;
    slideIn( newId );
    var temp = cursordId;
    cursordId = newId;
//alert( "internet exploder exit" );
//slideOut( temp );
}


function initEvent( id ){
    var initVar = document.getElementById( "keyword[" +id +"]" );

    if (  initVar.addEventListener ){
        initVar.addEventListener( 'click', clicked , false );;
        var fields = document.getElementById( "input[" + id + "]" );
        hide( fields );
    } else {
    	//var inputContent = initVar.cloneNode(false);
        initVar.attachEvent( 'onclick', ie_clicked );
        var fields = document.getElementById( "input["+ id + "]" );
        slideOut( fields );
    }
}

function closeAdvanceOptions( id ){
    //alert( " test " +id );
    slideOut( id );
    cursordId = "";
}


function addNewInput(){
    var initVar = document.getElementById( "keyword[" +0 +"]" );
    var fields = document.getElementById( "input[0]" );
    var br1 = document.createElement( "br" );
    var br2 = document.createElement( "br" );
    var inputContent = initVar.cloneNode( false );
    var newfields = document.createElement( "div" );
    newfields.innerHTML = fields.innerHTML;
    var removeButton =  document.createElement( "i" );
    removeButton.innerHTML = " <a name = 'removeBtn' id='remove[" + index + "]' href='javascript:removeInput(" + index + ");'><img src='" + imgUrl + "' alt='remove criteria' align='absbottom' border='0' height='16' width='16'></a>";
    br1.id = "br1_" + index;
    br2.id = "br2_" + index;
    inputContent.id = "keyword[" + index +"]";
    newfields.id = "input[" + index +"]";
    var nlist = newfields.childNodes;
    for( i = 0; i < nlist.length; i++ ) {
        var link = nlist.item(i);
        if( link.id == "fields[0]" ) {
            link.selectedIndex = 0;
        }
    }

    document.body.appendChild( inputContent );

    if (  inputContent.addEventListener ){        
        inputContent.addEventListener( 'click', clicked , false );;
    } else {
        inputContent.attachEvent( 'onclick', ie_clicked );   
    }

    link =newfields.getElementsByTagName( "a" );
    link[0].href = "javascript:closeAdvanceOptions( 'input[" + index + "]' )";
    var addButton = document.getElementById( "callAdd" );
    var x = document.getElementById( "stop" );
    x.parentNode.insertBefore( inputContent, x );
    x.parentNode.insertBefore( removeButton, x );
    x.parentNode.insertBefore( addButton, x );
    x.parentNode.insertBefore( br1, x );
    x.parentNode.insertBefore( newfields, x );
    x.parentNode.insertBefore( br2, x );
    inputContent.value = "";
    hide( newfields );
    new Autocompleter.Request.JSON('keyword[' + index + ']', '/uoa-web-generic-latest/Recommender.action', {
            'postVar': 'keyword'
        });
    index++;
}

function removeInput( cursor ){
    var initVar = document.getElementById("keyword[" + cursor +"]" );
    var fields = document.getElementById( "input[" + cursor +"]" );
    var br1 =  document.getElementById("br1_" + cursor + "" );
    var br2 =  document.getElementById("br2_" + cursor + "" );
    var removeButton =  document.getElementById("remove[" + cursor + "]" );
    slideOut( initVar.id  );
    slideOut( br1.id  );
    slideOut( br2.id  );
    slideOut( removeButton.id  );
    slideOut( fields.id  );
    initVar.parentNode.removeChild( initVar );
    fields.parentNode.removeChild( fields );
    br1.parentNode.removeChild( br1 );
    br2.parentNode.removeChild( br2 );
    removeButton.parentNode.removeChild( removeButton );
    var removeBtns = document.getElementsByName( "removeBtn" );
    var nextPos = removeBtns.length;
    if(  nextPos == 0 ) {
        //alert( "0.1" );
        var addButton = document.getElementById( "callAdd" );
        //alert( "0.2" );
        var x = document.getElementById( "firstBr"  );
        //alert( "0.3" );
        x.parentNode.insertBefore( addButton, x );
    //alert( "0.4" );
    }  else {
        if(  cursor + 1  == index ) {
            index--;
        }
        var brns = document.getElementsByName( "removeBtn" );
        var addButton = document.getElementById( "callAdd" );
        var br = brns[ brns.length - 1 ];
        br.parentNode.insertBefore( addButton, br );
        addButton.parentNode.insertBefore( br, addButton );
    }
//alert( "6" );
}

function moveAddButton(){
    //var addButton = document.getElementById( "callAdd" );
    //var x = document.getElementById( "stop" );
    //x.parentNode.insertBefore( addButton, x );
    var removeBtns = document.getElementsByName( "removeBtn" );
    var nextPos = removeBtns.length;
    if(  nextPos == 0 ) {
        var addButton = document.getElementById( "callAdd" );
        var x = document.getElementById( "firstBr"  );
        x.parentNode.insertBefore( addButton, x );
    }  else {
        var brns = document.getElementsByName( "removeBtn" );
        var addButton = document.getElementById( "callAdd" );
        var br = brns[ brns.length - 1 ];
        br.parentNode.insertBefore( addButton, br );
        addButton.parentNode.insertBefore( br, addButton );
    }
}
