// brower detection

var ua = navigator.userAgent.toLowerCase(),
    isOpera = (ua.indexOf('opera') > -1),
    isSafari = (ua.indexOf('safari') > -1),
    isGecko = (!isOpera && !isSafari && ua.indexOf('gecko') > -1),
    isIE = (!isOpera && ua.indexOf('msie') > -1);

/*
* function resolves problem with min-width in IE6.0
*
* @return	void
*/
function bodyMinWidth()
{
  if (isIE && document.documentElement.clientWidth)
  {
    document.getElementsByTagName("body")[0].style.width = (document.documentElement.clientWidth < 980) ? "980px" : "auto";
  }
}


/*
* function converts the single argument it receives into an Array object
*
* @param	mixed 	iterable
* @return	Array 	results
*/
var $A = function(iterable)
{
  if (!iterable) return [];
  if (iterable.toArray)
  {
    return iterable.toArray();
  }
  else
  {
    var results = [];
    for (var i = 0; i < iterable.length; i++)
      results.push(iterable[i]);
    return results;
  }
}

/*
* Returns updated HTML element with proper html data
* @param 	{object HtmlElement} element
* @param 	{String} html
* @return 	{object HtmlElement} element
*/
function ElementUpdate(element, html)
{
  var arr = ['THEAD','TBODY','TR','TD'];
  html = typeof html == 'undefined' ? '' : html.toString();
  var tagName = element.tagName.toUpperCase();
  var include = function (tagName)
  {
    for (var i = 0; i < arr.length; i++)
    {
      if (arr[i] == tagName)
        return true;
    }
    return false;
  }

  var each = function(a, iterator)
  {
    var index = 0;
    try
    {
      _each(a, function(value)
      {
        try
        {
          iterator(value, index++);
        }
        catch (e)
        {
          alert(e);
        }
      });
    }
    catch (e)
    {
      alert(e);
    }
  }

  var _each = function(a, iterator)
  {
    for (var i = 0; i < a.length; i++)
      iterator(a[i]);
  }

  /*var times = function( num, iterator) {
       each($R(0, num, true),iterator);
       return num;
     }*/

  if (include(tagName))
  {
    var div = document.createElement('div');
    switch (tagName)
        {
      case 'THEAD':
      case 'TBODY':
        div.innerHTML = '<table><tbody>' + html + '</tbody></table>';
        depth = 2;
        break;
      case 'TR':
        div.innerHTML = '<table><tbody><tr>' + html + '</tr></tbody></table>';
        depth = 3;
        break;
      case 'TD':
        div.innerHTML = '<table><tbody><tr><td>' + html + '</td></tr></tbody></table>';
        depth = 4;
    }
    each($A(element.childNodes), function(node)
    {
      element.removeChild(node)
    });
    //times(depth,function() { div = div.firstChild });
    each($A(div.childNodes), function(node)
    {
      element.appendChild(node)
    });
  }
  else
  {
    element.innerHTML = html;
  }
  return element;
}

/*
* Returns an instance of the function pre-bound to the function(=method) owner object.
* The returned function will use the same arguments as the original one (arg1, arg2, ... etc).
*
* @return Function
*/
Function.prototype.bind = function()
{
  var __method = this, args = $A(arguments), object = args.shift();
  return function()
  {
    return __method.apply(object, args.concat($A(arguments)));
  }
}

/*
* Displays hidden container with text.
* This function is used in popup windows to show hidden text.
*
* @param	String	idContainer
* @return 	void
*/
function textContainer(idContainer, tag)
{
  if (!tag) tag = 'p';
  var container = document.getElementById(idContainer);
  var els = YAHOO.util.Dom.getElementsByClassName('text_container', tag, container);
  if (els && els.length)
  {
    if (els[0].style.display == 'none')
    {
      els[0].style.display = '';
    }
    else
    {
      els[0].style.display = 'none';
    }
    bottomLinePosition(container);
  }
  return false;
}

function openPopup(url, width, height, name, scrollable)
{
  var winWidth = width;
  var winHeight = height;
  // popup in screen center
  var winScreenX = (screen.availWidth - winWidth) / 2;
  var winScreenY = (screen.availHeight - winHeight) / 2;
  var canScroll = ( scrollable ? "yes" : "no" );
  var popup = window.open(url, name, 'scrollbars=' + canScroll + ',location=NO,resizable=YES,status=YES,width=' + winWidth +
                                 ',height=' + winHeight + ',screenX=' + winScreenX +
                                 ',screenY=' + winScreenY + ',left=' + winScreenX + ',top=' + winScreenY);
  popup.focus();
  return popup;
}


/*
* This function is used only for Safari to set correct position of the bottom shadow in popup window.
*
* @param	String	container
* @return 	void
*/
function bottomLinePosition(container)
{
  if (isSafari)
  {
    var bottom = YAHOO.util.Dom.getElementsByClassName('bottom', 'div', container);
    if (bottom && bottom.length)
    {
      bottom[0].style.top = container.offsetHeight + 'px';
    }
  }
}

function addloadfunc(f){
        if(window.attachEvent){
                window.attachEvent("onload", f);
        } else
                if(document.addEventListener || window.addEventListener){
                        if(document.addEventListener){
                                document.addEventListener("load", f, false);
                        };

                        if(window.addEventListener){
                                window.addEventListener("load", f, false);
                        };

                }
                else {
                        if(typeof window.onload == "function"){
                                var fOld = window.onload;
                                window.onload = function(){ fOld(); f(); };
                        }
                        else {
                                window.onload = f;
                        };
                };

}


var mouse_x = 0;
var mouse_y = 0;

// Interface object.  Declaring in global scope,
// different xx_onload functions will define as type appropriate to page
var interfaceObj;

//Object to handle marketplace tutorial widget
var tutorialObj;

//const
var HINTS_WIDTH = 290;
var ACTIONS_WIDTH = 165;
var ACTIONS2_WIDTH = 200;
var ACTIONS_LIST_WIDTH = 277;
var CRITERIA_WIDTH = 240;
var CRITERIA2_WIDTH = 393;
var BULK_EDIT_WIDTH = 300;
var FILTERS_WIDTH = 301;
var BULKFILL_FORM_WIDTH = 244;
var LOGIN_WIDTH = 290;

var CAPTION_SHOW = 'SHOW';
var CAPTION_HIDE = 'HIDE';
var CAPTION_USERNAME = 'Email address';

var CAPTION_INVENOTRY_SHOW = 'Show inventory';
var CAPTION_INVENOTRY_HIDE = 'Hide inventory';

var INDIVIDUAL_BOTTLES_SHOW = 'Show all bottles';
var INDIVIDUAL_BOTTLES_HIDE = 'Hide individual bottles';

var POSITION_DETAILS_SHOW = 'Show position details';
var POSITION_DETAILS_HIDE = 'Hide position details';
var POSITION_DETAILS_EDIT = 'Edit position details';
//For handling onblur event in firefox
var isBlurOnProgress = false;


/*
* onload functions
*/

function H_PublicSite_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.CPSInterface();
  interfaceObj.initNavigator();

  YAHOO.util.Event.addListener(window, "mousemove", interfaceObj.init_xy, interfaceObj, true);
}

function H_FirstTimeUser_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.CHMInterface();
  interfaceObj.initNavigator();
  YAHOO.util.Event.addListener(window, "mousemove", interfaceObj.init_xy, interfaceObj, true);
}

function IWP_onload(myInventoryContext)
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.CIWPInterface();
  interfaceObj.initNavigator();
  interfaceObj.loadWineDetailStats();

  initializeWindow();
}

function MPD_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.MPDInterface();
  interfaceObj.initNavigator();
  interfaceObj.loadMarketplaceDetailStats();

  initializeWindow();
}

function External_externalHome_onload()
{
}

function External_acceptBid_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.ExternalAcceptBidInterface();
  interfaceObj.initNavigator();

  initializeWindow();
}

function External_bidFeedback_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.ExternalBidFeedbackInterface();
  interfaceObj.initNavigator();

  initializeWindow();
}
function MPO_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.MPOInterface();
  interfaceObj.initNavigator();
  interfaceObj.loadMarketplaceDetailStats();

  initializeWindow();
}

function MA_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.CMAInterface();
  interfaceObj.initNavigator();
}

function EH_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.CEHInterface();
  interfaceObj.initNavigator();
}

function ICW_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.CICWInterface();
  interfaceObj.initNavigator();

  YAHOO.util.Event.addListener(window, "mousemove", interfaceObj.init_xy, interfaceObj, true);
}

function LG_onload(context)
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.LGInterface(context);
}

function ICH_onload()
{
  bodyMinWidth();
  initializeWindow();    //popup.js

  interfaceObj = new YAHOO.widget.CICWInterface();
}

function REG_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.REGInterface();
  interfaceObj.initNavigator();
}

function MC_onload(targetAction)
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.CMCInterface(targetAction);
  interfaceObj.initNavigator();

  YAHOO.util.Event.addListener(window, "mousemove", interfaceObj.actionListHandler.init_xy, interfaceObj.actionListHandler, true);
}

function CW_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.CWInterface();
  interfaceObj.initNavigator();
  YAHOO.util.Event.addListener(window, "mousemove", interfaceObj.actionListHandler.init_xy, interfaceObj.actionListHandler, true);
}

function CH_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.CHInterface();
  interfaceObj.initNavigator();
}

function IPP_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.IPPInterface();
  interfaceObj.initNavigator();
}

function TN_onload(tastingNoteContext)
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.CTNInterface(tastingNoteContext);
  interfaceObj.initNavigator();
  YAHOO.util.Event.addListener(window, "mousemove", interfaceObj.actionListHandler.init_xy, interfaceObj.actionListHandler, true);
}

function RC_onload()
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.CRCInterface();
  interfaceObj.initNavigator();
}

function BE_onload()
{
  bodyMinWidth();

  interfaceObj = new YAHOO.widget.CBEInterface();
  interfaceObj.initNavigator();
}

function EWI_onload()
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.CEWIInterface();
  interfaceObj.initNavigator();
}

function EI_onload()
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.CEIInterface();
  interfaceObj.initNavigator();

  interfaceObj.wineDetailStatsHandler.myInventorySummary();
}

function EMI_onload()
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.EMIInterface();
  interfaceObj.initNavigator();

  interfaceObj.wineDetailStatsHandler.myInventorySummary();
}

function EP_onload()
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.CEPInterface();
  interfaceObj.initNavigator();

  interfaceObj.wineDetailStatsHandler.myInventorySummary();
}

function SELV_onload(context,target)
{
  interfaceObj = new YAHOO.widget.CSELVInterface(context, target);
  interfaceObj.initNavigator();
  // for modal popup (add wine manually)
  initializeWindow();
}

function SEL_onload(target, context)
{
  interfaceObj = new YAHOO.widget.CSELInterface(target,context);
  interfaceObj.initNavigator();
}

function AWView_onload()
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.CAWViewInterface();
  interfaceObj.initNavigator();
  this.additionalServicesPopup = new HelpPopup('additionalServicesHelpPopup', 'additionalServicesHelpLink', 'rightVertical');
}

function MW_onload()
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.CMWInterface();
  interfaceObj.initNavigator();
  initializeWindow();
}

function PB_onload()
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.CPBInterface();
  interfaceObj.initNavigator();
  initializeWindow();
}

function CA_onload(cellarAnalysisContext)
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.CACInterface(cellarAnalysisContext);
  interfaceObj.initNavigator();
}

function LV_onload(imagePrefix)
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.CLVInterface(imagePrefix);
  interfaceObj.initNavigator();
}

function AS_onload(targetAction)
{
  bodyMinWidth();
  interfaceObj = new YAHOO.widget.ASInterface(targetAction);
  interfaceObj.initNavigator();
}

function PP_onload()
{
  interfaceObj = new YAHOO.widget.CPVInterface();
  interfaceObj.initNavigator();
}

function AP_onload()
{
  interfaceObj = new YAHOO.widget.CAPInterface();
  interfaceObj.initNavigator();
}

function MRH_onload()
{
  interfaceObj = new YAHOO.widget.MRHInterface();
  interfaceObj.initNavigator();
}

function PBD_onload()
{
  interfaceObj = new YAHOO.widget.PBDInterface();
  interfaceObj.initNavigator();
}

function PUW_onload()
{
  interfaceObj = new YAHOO.widget.PUWInterface();
  interfaceObj.initNavigator();
}

function APUW_onload()
{
  interfaceObj = new YAHOO.widget.APUWInterface();
  interfaceObj.initNavigator();
}

function AHI_onload()
{
  interfaceObj = new YAHOO.widget.AHIInterface();
  interfaceObj.initNavigator();
}

function flashSale_onload()
{
  interfaceObj = new YAHOO.widget.FlashSaleInterface();
  interfaceObj.initNavigator();
}

function KII_onload()
{
  interfaceObj = new YAHOO.widget.KIInterface();
  interfaceObj.initNavigator();
}

function PIII_onload()
{
  interfaceObj = new YAHOO.widget.PIIInterface();
  interfaceObj.initNavigator();
}

function AHIE_onload()
{
  interfaceObj = new YAHOO.widget.AHIEInterface();
  interfaceObj.initNavigator();
}

function AA_onload()
{
  interfaceObj = new YAHOO.widget.AAInterface();
  interfaceObj.initNavigator();
}

function VS_onload()
{
  interfaceObj = new YAHOO.widget.AVSInterface();
  interfaceObj.initNavigator();
}

function PRC_onload()
{
  interfaceObj = new YAHOO.widget.PRCInterface();
  interfaceObj.initNavigator();
}

function Auction_onload()
{
  interfaceObj = new YAHOO.widget.AuctionInterface();
  interfaceObj.initNavigator();
}

function SR_onload()
{
  interfaceObj = new YAHOO.widget.SRInterface();
  interfaceObj.initNavigator();
}

function MSR_onload(targetAction, targetApplication)
{
  interfaceObj = new YAHOO.widget.MSRInterface(targetAction, targetApplication);
  interfaceObj.initNavigator();
}

function SRD_onload()
{
  interfaceObj = new YAHOO.widget.SRDInterface();
  interfaceObj.initNavigator();
}

function QRS_onload()
{
  interfaceObj = new YAHOO.widget.QRSInterface();
  interfaceObj.initNavigator();
}

function MR_onload()
{
  interfaceObj = new YAHOO.widget.CMRInterface();
  interfaceObj.initNavigator();
}

function AWC_onload()
{
  interfaceObj = new YAHOO.widget.AWCInterface();
  interfaceObj.initNavigator();
}

function VI_onload()
{
  interfaceObj = new YAHOO.widget.CVIInterface();
  interfaceObj.initNavigator();
}

function AQR_onload()
{
  interfaceObj = new YAHOO.widget.CAQRInterface();
  interfaceObj.initNavigator();
}

function MRV_onload()
{
  interfaceObj = new YAHOO.widget.MRVInterface();
  interfaceObj.initNavigator();
}
function AORH_onload()
{
  interfaceObj = new YAHOO.widget.ORHInterface();
  interfaceObj.initNavigator();
}

function ABR_onload()
{
  interfaceObj = new YAHOO.widget.ABRInterface();
  interfaceObj.initNavigator();
}

function CIR_onload()
{
  interfaceObj = new YAHOO.widget.CIRInterface();
  interfaceObj.initNavigator();
}

function WPR_onload()
{
  interfaceObj = new YAHOO.widget.WPRInterface();
  interfaceObj.initNavigator();
}

function AUW_onload()
{
  interfaceObj = new YAHOO.widget.CAUWInterface();
  interfaceObj.initNavigator();
}

function ASBC_onload()
{
  interfaceObj = new YAHOO.widget.CASBInterface();
  interfaceObj.initNavigator();
}

function DZ_onload()
{
  interfaceObj = new YAHOO.widget.DZInterface();
  interfaceObj.initNavigator();
}

function APRT_onload()
{
  interfaceObj = new YAHOO.widget.APRTInterface();
  interfaceObj.initNavigator();
}

function GPI_onload()
{
  interfaceObj = new YAHOO.widget.AGPInterface();
  interfaceObj.initNavigator();
}

function AL_onload()
{
  interfaceObj = new YAHOO.widget.CALInterface();
  interfaceObj.initNavigator();
}

function ALD_onload()
{
  interfaceObj = new YAHOO.widget.CALDInterface();
  interfaceObj.initNavigator();
}

function OR_onload()
{
  interfaceObj = new YAHOO.widget.ORInterface();
  interfaceObj.initNavigator();
}
function CC_onload()
{
  interfaceObj = new YAHOO.widget.ACCInterface();
  interfaceObj.initNavigator();
}

function AGC_onload()
{
  interfaceObj = new YAHOO.widget.AGCInterface();
  interfaceObj.initNavigator();
}

function API_onload()
{
  interfaceObj = new YAHOO.widget.APIInterface();
  interfaceObj.initNavigator();
}

function WO_onload()
{
  interfaceObj=new YAHOO.widget.WOInterface();
  interfaceObj.initNavigator();
}

function PC_onload()
{
  interfaceObj = new YAHOO.widget.CPCInterface();
  interfaceObj.initNavigator();
}

function PI_onload()
{
  interfaceObj = new YAHOO.widget.PIInterface();
  interfaceObj.initNavigator();
}

function SWC_onload()
{
  interfaceObj = new YAHOO.widget.SWCInterface();
  interfaceObj.initNavigator();
}

function SWSO_onload()
{
  interfaceObj = new YAHOO.widget.SWSOInterface();
  interfaceObj.initNavigator();
}

function SWPK_onload()
{
  interfaceObj = new YAHOO.widget.SWPKInterface();
  interfaceObj.initNavigator();
}

function SWOP_onload()
{
  interfaceObj = new YAHOO.widget.SWOPInterface();
  interfaceObj.initNavigator();
}

function SWPY_onload()
{
  interfaceObj = new YAHOO.widget.SWPYInterface();
  interfaceObj.initNavigator();
}

function SRR_onload()
{
  interfaceObj = new YAHOO.widget.SRRInterface();
  interfaceObj.initNavigator();
}

function featuredWine_onload()
{
  interfaceObj = new YAHOO.widget.featuredWineInterface();
  interfaceObj.initNavigator();
}

function SellerWine_onload()
{
  interfaceObj = new YAHOO.widget.SellerWineInterface();
  interfaceObj.initNavigator();
}

function Vintages_onload()
{
  interfaceObj = new YAHOO.widget.VintagesInterface();
  interfaceObj.initNavigator();
}

function JobSummaryReport_onload()
{
  interfaceObj = new YAHOO.widget.JobSummaryReportInterface();
  interfaceObj.initNavigator();
}

function MRC_onload()
{
  interfaceObj = new YAHOO.widget.MRCInterface();
  interfaceObj.initNavigator();
}

function MSI_onload()
{
  interfaceObj = new YAHOO.widget.MSIInterface();
  interfaceObj.initNavigator();
}
function CSR_onload()
{
  interfaceObj = new YAHOO.widget.CSRInterface();
  interfaceObj.initNavigator();
}

function UMR_onload()
{
  interfaceObj = new YAHOO.widget.UMRInterface();
  interfaceObj.initNavigator();
}

function AN_onload()
{
  interfaceObj = new YAHOO.widget.ANInterface();
  interfaceObj.initNavigator();
}

function mplaceInspect_onload()
{
  interfaceObj = new YAHOO.widget.MarketplaceInspectInterface();
  interfaceObj.initNavigator();
}

function shipments_onload()
{
  interfaceObj = new YAHOO.widget.ShipmentsInterface();
  interfaceObj.initNavigator();
}

function CreateEditWinePost_onload()
{
  interfaceObj = new YAHOO.widget.CreateEditWinePostInterface();
  interfaceObj.initNavigator();
}

function winePostDetail_onload()
{
  interfaceObj = new YAHOO.widget.WinePostDetail();
  interfaceObj.initNavigator();
}

function wishlist_onload()
{
  interfaceObj = new YAHOO.widget.Wishlist();
  interfaceObj.initNavigator();
}

function MPW_onload()
{
  interfaceObj = new YAHOO.widget.MPWInterface();
  interfaceObj.initNavigator();
}

function winePostHome_onLoad()
{
  interfaceObj = new YAHOO.widget.winePostHomeInterface();
  interfaceObj.initNavigator();
}


function srreceipt_onload()
{
  interfaceObj=new YAHOO.widget.SRRecInterface();
  interfaceObj.initNavigator();
}

function updateCarriers_onload()
{
  interfaceObj = new YAHOO.widget.UpdateCarriersInterface();
  interfaceObj.initNavigator();
}

if (isIE)
  window.onresize = bodyMinWidth;