/**
 * This file contains the javascript method used for updating the Search Engine data.
 * @author Sergiy Volchkov
 */

// Global members
var seuurl = "SEDataServlet";

function HideImportForm(index, soapURL, modelURI, itemID, authorURI, queryString, engineName) {
    var tagFormContainerElement = document.getElementById("importRow_" + index);
    
	var html = "<img src=\"images/addtoseamarksm.gif\" alt=\"Add To Seamark\" />";
	html += "<a id=\"importAnchor_" + index + "\" style=\"text-decoration:none\" href=\"#\" onClick=\"showImportForm('" + index + "','" + soapURL + "','" + modelURI + "','" + itemID + "','" + authorURI + "','" + queryString + "','" + engineName + "'); return false;\" onMouseover=\"this.style.backgroundColor='#FAFAD2';\" onMouseout=\"this.style.backgroundColor=white';\">Add to Seamark</a>";
	tagFormContainerElement.innerHTML = html;
}


/**
 * This method is responsible for displaying the Form that allows the users to 
 * tag an item 
 */
function showImportForm(index, soapURL, modelURI, itemID, authorURI, queryString, engineName) {
	var tagFormContainerElement = document.getElementById("importRow_" + index);
	// We need to remove any structure inside and put a text box and a Tag it! button
	var tagToRemove = document.getElementById("importAnchor_" + index);
	tagFormContainerElement.removeChild(tagToRemove);
    var html = "<span class=\"tagAddCell\">Import (optionally attach tags): </span>";
	
	html += "&nbsp; <input type=\"text\" class=\"tagInputText\" id=\"importField_" + index + "\" size=30 onkeypress=\"invokeUpdateImportRow('" + index + "','" + soapURL + "','" + modelURI + "','" + itemID + "','" + authorURI + "',event);\" />";
	html += "&nbsp; <input type=\"button\" class=\"taggingSaveButton\" onClick=\"SEUpdateResultItem('" + soapURL + "','" + modelURI + "','" + itemID + "','" + authorURI + "','" + queryString + "','" + engineName + "');\" />";
	html += "&nbsp; <input type=\"button\" class=\"taggingCancelButton\"  onClick=\"HideImportForm('" + index + "','" + soapURL + "','" + modelURI + "','" + itemID + "','" + authorURI + "','" + queryString + "','" + engineName + "');\"/>";
    tagFormContainerElement.innerHTML = html;
	var textBox = document.getElementById("importField_" + index);
	textBox.focus();
}


/**
 * Imports result items
 */
function SEUpdateResultItems(soapURL, modelURI, queryString, engineName, authorURI) {
        var colChBxAddToSemark = document.getElementsByName("ChBxAddToSemark");
        var allMetaData = "";
        var itemCount = 0;
        for (i=0; i< colChBxAddToSemark.length; i++) {
                var ch = colChBxAddToSemark[i];
                if(ch.checked)
                {
                        var metaData = getItemMetaData(i + 1);
                        if (metaData != null && metaData != "")
                        {
                                allMetaData += "&com.siderean.searchengine.result_" + itemCount + "="+ metaData;
                                itemCount++;
                        }
                }
        }
        var itemTypeStr = "";
        var itemTypeText = document.getElementById("MainItemTypeId");
        if( itemTypeText != null ) {
                itemTypeStr = itemTypeText.value;
        }
	        
        if(itemCount == 0) {
           	// Possibly Bulk Import
            // get tag values 
            // Also, get the item-type.               
            var tagValues = "";
            var inputedText = document.getElementById("MainTagsID");
            if( inputedText != null ) {
                    tagValues = inputedText.value;
            }
			var sendData = "importType=bulkImport&engineName=" + engineName + "&queryString=" + queryString + "&authorURI=" + authorURI + "&itemType=" + itemTypeStr + "&soapURL=" + soapURL + "&modelURI=" + modelURI + "&com.siderean.searchengine.tags=" + tagValues;
	        sendResultItems(sendData);
        
        } else {
	
	        // send all result on server
	        if (allMetaData != null && allMetaData != "")
	        {
	                // get tag values                
	                var tagValues = "";
	                var inputedText = document.getElementById("MainTagsID");
	                if( inputedText != null ) {
	                        tagValues = inputedText.value;
	                }
	
	                var sendData = "queryString=" + queryString +"&engineName=" + engineName + "&authorURI=" + authorURI + "&itemType=" + itemTypeStr + "&soapURL=" + soapURL + "&modelURI=" + modelURI + "&com.siderean.searchengine.tags=" + tagValues + allMetaData;
	                sendResultItems(sendData);
	        }
		}

        return false;
}

/**
 * Imports single result item
 */
function SEUpdateResultItem(soapURL, modelURI, itemID, authorURI, queryString, engineName) {
//        SETooltipHide("toolTip_" + itemID);

        // get metadata for result item 
        var itemMD = getItemMetaData(itemID);
        if(itemMD == null || itemMD == "") {
                return false;
        }

        // get tag values                
        var tagValues = "";
        var inputedText = document.getElementById("importField_" + itemID);
        if( inputedText != null ) {
                tagValues = inputedText.value;
        }

        var sendData = "queryString=" + queryString +"&engineName=" + engineName + "&soapURL=" + soapURL + "&authorURI=" + authorURI + "&modelURI=" + modelURI + "&com.siderean.searchengine.result=" + itemMD + "&com.siderean.searchengine.tags=" + tagValues;
  		sendResultItems(sendData);
  
        return false;
}

/**
 * Send result item/items on sever
 */
function sendResultItems(postData)
{
        xmlHttp.open("POST", seuurl, false);
        xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        xmlHttp.send(postData);

        // All the data has been received, and the complete data is available in responseBody and responseText.
        if(xmlHttp.readyState == 4) {
		        if(xmlHttp.responseText.indexOf("Error") != -1)
	                alert(xmlHttp.responseText);
                location.reload(true);
        }           

        return false;
}

/**
 * Hide the tooltip menu 
 */
function SETooltipHide(tooltipid)
{
        try {   
                var tooltip = document.getElementById(tooltipid);
                Tooltip.hideMethod(tooltip, {duration:Tooltip.fade});
        }
        catch (e) {
        }
}

/**
 * Checkbox tagging selection and combobox changing
 */
function chooseAddToSemark( chBoxId ) {
        var nSelAddAllToSemarkItem = 0;
        var colChBxAddToSemark = document.getElementsByName("ChBxAddToSemark");
        var nChecked = 0;

        for (i=0; i< colChBxAddToSemark.length; i++) {
                var ch = colChBxAddToSemark[i];
                if( ch.checked == true )
                {
                        nChecked++; 
                }
        }
        
        var selAddAllToSemark = document.getElementById( "selAddAllToSemark" );
        selAddAllToSemark.options[nSelAddAllToSemarkItem].text = "All " + nChecked + " Matching Items";
        selAddAllToSemark.options[nSelAddAllToSemarkItem].selected = true;
}

/**
 * Check and unckeck all "Add to Seamark" checkboxes
 */
function chageAllChkBoxes( chBoxId ) {
        var chBxAddToSemarkAll = document.getElementById(chBoxId);
        var colChBxAddToSemark = document.getElementsByName("ChBxAddToSemark");
        for (i=0; i< colChBxAddToSemark.length; i++) {
                var ch = colChBxAddToSemark[i];
                ch.checked = chBxAddToSemarkAll.checked;
        }
        chooseAddToSemark("");
}

/**
 * Get metadata for result item
 */
function getItemMetaData(itemID)
{
        var itemMD = "";
        var lbl_text = document.getElementById("text_item_" + itemID);
        if( lbl_text != null ) {
                itemMD = lbl_text.value;
        }
        return itemMD;
}
