var ngn_main_url = 'http://services.attention-ngn.com';
// hotfix for ie browsers that not support the forEach array function
if (!Array.prototype.forEach) {
	Array.prototype.forEach = function(fun)
	{
		var len = this.length;
		if (typeof fun != "function") return false;
		var thisp = arguments[1];
		for (var i = 0; i < len; i++) {
			if (i in this) fun.call(thisp, this[i], i, this);
		}
	};
};

if (typeof window.jQQ !== "object") {
	var script = document.createElement('script');
	script.type = 'text/javascript';
	script.src = ngn_main_url + '/js/jqq.js';

	// If this is IE, watch the last script's ready state.
    script.onreadystatechange = function () {
    	if (this.readyState === 'loaded' ||
    		this.readyState === 'complete') {
    		jQQ.setup('1.6.2');
    		ngn_widget_loader();
      	}
    };

    // Firefox and Safari 3.0+ support the load/error events on script
    // nodes.
	script.onload = function() {
		jQQ.setup('1.6.2');
		ngn_widget_loader();
	};
	script.onerror = function() {
		jQQ.setup('1.6.2');
		ngn_widget_loader();
	};

	document.getElementsByTagName('head')[0].appendChild(script);
};

function ngn_widget_loader() {
	jQQ.isolate(function($){
		$('.ngn-widget-wrapper:not(.ngn-widget-loading)').each(function(index, element) {

	    	var widget = $(element);
	    	var classes = widget.attr('class').split(' ');
	    	var id = classes[1].replace('ngn-widget-', '');
	    	if (id == "") return;
	    	var width = 0;
	    	var height = 0;
	    	var locale = '';

	    	for (var i = 0; i < classes.length; i++) {
	    		if (classes[i].indexOf('ngn-height-') >= 0) {
	    			height = Number(classes[i].replace('ngn-height-', ''));
	    		}
	    		else if (classes[i].indexOf('ngn-width-') >= 0) {
	    			width = Number(classes[i].replace('ngn-width-', ''));
	    		}
	    		else if (classes[i].indexOf('ngn-locale-') >= 0) {
	    			locale = classes[i].replace('ngn-locale-', '');
	    		};
	    	};

	    	widget.css('background-image', 'url(' + ngn_main_url + '/js/loader.gif)')
	    	      .css('background-repeat', 'no-repeat')
	    	      .css('height', '32')
	    	      .addClass('ngn-widget-loading');

	    	$.getJSON(
	    			ngn_main_url + "/widgets/index.php5",	    			
	    			'Action=widgetCmsExternal&widgetid=' + id + (locale != '' ? '&locale=' + locale : '') + '&jsoncallback=?',
	    			function(data) {
	    				if (data) {
		    				widget.css({
		    						'background-image': '',
		    						'background-repeat': '',
		    						'height': ''
		    				})
		    				.html(data.html)
		    				.removeClass('ngn-widget-loading')		    					  
		    				.hide();
		    				if (data.html != '') {
			    				if (height > 0) {
			    					widget.css('height', height + 'px');
			    				};
			    				if (width > 0) {
			    					widget.css('width', width + 'px');
			    				};
			    			}
		    			};
	    			}
	    	);
	    });
	});
};

