﻿var blnImageOn = false;

function Init() {
    //SetServicesAutoComplete();
    SetSubmitEvent();
    SetImagePopups();
}

function SetImagePopups() {
    var images = new Array();
    var popups = new Array();

    images[0] = "ImageOneMediumRectangle";
    images[1] = "ImageTwoMediumRectangle";
    images[2] = "ImageOneTowerRectangle";
    images[3] = "ImageTwoTowerRectangle";

    popups[0] = "ImageOneMediumPopup";
    popups[1] = "ImageTwoMediumPopup";
    popups[2] = "ImageOneTowerPopup";
    popups[3] = "ImageTwoTowerPopup";

    for (i = 0; i < images.length; i++) {
        var ndeImage = YAHOO.util.Dom.get(images[i]);
        if (ndeImage) {
            YAHOO.util.Event.addListener(ndeImage, "mouseover", DisplayImagePopup);
        }
    }

    for (i = 0; i < images.length; i++) {
        var ndeImage = YAHOO.util.Dom.get(images[i]);
        if (ndeImage) {
            YAHOO.util.Event.addListener(ndeImage, "mouseout", HideImagePopupFromImage);
        }
    }

    for (i = 0; i < popups.length; i++) {
        var ndepopup = YAHOO.util.Dom.get(popups[i]);
        if (ndepopup) {
            YAHOO.util.Event.addListener(ndepopup, "mouseout", HideImagePopupFromPopup);
        }
    }
}

function DisplayImagePopup(e) {
    var popUpID = this.id.replace("Rectangle", "Popup");
    var ImageXY = YAHOO.util.Dom.getXY(this.id);
    var ImageRegion = YAHOO.util.Dom.getRegion(this.id);

    var popUpIDLeft = ImageXY[0] + 20;

    var additionalPushforTop = 100;
    
    if (ImageRegion.height == 600) {
        additionalPushforTop = 200;
    };

    var popUpIDTop = (ImageRegion.top + ImageRegion.height / 2) - additionalPushforTop;
    
    if (!blnImageOn) {
        YAHOO.util.Dom.setXY(popUpID, [popUpIDLeft, popUpIDTop]);
        blnImageOn = true;
    }  
}

function HideImagePopupFromImage(e) {
    HideImagePopup(e, this.id, this.id.replace("Rectangle", "Popup"))
}

function HideImagePopupFromPopup(e) {
    HideImagePopup(e, this.id.replace("Popup", "Rectangle"), this.id)
}

function HideImagePopup(e, ImageName, popUpID) {
    var ImageXY = YAHOO.util.Dom.getRegion(ImageName);
    var MouseXY = YAHOO.util.Event.getXY(e);
    
    if (MouseXY[1] >= ImageXY.height + ImageXY.top) {
        HideImage(popUpID);
    }
   
    if (MouseXY[1] <= ImageXY.top + 5) {
        HideImage(popUpID);
    }

    if (MouseXY[0] <= ImageXY.left + 5) {
        HideImage(popUpID);
    }

    if (MouseXY[0] >= ImageXY.right -5) {
        HideImage(popUpID);
    }
    
}

function HideImage(popUpID) {
    YAHOO.util.Dom.setXY(popUpID, [-10000, -10000]);
    blnImageOn = false;
}

function SetServicesAutoComplete() {

    var ServicesACDataSource = new YAHOO.util.LocalDataSource(Services.ResultSet.Records);

    ServicesACDataSource.responseSchema = {
        fields: ["ServiceName", "ID"]
    };

    // Instantiate AutoCompletes   
     var oConfigs = {   
         prehighlightClassName: "yui-ac-prehighlight",   
         useShadow: true,   
         queryDelay: 0,   
         minQueryLength: 0,
         animVert: .01,
         maxResultsDisplayed: 50   
     }

     var ServicesAC = new YAHOO.widget.AutoComplete("ServicesInput", "ServicesContainer", ServicesACDataSource, oConfigs);

     var ServicesToggler = YAHOO.util.Dom.get("ServicesToggle");
     var oPushButtonServices = new YAHOO.widget.Button({ container: ServicesToggler });   
     var toggleServices = function(e) {   
         //YAHOO.util.Event.stopEvent(e);
        if (!YAHOO.util.Dom.hasClass(ServicesToggler, "open")) {
            YAHOO.util.Dom.addClass(ServicesToggler, "open")   
         }   
            
         // Is open
         if (ServicesAC.isContainerOpen()) {
             ServicesAC.collapseContainer();   
         }   
         // Is closed   
         else {
             ServicesAC.getInputEl().focus(); // Needed to keep widget active   
             setTimeout(function() { // For IE
             ServicesAC.sendQuery("");   
             },0);   
         }
     }


     // Define an event handler to populate a hidden form field
     // when an item gets selected
     var myHiddenField = YAHOO.util.Dom.get("SelectedService");

     var UpdateHiddenField = function(sType, aArgs) {
             myHiddenField.value = aArgs[2][1];
      };

     ServicesAC.itemSelectEvent.subscribe(UpdateHiddenField);

     oPushButtonServices.on("click", toggleServices);
     ServicesAC.containerCollapseEvent.subscribe(function() { YAHOO.util.Dom.removeClass(ServicesToggler, "open") });  

    return {   
         ServicesACDataSource: ServicesACDataSource,
         ServicesAC: ServicesAC
    }; 
}


function getDataSourceURL(action, SearchCriteria, SelectedService) {

    //add the random number to prevent the cacheing of data
    var randomnumber = Math.floor(Math.random() * 10001)
    var dataSourceURL = '/json/' + action + '?rnd' + randomnumber

    if (SelectedService != '') {
        dataSourceURL += "&Service=" + SelectedService
    }

    if (SearchCriteria != '') {
        dataSourceURL += "&SearchCriteria=" + SearchCriteria
    }

    return dataSourceURL;
}

function SetSubmitEvent() {
    var SubmitSearch = YAHOO.util.Dom.get("SubmitSearch");
    YAHOO.util.Event.addListener(SubmitSearch, "click", GetSearchResults);
}

function GetSearchResults(e) {
    //Get the values


    if (YAHOO.util.Dom.get("CompanyPanel_c")) {
        //hide the modal if it is visible
        YAHOO.util.Dom.setStyle("CompanyPanel_c", "display", "none")
    }

    var AllOnePage = YAHOO.util.Dom.get("AllOnePage");
    //var SelectedService = YAHOO.util.Dom.get("SelectedService");
    //var ServicesInput = YAHOO.util.Dom.get("ServicesInput");
    var SelectedService = YAHOO.util.Dom.get("SelServices");
    var SearchCriteria = YAHOO.util.Dom.get("Enter_Search_Criteria");
    
    //If the textbox is empty reset the services to 0    
    //if (ServicesInput.value == '') {
        //SelectedService.value = '0';
    //}

    SelectedServiceValue = SelectedService.options[SelectedService.selectedIndex].value;
  
    SetServicesTable(SearchCriteria.value, SelectedServiceValue, AllOnePage.checked);
   
}

function SetServicesTable(SearchCriteria, SelectedServiceValue, AllOnePage) {

    var myColumnDefs = [
        { key: "CompanyName", label: "Company Name", sortable: true, formatter: formatUrl },
        { key: "Description", label: "Description" }
    ];

        dataSourceURL = getDataSourceURL('SearchResults', SearchCriteria, SelectedServiceValue)

    var myDataSource = new YAHOO.util.XHRDataSource(dataSourceURL);

    //supposed to prevent the cacheing of data
    myDataSource.maxCacheEntries = 0;
    myDataSource.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;

    myDataSource.responseSchema = {
        resultsList: "ResultSet.Records",
        fields: ["CompanyName", "link", "Description"]
    };

    var oConfigs = {
        paginator: new YAHOO.widget.Paginator({
            rowsPerPage: 10
        })
    };

    if (AllOnePage) {
        //no pager
        var myDataTable = new YAHOO.widget.DataTable("SearchResults", myColumnDefs,
        myDataSource);

    } else {
        var myDataTable = new YAHOO.widget.DataTable("SearchResults", myColumnDefs,
            myDataSource, oConfigs);
    }

    return {
        oDS: myDataSource,
        oDT: myDataTable
    };
}

var ACompanyID = ''

function ShowCompanyPanel(id) {
    ACompanyID = id

    var randomnumber = Math.floor(Math.random() * 10001)
    var sUrl = "/home/GetACompany?ID=" + id + '&rnd' + randomnumber
    var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, ShowCompanyPanelcallback, null);
}

var ShowCompanyPanelSuccess = function(o) {
    if (o.responseText !== undefined) {
        //var ElemToUseForPostion = YAHOO.util.Dom.get("CompanyPanel");
        //ElemToUseForPostion.innerHTML = o.responseText;
        DisplayPanel(o.responseText)
    }
}

var ShowCompanyPanelFailure = function(o) {
    if (o.responseText !== undefined) {

    }
}

var ShowCompanyPanelcallback =
{
    success: ShowCompanyPanelSuccess,
    failure: ShowCompanyPanelFailure,
    cache: false
};

function DisplayPanel(responseText) {
    var iPanelWidth = "480"

    var hrefSelector = 'javascript:ShowCompanyPanel(' + ACompanyID + ')'

    var candidates = document.getElementsByTagName('a');
    var nodes = YAHOO.util.Selector.filter(candidates, '[href=' + hrefSelector + ']');

    ElemToUseForPostion = nodes[0]

    var sPanelWidth = iPanelWidth + "px";

    var leftPos = YAHOO.util.Dom.getRegion(ElemToUseForPostion).left
    var topPos = YAHOO.util.Dom.getRegion(ElemToUseForPostion).bottom

    var CompanyPanel = new YAHOO.widget.Panel("CompanyPanel", { xy: [leftPos, topPos],
        visible: true,
        draggable: true,
        modal: false,
        close: true,
        width: sPanelWidth,
        zIndex: 1000,
        underlay: 'shadow',
        autofillheight:"body",
        effect: { effect: YAHOO.widget.ContainerEffect.FADE, duration: 0.25 }
    });

    CompanyPanel.setHeader('Company Details');
    CompanyPanel.setBody(responseText);
    CompanyPanel.setFooter('');
    CompanyPanel.render(document.body);

}