﻿// <copyright file="EmailAlerts.js" company="BioCentury Publications Inc."> 
// All contents Copyright © 2005-2009 BioCentury Publications, Inc. ALL RIGHTS RESERVED
// 
// http://www.biocentury.com 
// </copyright>

//Email alerts related js functions
function showProductName(param)
{
    if (param == 'ea')
        document.getElementById('lblProductNameText').innerHTML = "alert search terms.";
    else
        document.getElementById('lblProductNameText').innerHTML = "Archives search.";
    document.getElementById('tdResults').innerHTML = "";
    document.getElementById('txtProductName').value = "";
    $find('ModalPopupExtenderProductName').show();
    document.getElementById('trButtons').style.visibility = 'hidden';
    //document.getElementById('ctl00_ContentPlaceHolder1_OkButtonProductName').focus();
}

var divSummaryId = "";;
var SearchSelectionSetId = "";

function showCompany()
{
    divSummaryId = divSummaryIdComp;
    SearchSelectionSetId = SearchSelectionSetIdComp;
    document.getElementById(divSummaryId).innerHTML = "";
    document.getElementById(SearchSelectionSetId).value = "";
    document.getElementById('txtCompany').value = "";
    showCompanyLetterDiv(defaultCompPassAs);
    $find('ModalPopupExtenderCompany').show();
    document.getElementById('ctl00_ContentPlaceHolder1_company_UserCompanyLists').style.visibility = 'visible';
    document.getElementById('ctl00_ContentPlaceHolder1_company_UserCompanyLists').options[0].selected = true;
    document.getElementById('ctl00_ContentPlaceHolder1_OkButtonCompany').focus();
}
function showMolecularTarget(param)
{
    if (param == 'ea')
        document.getElementById('lblMTText').innerHTML = "alert search terms.";
    else
        document.getElementById('lblMTText').innerHTML = "Archives search.";
    divSummaryId = divSummaryIdMT;
    SearchSelectionSetId = SearchSelectionSetIdMT;
    document.getElementById(divSummaryId).innerHTML = "";
    document.getElementById(SearchSelectionSetId).value = "";
    document.getElementById('txtMolecularTarget').value = "";
    showMTLetterDiv(defaultMTPassAs);
    $find('ModalPopupExtenderMolecularTarget').show();
    document.getElementById('ctl00_ContentPlaceHolder1_OkButtonMolecularTarget').focus();
}
function showDiseaseCategory(param)
{
    if (param == 'ea')
        document.getElementById('lblDCText').innerHTML = "alert search terms.";
    else
        document.getElementById('lblDCText').innerHTML = "Archives search.";
    divSummaryId = divSummaryIdDC;
    SearchSelectionSetId = SearchSelectionSetIdDC;
    document.getElementById(divSummaryId).innerHTML = "";
    document.getElementById(SearchSelectionSetId).value = "";
    document.getElementById('txtDiseaseCategory').value = "";
    
    $find('ModalPopupExtenderDiseaseCategory').show();
    document.getElementById(SearchSelectionSetId).value = "";
    showDCLetterDiv('allDC');
    document.getElementById('ctl00_ContentPlaceHolder1_OkButtonDiseaseCategory').focus();
}
function showMTLetterDiv(passAs)
{
    if (passAs != 'allDC')
        ret = Utils.getMolecularTargetItems(passAs, OnCompleteMTI, OnTimeOut, OnError);
    jsMTPassAs = passAs;   
}
function showDCLetterDiv(passAs)
{    
    document.getElementById('tdDCItems').innerHTML = '<div style="float:left;padding:3px;border:1px solid #000;height:235px;width:340px;vertical-align:middle;text-align:center;"><img style="margin-top:85px" src="images/loading.gif" /></div>';
    ret = Utils.getDiseaseCategoryItems(passAs, OnCompleteDCI, OnTimeOut, OnError);
    jsMTPassAs = 'allDC';
    document.getElementById('aShowAllDC').style.visibility = 'hidden';
}
function showCompanyLetterDiv(passAs)
{
    ret = Utils.getCompanyItems(passAs, OnCompleteComp, OnTimeOut, OnError);
    jsCompPassAs = passAs;
}
function OnCompleteMTI(result)
{
    var links = document.getElementsByName('MTLinks')
    for(var i=0;i<links.length;i++)
    {
        links[i].style.color = "";
        links[i].style.textDecoration = "";
        links[i].style.cursor = "";
    }
	if (jsMTPassAs != 'search')
	{
        document.getElementById('a_'+jsMTPassAs).style.color = "#888";
        document.getElementById('a_'+jsMTPassAs).style.textDecoration = "none";
        document.getElementById('a_'+jsMTPassAs).style.cursor = "text";
    }
    document.getElementById('tdMTItems').innerHTML = result;
    if (document.getElementById(SearchSelectionSetId))
    {
        var cbIds = document.getElementById(SearchSelectionSetId).value.split(',');
        for(var i=0;i<cbIds.length;i++)
        {
            if (cbIds[i].length>0 && document.getElementById(cbIds[i]))
                document.getElementById(cbIds[i]).checked = true;
        }
    }
    
}

function OnCompleteDCI(result)
{
    document.getElementById('tdDCItems').innerHTML = result;
    if (jsMTPassAs == 'search')
        document.getElementById('aShowAllDC').style.visibility = 'visible';
    if (document.getElementById(SearchSelectionSetId))
    {
        var cbIds = document.getElementById(SearchSelectionSetId).value.split(',');
        for(var i=0;i<cbIds.length;i++)
        {
            var cb = document.getElementById(cbIds[i]);
            if (cbIds[i].length>0 && cb)
            {
                cb.checked = true;
                //selectAll(cb);
            }
        }
    }
}

function OnCompleteComp(result)
{
    var links = document.getElementsByName('CompLinks')
    for(var i=0;i<links.length;i++)
    {
        links[i].style.color = "";
        links[i].style.textDecoration = "";
        links[i].style.cursor = "";
    }
	if (jsCompPassAs != 'search')
	{
        document.getElementById('a_'+jsCompPassAs).style.color = "#888";
        document.getElementById('a_'+jsCompPassAs).style.textDecoration = "none";
        document.getElementById('a_'+jsCompPassAs).style.cursor = "text";
    }
    document.getElementById('tdCompanyItems').innerHTML = result;
    if (document.getElementById(SearchSelectionSetId))
    {
        var cbIds = document.getElementById(SearchSelectionSetId).value.split(',');
        for(var i=0;i<cbIds.length;i++)
        {
            if (cbIds[i].length>0 && document.getElementById(cbIds[i]))
                document.getElementById(cbIds[i]).checked = true;
        }
    }
}

function OnTimeOut(result)
{
    alert('Your request timed out.');
}
function OnError(result)
{
    alert('An error has occured while processing your request.');
}


var pref1 = "ctl00_ContentPlaceHolder1_pubs_";
var pref2 = "ctl00_ContentPlaceHolder1_ea_pubs_";

function showHidePubs(param)
{
    if (param)
    {//show
        document.getElementById(pref2+'divPartA').className = "DivVisible";
        document.getElementById(pref2+'divPartB').className = "DivVisible";
        document.getElementById(pref2+'divPartExtra').className = "DivVisible";
        document.getElementById(pref2+'divPartS').className = "DivVisible";
        
        document.getElementById(pref2+'divA').style.height = "405px";
        document.getElementById(pref2+'divB').style.height = "405px";
        document.getElementById(pref2+'divX').style.height = "405px";
        document.getElementById(pref2+'divS').style.height = "405px";
    }
    else
    {//hide
        document.getElementById(pref2+'divPartA').className = "DivHidden";
        document.getElementById(pref2+'divPartB').className = "DivHidden";
        document.getElementById(pref2+'divPartExtra').className = "DivHidden";
        document.getElementById(pref2+'divPartS').className = "DivHidden";
        
        document.getElementById(pref2+'divA').style.height = "23px";
        document.getElementById(pref2+'divB').style.height = "23px";
        document.getElementById(pref2+'divX').style.height = "23px";
        document.getElementById(pref2+'divS').style.height = "23px";
    }
}

function verifyEmailAlertInput(prefix, userID)
{
    if (
        document.getElementById("ctl00_ContentPlaceHolder1_ea_allWords").value.trim() == "" &&
        document.getElementById(prefix + "ea_exactPhrase").value.trim() == "" &&
        document.getElementById(prefix + "ea_atLeastOneOfTheWords").value.trim() == "" &&
        document.getElementById(prefix + "ea_noneOfTheWords").value.trim() == ""
    )
    {
        window.alert('Please enter at least one search term');
        return false;
    }
    
    if (
        document.getElementById("ctl00_ContentPlaceHolder1_ea_allWords").value.trim() == "*" ||
        document.getElementById(prefix + "ea_exactPhrase").value.trim() == "*" ||
        document.getElementById(prefix + "ea_atLeastOneOfTheWords").value.trim() == "*" ||
        document.getElementById(prefix + "ea_noneOfTheWords").value.trim() == "*"
    )
    {
        window.alert('* alone is not allowed');
        return false;
    }
    //check length
    if (document.getElementById("ctl00_ContentPlaceHolder1_ea_allWords").value.length > 512 ||
         document.getElementById(prefix + "ea_exactPhrase").value.length > 512 ||
         document.getElementById(prefix + "ea_atLeastOneOfTheWords").value.length > 512 ||
         document.getElementById(prefix + "ea_noneOfTheWords").value.length > 512)
    {
        if (!confirm('Your search term exceeds the maximum allowed length and will be truncated. Would you still like to continue?'))
            return false;
        else
        {
            document.getElementById("ctl00_ContentPlaceHolder1_ea_allWords").value = getMax512(document.getElementById("ctl00_ContentPlaceHolder1_ea_allWords").value);
            document.getElementById(prefix + "ea_exactPhrase").value = getMax512(document.getElementById(prefix + "ea_exactPhrase").value);
            document.getElementById(prefix + "ea_atLeastOneOfTheWords").value = getMax512(document.getElementById(prefix + "ea_atLeastOneOfTheWords").value);
            document.getElementById(prefix + "ea_noneOfTheWords").value = getMax512(document.getElementById(prefix + "ea_noneOfTheWords").value);
        }
    }
    
    //"bcABox15","bcABox2",
    var someCollectionsAreChecked = false;
    for(var i=0; i<collections.length; i++)
    {
        if (document.getElementById('ctl00_ContentPlaceHolder1_ea_pubs_'+collections[i]).checked)
        {
            someCollectionsAreChecked = true;
            break;
        }
    }
    if (!someCollectionsAreChecked)
    {
        window.alert('Please select at least one collection');
        return false;
    }
    var criteriaName = document.getElementById('ctl00_ContentPlaceHolder1_txtCriteriaName').value;
    if (criteriaName.trim().length == 0)
    {
        window.alert('Please name your criteria');
        return false;
    }
    
    //test duplicate criteria
    if (document.getElementById('ctl00_ContentPlaceHolder1_txtCriteriaName').disabled == false)
    {
        var isReserved = CriteriaAlreadyExists(
        criteriaName.trim(), 
        userID);
        if (isReserved != "undefined" && isReserved != null) 
        {
            switch (isReserved) 
            {
                case "0":
                    alert('This is a reserved criteria. Please choose another name.');
                    return false;
                case "1":
                    break;
                default:
                    var isCriteriaUsedInEmailAlert = IsCriteriaUsedInEmailAlert(criteriaName.trim(), userID);
                    if (isCriteriaUsedInEmailAlert != "undefined" && isCriteriaUsedInEmailAlert != null && isCriteriaUsedInEmailAlert == "true") 
                    {
                        if (!confirm('This search name already exists and it is used for at least 1 email alert. Are you sure you want to overwrite it?')) 
                        {
                            return false;
                        }
                    }
                    else 
                    {
                        if (!confirm('This search name already exists. Are you sure you want to overwrite it?')) 
                        {
                            return false;
                        }
                    }
                    break;
            }
        }
    }
    
    // if all the conditions where met, the thread will get here
    document.getElementById('ctl00_ContentPlaceHolder1_txtCriteriaName').disabled = false;
    //document.getElementById('ctl00_ContentPlaceHolder1_txtCriteriaDescription').disabled = false;
    $find("ModalPopupExtenderSetEmailAlert").hide();
    GetAllCheckedCheboxes(pref2); 

    return true;
}

function showHideAdvancedSearchEA(param)
{
     var label = document.getElementById('ea_lblAdvancedSearch');
     var img = document.getElementById('ea_imgAdvancedSearch');
     var label2 = document.getElementById('ea_lblAdvancedSearch2');
     var img2 = document.getElementById('ea_imgAdvancedSearch2');
     var acc = $find('ctl00_ContentPlaceHolder1_ea_accAdvancedSearch_AccordionExtender');
     if (acc)
     {
        if (acc._selectedIndex == 0 && param == null)
        {
            SetInnerText_IE_FireFox(label,"Advanced Search");
            SetInnerText_IE_FireFox(label2,"Advanced Search");
            img.src = 'images/chevron_down.gif';
            img2.src = 'images/chevron_down.gif';
            acc.set_SelectedIndex(1);
            showHidePubs(false);
        }
        else
        {
            if (param==false)
            {
                SetInnerText_IE_FireFox(label,"Advanced Search");
                SetInnerText_IE_FireFox(label2,"Advanced Search");
                img.src = 'images/chevron_down.gif';
                img2.src = 'images/chevron_down.gif';
                acc.set_SelectedIndex(1);
                showHidePubs(false);
            }
            else
            {
                SetInnerText_IE_FireFox(label,"Basic Search");
                SetInnerText_IE_FireFox(label2,"Basic Search");
                img.src = 'images/chevron_up.gif';
                img2.src = 'images/chevron_up.gif';
                acc.set_SelectedIndex(0);
                showHidePubs(true);
            }
        }
     }
}

var xmlHttp;
function GetXmlHttpObject() {
    var xmlHttp = null;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    }
    catch (e) {
        // Internet Explorer
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}

function CheckAvailableAlerts(userID,showEA) {
    result = CheckAvailableAlertsSync(userID);
    var availableEA = result.split(',')[1];
    var usedEA = result.split(',')[0];
    if (parseInt(availableEA,10)>0) {
        return true;
    }
    else {
        if (showEA)
        {
            return true;
        }
        else
        {
            document.getElementById('lblAvailableAlerts').innerHTML = usedEA;
            $find('ModalPopupExtenderAvailableAlerts').show();
            return false;
        }
    }
}

// Gets the number of available alerts
function CheckAvailableAlertsSync(userID) {
    try {
        var httpRequest = GetXmlHttpObject();

        var xmlSOAP = '<?xml version="1.0" encoding="utf-8"?>' +
         '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
         'xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> ' +
          '<soap:Body>' +
           '<AvailableEmailAlerts xmlns="http://www.biocentury.com/webservices/">' +
            '<userID>'+userID+'</userID>' +
           '</AvailableEmailAlerts>' +
          '</soap:Body>' +
         '</soap:Envelope>';



        // send XML document to Web server
        httpRequest.onreadystatechange = new function() { };

        httpRequest.open("POST", UtilitiesWSUrl, false);

        httpRequest.setRequestHeader("SOAPAction", "http://www.biocentury.com/webservices/AvailableEmailAlerts");
        httpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        httpRequest.send(xmlSOAP);


        if (httpRequest.status == 200) {
            text = httpRequest.responseText;
            try //Internet Explorer
            {
                xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async="false";
                xmlDoc.loadXML(text);
                try {
                    return xmlDoc.getElementsByTagName("AvailableEmailAlertsResult")[0].text;
                }
                catch (e) {
                    alert(e.message);
                }
            }
            catch(ex)
            {
                try //Firefox, Mozilla, Opera, etc.
                {
                    parser=new DOMParser();
                    xmlDoc=parser.parseFromString(text,"text/xml");
                    try {
                        return xmlDoc.getElementsByTagName("AvailableEmailAlertsResult")[0].firstChild.nodeValue;
                    }
                    catch (e) {
                        alert(e.message);
                    }
                }
                catch(er) {alert(er.message)}
            }
            
        }
        else {
            alert("The available number of email alerts couldn't be accesed.");
        }
    }
    catch (err)
    { alert(err.messege);}
}  
//not used - Eugen - 06.10.2010
//function UserIsGuestSync(userID) 
//{
//    return (userID == null || userID.length == 0)
//    try {
//        var httpRequest = GetXmlHttpObject();

//        var xmlSOAP = '<?xml version="1.0" encoding="utf-8"?>' +
//         '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
//         'xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> ' +
//          '<soap:Body>' +
//           '<UserIsGuest xmlns="http://www.biocentury.com/webservices/">' +
//           '<userID>' + userID + '</userID>' +
//           '</UserIsGuest>' +
//          '</soap:Body>' +
//         '</soap:Envelope>';



//        // send XML document to Web server
//        httpRequest.onreadystatechange = new function() { };

//        httpRequest.open("POST", UtilitiesWSUrl, false);

//        httpRequest.setRequestHeader("SOAPAction", "http://www.biocentury.com/webservices/UserIsGuest");
//        httpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
//        httpRequest.send(xmlSOAP);


//        if (httpRequest.status == 200) {
//            text = httpRequest.responseText;
//            try //Internet Explorer
//            {
//                xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
//                xmlDoc.async="false";
//                xmlDoc.loadXML(text);
//                try {
//                    return xmlDoc.getElementsByTagName("UserIsGuestResult")[0].text;
//                }
//                catch (e) {
//                    alert(e.message);
//                }
//            }
//            catch(ex)
//            {
//                try //Firefox, Mozilla, Opera, etc.
//                {
//                    parser=new DOMParser();
//                    xmlDoc=parser.parseFromString(text,"text/xml");
//                    try {
//                        return xmlDoc.getElementsByTagName("UserIsGuestResult")[0].firstChild.nodeValue;
//                    }
//                    catch (e) {
//                        alert(e.message);
//                    }
//                }
//                catch(er) {alert(er.message)}
//            }
//            
//        }
//        else {
//            alert("User login data couldn't be accesed.");
//        }
//    }
//    catch (err)
//    { alert(err.messege);}
//}

function doSearch(e,btnid)
{
    var unicode = allEve(e).key;

    if (unicode == 13)
    {
        clickButton(btnid);
        e.cancelBubble = true;
        return false;
    } 
}

function allEve(e){
	var ev= (window.event)? window.event: e;
	if(!ev || !ev.type) return false;
	var ME= ev;
	
	if(ME.type.indexOf('key')!= -1){
		if(document.all || ME.type.indexOf('keypress')!= -1){
			ME.key= (ev.keyCode)? ev.keyCode: ((ev.charCode)? ev.charCode: ev.which);
		}
		else ME.key= ev.charCode;
		if(ME.key) ME.letter= String.fromCharCode(ME.key);
	}
	return ME;
}

function clickButton(buttonID) {
    if (document.getElementById(buttonID).dispatchEvent) {
        var e = document.createEvent("MouseEvents");
        e.initEvent("click", true, true);
        document.getElementById(buttonID).dispatchEvent(e);
    }
    else {
        document.getElementById(buttonID).click();
    }
}

function GetInnerText_IE_FireFox(theObject) {
    aStr = "";
    if (document.all) {// IE
        aStr = theObject.innerText;
    }
    else {// FireFox
        aStr = theObject.textContent;
    }
    return aStr;
}
function SetInnerText_IE_FireFox(theObject, theText) {
    if (document.all) {// IE
        theObject.innerText = theText;
    }
    else {// FireFox
        theObject.textContent = theText;
    }
}

function showTips()
{
    if (tipsWin != null)
        tipsWin.close();
        
    tipsWin = window.open('../Archives/Help/AlertTipsPubs.htm',
            'tipsPopUpArchives', 'status=yes,resizable=yes,width=800,height=610,toolbar=no,menubar=no,scrollbars=yes,resizable=no');
    tipsWin.focus();
    return false;
}

//-------------------------------------------------------------------------------
// Gets the search option for requested alert
//-------------------------------------------------------------------------------
function getEASearchOptionsSynch(eaid, userID) {
    try {
        var httpRequest = GetXmlHttpObject();

        var xmlSOAP = '<?xml version="1.0" encoding="utf-8"?>' +
         '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
         'xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> ' +
          '<soap:Body>' +
           '<GetEASearchOptions xmlns="http://www.biocentury.com/webservices/">' +
            '<eaid>'+eaid+'</eaid>' +
            '<userID>'+userID+'</userID>' +
           '</GetEASearchOptions>' +
          '</soap:Body>' +
         '</soap:Envelope>';



        // send XML document to Web server
        httpRequest.onreadystatechange = new function() { };

        httpRequest.open("POST", UtilitiesWSUrl, false);

        httpRequest.setRequestHeader("SOAPAction", "http://www.biocentury.com/webservices/GetEASearchOptions");
        httpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        httpRequest.send(xmlSOAP);


        if (httpRequest.status == 200) {
            text = httpRequest.responseText;
            try //Internet Explorer
            {
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async = "false";
                xmlDoc.loadXML(text);
                try {
                    return xmlDoc.getElementsByTagName("GetEASearchOptionsResult")[0].text;
                }
                catch (e) {
                    alert(e.message);
                }
            }
            catch (ex) {
                try //Firefox, Mozilla, Opera, etc.
                {
                    parser = new DOMParser();
                    xmlDoc = parser.parseFromString(text, "text/xml");
                    try {
                        return xmlDoc.getElementsByTagName("GetEASearchOptionsResult")[0].firstChild.nodeValue;
                    }
                    catch (e) {
                        alert(e.message);
                    }
                }
                catch (er) { alert(er.message) }
            }

        }
        else {
            alert("The email alert couldn't be accessed.");
        }
    }
    catch (err)
    { alert(err.messege); }
}

function UncheckAllCheckedCheboxes(prefix) {
    for (var i = 0; i < collections.length; i++) {
        var cb = document.getElementById(prefix + collections[i]);
        if (cb != null)
            cb.checked = false;
    }
}


