if (Object.isUndefined(CodeCompany)) {
	var CodeCompany = {
	};
}

CodeCompany.AsyncProductShopfinder = Class.create({
	initialize: function (options) {
		this.shopid = "";
		
		this.options = Object.extend({
			successCallback: Prototype.emptyFunction,
			overviewType: 'normal',
			async: true
		},
		options || {
		});
		
		this.templates = {
			normal: {
				shop: new Template(
				'<div id="shopinfo" class="contentsection shopinfo">' +
				'<h2 style="float:left;">Nærmeste butik</h2>' +
				'<a href="#" onclick="javascript:$(\'shopinfo\').hide();$(\'shopplaceholder\').removeClassName(\'contentsectioncontainer\');" style="float:right;">» skjul butik</a>' +
				'<a href="/butikker+og+åbningstider"style="float:right;margin-right:10px;">» vis alle butikker</a>'+
				'<div class="clear"><!----></div>' +
				'<div style="float: left;">' +
				'<span>#{butiksnavn}</span><br />' +
				'<span>#{butikadresse}</span><br />' +
				'<span>#{butik_postnummer}&nbsp;#{butik_by}</span><br />' +
				'<span>Telefon: #{butiktlf}</span><br />' +
				'<span>Telefax: #{butikfax}</span><br />' +
				'<span>E-mail: <a href="mailto:#{butiksemail}">#{butikemail}</a></span>' +
				'</div>' +
				'<div style="float: left; margin-left: 64px; width: 200px;">' +
				'<span class="daycol">Mandag</span><span>#{tidmandagfra}&nbsp;-&nbsp;#{tidmandagtil}</span><br />' +
				'<span class="daycol">Tirsdag</span><span>#{tidtirsdagfra}&nbsp;-&nbsp;#{tidtirsdagtil}</span><br />' +
				'<span class="daycol">Onsdag</span><span>#{tidonsdagfra}&nbsp;-&nbsp;#{tidonsdagtil}</span><br />' +
				'<span class="daycol">Torsdag</span><span>#{tidtorsdagfra}&nbsp;-&nbsp;#{tidtorsdagtil}</span><br />' +
				'<span class="daycol">Fredag</span><span>#{tidfredagfra}&nbsp;-&nbsp;#{tidfredagtil}</span><br />' +
				'<span class="daycol">Lørdag</span><span>#{tidlordagfra}&nbsp;-&nbsp;#{tidlordagtil}</span><br />' +
				'<span class="daycol">Søndag<strong>*</strong></span><span>#{tidsondagfra}&nbsp;-&nbsp;#{tidsondagtil}</span><br />' +
				'<span id="openings"><strong>*</strong>#{sondag}</span>' +
				'</div>' +
				'<img width="288" height="144" class="shopimage" src="/files/ide.dk/butikker/facadefotos/288x144/#{butiksnr}.jpg" alt="idemøbler"/>' +
				'<div class="clear"><!----></div>' +
				'</div>')
			}
		};
	},
	
	setSuccessCallback: function (fn) {
		this.options.successCallback = fn;
	},
	setShopId: function (id) {
		this.shopid = id;
	},
	render: function () {
		var zip = $F('shopfind_zipcode');
		dk.ide.webservice.zipservice.GetNearestShopInfo(zip, this.onSuccess.bind(this), this.fail.bind(this));
		//Get them colors and do stuff onSuccess
	},
	
	onSuccess: function (result) {
		var d = (! Object.isUndefined(result.d))? result.d: result;
		data = d;
		this.shopid = data.butiksnr;
		if (! data.error) {
			$('shopfind_zipcode').removeClassName('error');
			markup = this.templates[ this.options.overviewType].shop.evaluate(d);
			$('shopplaceholder').update(markup);
			$('shopplaceholder').addClassName('contentsectioncontainer');
			//  $('shopplaceholder').setStyle('display:block');
			//Find næste søndagsåbent
			if (data.sondagsopen == '1') {
				//Set op async stuff & replace proper:
				var url = '/systemservice/sundays?json=1';
				new Ajax.Request(url, {
					method: 'get',
					onSuccess: (function (transport) {
						doc = transport.responseText.evalJSON()[0];
						str = '<span id="sondag"><strong>*</strong>Næste søndagsåbent: ' + doc.day + '.' + doc.month + '.' + doc.year + ' </span>';
						$('openings').replace(str);
					}).bind(this),
					onError: (function (transport) {
						this.log('JSON request failed: ' + url);
					}).bind(this)
				});
			}
			//Byg egne søndagsåbningsdage:
			if (data.sondagsopen == '0') {
			shopdoc = transport.responseText.evalJSON()[0]['Data'];
				sondag = 'Søndagsåbent på følgende datoer: ';
				for (var i = 1; i <= 12; i++) {
					field = 'sondag_' +('0'.times(2) + i.toString()).slice(- 2);
					sondag += (shopdoc[field] != '')? shopdoc[field] + ' ': '';
				}
			}
			//ikke søndagsåbent:
			if (data.sondagsopen == '2') {
				str = '* NB! Butikken har ikke søndagsåbent';
				$('openings').replace(str);
			}
			new Effect.BlindDown($('shopplaceholder'), {
				duration: 3
			});
		} else {
			$('shopfind_zipcode').addClassName('error');
		}
	},
	fail: function (result) {
		//alert('fail: '+result);
		$('shopfind_zipcode').addClassName('error');
	}
});
