/* Note: external dependency to auctionConfig object */

dojo.require("dojo.date");

dojo.require("dojox.widget.Toaster");
dojo.require("dijit.form.Button");
dojo.require("dijit.Dialog");
dojo.require("dijit.Tooltip");

dojo.require("iap.auction.UserData");
dojo.require("iap.auction.AuctionData");
dojo.require("iap.auction.AuctionClock");
dojo.require("iap.auction.BidService");
dojo.require("iap.auction.widget.AuctionContainer");
dojo.require("iap.auction.widget.PromotionBox");
dojo.require("iap.auction.widget.UserInfo");
dojo.require("iap.auction.widget.BidList");
dojo.require("iap.auction.widget.PriceCalc");
dojo.require("iap.auction.widget.AuctionRotatorContainer");
dojo.require("iap.auction.widget.ImageController");
dojo.require("iap.auction.widget.CashbackCredit");
dojo.require("dojo.parser");

if( !iap ) { iap = {} };
iap.highlightCurrentPageMenuTab = function() {
	var linksToCurrentPage = function( item ){
		var link = dojo.query('a', item)[0];
		link = dojo.attr( link, 'href' );
                if (link.match('^/$')) {
                   link = '';
                }
		var re = new RegExp( '^' + link + '$' );
		var url = window.location.pathname.replace(/\/$/,'');
		return url.match( re );
	};
	dojo.query( '.navbar .navStandard' ).filter( linksToCurrentPage ).addClass( 'currentPage' );
}

iap.loadGlobalObjects = function() {
	auctionClock = new iap.auction.AuctionClock({
		config:    auctionConfig
	});
	
	auctionData = new iap.auction.AuctionData({
		config:    auctionConfig,
		auctionClock:auctionClock
	});
	
	bidService = new iap.auction.BidService({
		config:      auctionConfig,
		auctionData: auctionData,
	    checkAuth: false,
	    auth: 'ud'
	});
	
	toaster = new dojox.widget.Toaster({
		separator:         "<hr>",
	    positionDirection: "br-up",
	    messageTopic:      "bidReceived",
		duration:          7000
	});
}

iap.setupClock = function() {
	function updClock() {
		dojo.byId( 'clock' ).innerHTML = dojo.date.locale.format(
			auctionClock.getTime(),
			{ formatLength: 'medium' }
		) + ' (' + auctionConfig.timezoneName + ')';
	}
	
	setInterval( updClock, 1000 );
}

/* wait for dojo.requires to finish */
dojo.addOnLoad(function() {
	iap.highlightCurrentPageMenuTab();
	
	iap.loadGlobalObjects();
	
	iap.setupClock();
	
	dojo.parser.parse(); // scan page for widgets and instantiate them
});
