﻿//Variable to take the id for textbox to be used for Autosuggest
var textField = null;
var IDToClick = null;

var results = null;
function callback(item) {
    if (item != 0)
    {
        setValueInField(document.getElementById(item).innerHTML)
        document.getElementById(IDToClick).click();  //ctl00_BtnKeywordSearch
    }        
    $('#searchResult').html("");
    document.getElementById("searchResult").style.display="none";
}

function txtKeyword_keyUp(ID, clickFieldId)
{
    //alert(ID)
    textField = ID //SET ID FOR Field
    IDToClick = clickFieldId
    
    //var value = replaceAll(replaceAll(document.getElementById(ID).value, "'", "’"), "-", "–")
    var value = replaceAll(document.getElementById(ID).value, "'", "’")
    //alert(value)
    if (value == "" || value == null)
        document.getElementById("searchResult").style.display="none";    //$('#searchResult').html("Type text to get results");
    else
    {
        getresults(value);
    }
}
function hideSearchResult()
{setTimeout('hideSearch()',0);}
function hideSearch()
{$('#searchResult').slideUp("fast");
    /*if (document.getElementById("hdnTxt").value != document.getElementById("txtKeyword").value)
     {alert("Please select from the suggestions provided");
     document.getElementById("txtKeyword").value = "";
     document.getElementById("hdnTxt").value = "";
     }*/
}  


var keycode;
var idArr = new Array();
function getresults(myval)
{   
    //alert("getresults")
    if (/^13$|^9$|^27$|^38$|^40$/.test(keycode))
    {    return false;}
    else
       $.ajax({
        type:"POST",
        url: "http://www.milletapes.com/WS_BGProcess.asmx/GetAutoSuggestResults",     //LIVE URL
        //url: "http://Stage.milletapes.com/WS_BGProcess.asmx/GetAutoSuggestResults",   //Sandbox URL
        //url: "WS_BGProcess.asmx/GetAutoSuggestResults",                                 //LOCAL URL
        data: "{'text':'"+myval+"'}",
        contentType: "application/json; charset=utf-8",
        dataType:"json",        
        success:function(data)
        {
            idArr = new Array();
            var json = JSON.stringify(data);
            $('#searchResult').html("");
            if (data.rows != null)  
            {   //If results returned
                var sresult = "<table id='tbl' class='tblClass' border='0' cellpadding='0' cellspacing='0'>"
                $.each(data.rows, function(i,rows){                    

                var startIndex = parseInt(rows.name.search(new RegExp(myval, "i" )));   //Hemant: case-insensitive indexOf -for Start of matched string
                var endIndex = parseInt(rows.name.search(new RegExp(myval, "i" ))) + parseInt(myval.length);//Hemant: case-insensitive indexOf -for Start of matched string
                var existingWord = rows.name.substring(startIndex, endIndex);   //get the existing searched word in the suggestions
                
                sresult += "<tr id='tr_" + rows.RowNum + "' onMouseDown='JavaScript:callback(this.id);' onMouseOver='javascript:highlight(this.id);'><td>"            
                            + "&nbsp;" + rows.name.replace(new RegExp(myval, "gi" ), '<span class="txthighlight">'+existingWord+'</span>') + "&nbsp;" + "</td></tr>";
                //replace(new RegExp(myval, "gi" ), '<span class="txthighlight">'+existingWord+'</span>')
                //"i" is doing case-insensitive Replace (Regular Exp) and "g" is for replacing Global
    
                idArr[i] = "tr_" + rows.RowNum;
                });
                sresult += "</table>";
                results = sresult;
                $('#searchResult').append(sresult);
                $('#searchResult').slideDown("fast");
            }
            else
            {   //If NO results returned
                document.getElementById("searchResult").style.display="none";
            }                
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) 
        {            
            //alert(errorThrown)
	        //var jsonError = JSON.parse(XMLHttpRequest.responseText);            
	       // alert(JSON.stringify(jsonError));
        }});    
}
function highlight(id)
{
    //alert("highlight")
    normalize();
    document.getElementById(id).className = "highlight";
}
function normalize()
{   
    //alert("normalize")
    var i = 0;
    for(i=0; i<idArr.length; i++)
    {
        try        {document.getElementById(idArr[i]).className = "normalize";}
        catch(e) {
            /*alert("error: " + e.name  + ". Error description: " + e.description
                + ". Error number: " + e.number
                + ". Error message: " + e.message
                + ". ID: " + idArr[i]
                ) */
        }
    }
}
function processKey(e) {
// handling up/down/escape requires results to be visible
// handling enter/tab requires that AND a result to be selected
keycode = (window.event)?event.keyCode:e.keyCode
if (/^13$|^9$|^27$|^38$|^40$/.test(keycode)) {
    keycode = e.keyCode;	    
    switch(keycode) {
    case 38:prevRes();	break;	// up
    case 40:nextRes(); break;	// down
    case 27: Hide(); break;	//	escape
    case 9:	case 13:selCurRes();break;	// tab/enter
}}}

function getCurSel() {  
    var selected = 0;    
	for(i=0; i<idArr.length; i++)
	{   if (document.getElementById(idArr[i]) != null)
	        if (document.getElementById(idArr[i]).className == "highlight")
                return idArr[i];
    }
    return 0;}

function selCurRes() {
	var curRes = getCurSel();
	callback(curRes);}

function nextRes() {
	var curRes = getCurSel();	
	//alert("nextRes: " + curRes)
	var flag = false;
	normalize();
	for(i=0; i<idArr.length - 1; i++)
	    if (idArr[i] == curRes)
	    {   flag = true;
	        if (document.getElementById(idArr[i+1]) != null)
	        {    
	            document.getElementById(idArr[i+1]).className = "highlight";
	            setValueInField(document.getElementById(idArr[i+1]).innerHTML)
	        }
	    }
	if (flag == false)
    {
        document.getElementById(idArr[0]).className = "highlight";
        setValueInField(document.getElementById(idArr[0]).innerHTML)
    }
    
    //alert(document.getElementById(idArr[0]).innerHTML)
    
 }

function prevRes() {
	var curRes = getCurSel();
	var flag = false;
	normalize();
	for(i=1; i<idArr.length; i++)
	    if (idArr[i] == curRes)
	    {   flag = true;
	        if (document.getElementById(idArr[i-1]) != null)
	        {
                document.getElementById(idArr[i-1]).className = "highlight";
  	            setValueInField(document.getElementById(idArr[i-1]).innerHTML);
            }
        }
    if (flag == false)
    {
        document.getElementById(idArr[idArr.length-1]).className = "highlight";}
        //setValueInField(document.getElementById(idArr[idArr.length-1])).innerHTML);
    }

//Apply style to Search box results
function setStyleForSearchResultBox()
{
    //alert("setStyleForSearchResultBox")
    //alert(document.getElementById("searchResult"))
    if (navigator.userAgent.toLowerCase().indexOf("safari") != -1)    // Safari
    {   //alert("setting style for Safari")
        document.getElementById("searchResult").className = "searchResultSafari searchResultCommon";
    }
    else if (navigator.userAgent.toLowerCase().indexOf("firefox") != -1)    // Firefox
    {   //alert("setting style for Firefox")
        document.getElementById("searchResult").className = "searchResultFirefox searchResultCommon";
    }
    else    //Rest all Browsers
    {   //alert("setting style for Rest all Browsers")
        document.getElementById("searchResult").className = "searchResultIE searchResultCommon";
    }
}

function Hide() {
    $('#searchResult').slideUp("fast");
}

function replaceAll(txt, replace, with_this) 
{
    return txt.replace(new RegExp(replace, 'gi'),with_this);
}
function setValueInField(selectedValue)
{
    //document.getElementById(textField).value = replaceAll(selectedValue.replace("<TD>","").replace("</TD>","").replace("<td>","").replace("</td>","").replace('<span class=txthighlight>',"").replace('<SPAN class=txthighlight>',"").replace('</SPAN>',"").replace('</span>',"").replace('<span class="txthighlight">',"").replace('<SPAN class="txthighlight">',""), "&nbsp;", " ");
    document.getElementById(textField).value = replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(selectedValue,"<TD>",""),"</TD>",""),'<SPAN class=txthighlight>',''),'</SPAN>',""),'<SPAN class="txthighlight">',""),"&nbsp;"," ")
    document.getElementById(textField).value = trim(document.getElementById(textField).value)
}
// Removes leading whitespaces
function LTrim( value ) {
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
}

// Removes ending whitespaces
function RTrim( value ) {
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
}

// Removes leading and ending whitespaces
function trim( value ) {
	return LTrim(RTrim(value));
}