var getIndex;
var xmlHttp;
var is_ie = (navigator.userAgent.indexOf('MSIE') >= 0) ? 1 : 0;
var is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5") != -1) ? 1 : 0;
var is_opera = ((navigator.userAgent.indexOf("Opera6") != -1) || (navigator.userAgent.indexOf("Opera/6") != -1)) ? 1 : 0;
//netscape, safari, mozilla behave the same??? 
var is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0;
var itemHolderId;
var divMoreId;
var gdivResultItemContainer;

function CallSearchAJAX(suggestWord, searchKey, cmpID, resCount, resIndex, index, pageURL, pdtORFamName1, pdtORFamName2, filter, searchOrBrowse, name1, name2, comName, cmpIndex, contentID1, contentID2, boolIsFamRep, moreCount) {
    try {
        
        var objGetReducedHeightTD = document.getElementById('tdReduceHeight' + cmpIndex)
        if (objGetReducedHeightTD != null) {
            objGetReducedHeightTD.height = '10px;'
        }
        if (searchOrBrowse.toLowerCase() == "browse")
            suggestWord = "";
        varGetHideTdId = document.getElementById('aShowMore' + cmpIndex)
        getIndex = index;
        tdMoreID = 'tdMore' + getIndex;
        var detailUrl = "/MHCPNWWebApp/WebPages/MoreSearch.aspx?SuggestedWord=";
        detailUrl += suggestWord + '&SortFactor=rank&SearchKey=' + searchKey + '&CompanyID=' + cmpID + '&ResultCount=' + resCount + '&Index=' + resIndex + '&Pdt1=' + pdtORFamName1 + '&Pdt2=' + pdtORFamName2 + '&FilterBy=' + filter + '&SearchBrowse=' + searchOrBrowse + '&PdName1=' + name1 + '&PdName2=' + name2 + '&CommunitySelected=' + comName + '&CompanyIndex=' + cmpIndex + '&CID1=' + contentID1 + '&CID2=' + contentID2 + '&IsFamRep=' + boolIsFamRep + '&MoreCount=' + moreCount
        //stateChangeHandler will fire when the state has changed, i.e. data is received back 
        // This is non-blocking (asynchronous)
        xmlHttp = GetXmlHttpObject(stateChangeHandler);
        
        //Send the xmlHttp get to the specified url 
        xmlHttp_Get(xmlHttp, detailUrl);
    }
    catch (ex) {
        //alert('Exception Thrown='+ex.description)
    }
}



//New Function to call Marklogic More Search Result
function MLCallSearchAJAX(searchType,searchKey,cmpID,holderId,moreId,divResultItemContainer)
{
    try 
    {
        gdivResultItemContainer = divResultItemContainer;
        itemHolderId = holderId;
        divMoreId = moreId;
        
        var itemHolder = document.getElementById(holderId);
        var divMore = document.getElementById(moreId);
        var divMoreText = (document.all) ? divMore.innerText : divMore.textContent;
               
        if (itemHolder != null && divMore != null && itemHolder.getAttribute("moreData") != null){
            if (divMoreText == "(collapse selection)") {
                itemHolder.innerHTML = itemHolder.getAttribute("collapseData");
                (document.all) ? (divMore.innerText = itemHolder.getAttribute("moreText")) : (divMore.textContent = itemHolder.getAttribute("moreText"));
            }
            else {
                itemHolder.innerHTML = itemHolder.getAttribute("moreData");
                (document.all) ? (divMore.innerText = "(collapse selection)") : (divMore.textContent = "(collapse selection)");
            }

            if (divResultItemContainer != null && document.getElementById(divResultItemContainer) != null)
            {
                document.getElementById(divResultItemContainer).scrollIntoView(true);
            }            
        }        
        else {
                   
            var detailUrl = "/SearchResultsMore/";
            detailUrl += searchType + "/" + searchKey + "/" + cmpID + "/" + document.getElementById("__currentPage").value;
            detailUrl += "/" + (new Date().getTime());
           
            //stateChangeHandler will fire when the state has changed, i.e. data is received back 
            // This is non-blocking (asynchronous)
            xmlHttp = GetXmlHttpObject(stateChangeHandler);
            //Send the xmlHttp get to the specified url 
            xmlHttp_Get(xmlHttp, detailUrl);        
        }        
    }
    catch (ex) {
        alert('Exception Thrown='+ex.description)
    }
}

// XMLHttp send GET request
function xmlHttp_Get(xmlhttp, url) {
    xmlhttp.open('GET', url, false);
    xmlhttp.send(null);
}

function GetXmlHttpObject(handler) {
    var objXmlHttp = null;    //Holds the local xmlHTTP object instance 
    //Depending on the browser, try to create the xmlHttp object 
    if (is_ie) {
        //The object to create depends on version of IE 
        //If it isn't ie5, then default to the Msxml2.XMLHTTP object 
        var strObjName = (is_ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP';
        //Attempt to create the object 
        try {
            objXmlHttp = new ActiveXObject(strObjName);
            objXmlHttp.onreadystatechange = handler;
        }
        catch (e) {
            //Object creation errored 
            alert('IE detected, but object could not be created. Verify that active scripting and activeX controls are enabled');
            return;
        }
    }
    else if (is_opera) {
        //Opera has some issues with xmlHttp object functionality 
        alert('Opera detected. The page may not behave as expected.');
        return;
    }
    else {
        // Mozilla | Netscape | Safari 
        objXmlHttp = new XMLHttpRequest();
        objXmlHttp.onload = handler;
        objXmlHttp.onerror = handler;
    }
    //Return the instantiated object 
    return objXmlHttp;
}

//StateChangeHandler will fire when the state has changed, i.e. data is received back 
//This is non-blocking (asynchronous)
function stateChangeHandler(response) {
    try {
        //readyState of 4 or 'complete' represents that data has been returned         
        
        if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete') {       
            var itemHolder = document.getElementById(itemHolderId);
            var divMore = document.getElementById(divMoreId);
            var divMoreText = (document.all) ? divMore.innerText : divMore.textContent;
            
            itemHolder.setAttribute("collapseData", itemHolder.innerHTML);                       
            
            //Populate the innerHTML of the div with the results 
            itemHolder.innerHTML = xmlHttp.responseText;
            itemHolder.setAttribute("moreData", xmlHttp.responseText);
            itemHolder.setAttribute("moreText", divMoreText);
            //divMore.innerText = "(collapse selection)";
            (document.all) ? (divMore.innerText = "(collapse selection)") : (divMore.textContent = "(collapse selection)");
            
            if (gdivResultItemContainer != null && document.getElementById(gdivResultItemContainer) != null)
            {            
                document.getElementById(gdivResultItemContainer).scrollIntoView(true);
            }   
           
        }
    }
    catch (ex) {
        alert(ex.description)
    }
}

// XMLHttp send GET request 
function xmlHttp_Get(xmlhttp, url) {
    xmlhttp.open('GET', url, true);
    xmlhttp.send(null);
}

function ShowRollover(parentId,id){
    
    try
    { 
        var popupDiv = document.getElementById(id);
        var parentDiv = document.getElementById(parentId);
        if (popupDiv != null)
        {             
            popupDiv.style.display='block';
            parentDiv.style.position="relative";
            popupDiv.style.position="absolute";
        } 
    }catch(e){alert(e);}
}

function HideRollover(parentId,id){
    
    try
    { 
        var popupDiv = document.getElementById(id);
        var parentDiv = document.getElementById(parentId);
        if (popupDiv != null)
        {             
            popupDiv.style.display='none';   
            parentDiv.style.position="";         
            popupDiv.style.position="relative"; 
        } 
    }catch(e){alert(e);}
}

//New JS function To Expand Div on Click
function toggle(curDiv,id) {

    var o = document.getElementById(curDiv);
    o.style.display = (o.style.display == 'none') ? 'block' : 'none';
    var anchorMore = document.getElementById('ancmore');
    if (document.getElementById(id).innerHTML == "show less") {
        document.getElementById(id).innerHTML = "more";
        document.getElementById(id).className = "more"; 
    }    
    else{
        document.getElementById(id).innerHTML = "show less";
        document.getElementById(id).className = "less"; 
        }
    }
