/**
 * Copy the value of an input field's title attribute to its value attribute.
 * Clear the input field on focus if its value is the same as its title.
 * Repopulate the input field on blur if it is empty.
 * Hide the input field's associated label if it has one.
 * @requires jQuery
 */
var NetRInputPopulate = function() {
	var sInputClass = 'populate'; // Class name for input elements to autopopulate
	var sHiddenClass = 'structural'; // Class name that gets assigned to hidden label elements
	var sHideLabelClass = 'hidelabel'; // If the input has this className, its label is hidden
	function hideLabel(sId) {
		var arrLabels = document.getElementsByTagName('label');
		var iLabels = arrLabels.length;
		var oLabel;
		for (var i=0; i<iLabels; i++) {
			oLabel = arrLabels[i];
			if (oLabel.htmlFor == sId) {
				oLabel.className = oLabel.className + ' ' + sHiddenClass;
			}
		}
	}
	// Main function
	return {
		init:function() {
			// Find all input elements with the given className
			var arrInputs = $('input.' + sInputClass);
			var iInputs = arrInputs.length;
			var oInput;
			for (var i=0; i<iInputs; i++) {
				oInput = arrInputs[i];
				// Make sure it's a text input
				if (oInput.type != 'text') { continue; }
				// Hide the input's label
				if ($(oInput).hasClass(sHideLabelClass)) { hideLabel(oInput.id); }
				// If value is empty and title is not, assign title to value
				if ((oInput.value == '') && (oInput.title != '')) { oInput.value = oInput.title; }
				// Add event handlers for focus and blur
				$(oInput).bind('focus', function() {
					// If value and title are equal on focus, clear value
					if (this.value == this.title) {
						this.value = '';
						this.select(); // Make input caret visible in IE
					}
				});
				$(oInput).bind('blur', function() {
					// If the field is empty on blur, assign title to value
					if (!this.value.length) { this.value = this.title; }
				});
			}
		}
	};
}();

var createLinkButton = {
	init: function() {
		if (!(document.createElement && document.getElementsByTagName)) return;
		var arrButtons = $('input.link-button');
		var oButton;
		var oForm;
		var oLinkButton;
		for (var i=0, len=arrButtons.length; i<len; i++) {
			oButton = arrButtons[i];
			oForm = oButton.form;
			oLinkButton = document.createElement('a');
			oLinkButton.href = 'javascript:search();';
			oLinkButton.onclick="search()";
			oLinkButton.className = 'button';
			oLinkButton.innerHTML = '<span><span><span><span>' + oButton.value + '</span></span></span></span>';
			//oLinkButton.onclick = function() {
				//document.search();//$(this).search();//parents("form").submit();;
				//$(this).parents("form").submit();
				//return false;
			//};
			oButton.parentNode.insertBefore(oLinkButton,oButton);
			oButton.parentNode.removeChild(oButton);
		}
	}
};

var readSpeaker = {
	lang: 'sv',
	init:function() {
		// Check for DOM support
		if (!document.getElementById || !document.createTextNode) { return; }
		readSpeaker.lang = document.getElementsByTagName('html')[0].getAttribute('lang');
		if (readSpeaker.lang != 'sv') { return; }
		var oH1 = document.getElementsByTagName('h1')[0];
		var oBody = document.getElementsByTagName('body')[0];
		if (oH1 && ($(oBody).hasClass('layout-2') || $(oBody).hasClass('layout-3'))) {
			var s3 = new SWFObject("/swf/mp3player.swf", "line", "240", "20", "7");
			if (s3.installedVer.major < 7) { return; }
			var oWrapper = document.createElement('div');
			oWrapper.id = 'rs-wrapper';
			var oLink = document.createElement('a');
			oLink.id = 'rs-play';
			oLink.href = '#';
			oLink.appendChild(document.createTextNode(readSpeaker._('listen')));
			oLink.onclick = function() {
				var oImg = document.createElement('img');
				oImg.id = 'rs-spinner';
				oImg.src = '/i/spinner.gif';
				oImg.alt = 'Laddar…';
				oWrapper.replaceChild(oImg, oLink);
				$.get('/ajax/ReadSpeakerHelper.aspx?url=' + window.location.href, function(data) {
					var url = data.replace('lang=sv&', '');
					s3.addVariable("file", url);
					s3.addVariable("showdigits", "true");
					s3.addVariable("showdownload", "false");
					s3.addVariable("autostart", "true");
					s3.write("rs-wrapper");
				});
				return false;
			};
			oWrapper.appendChild(oLink);
			oH1.parentNode.insertBefore(oWrapper, oH1.nextSibling);
		}
	},
	_: function(str){
		return readSpeaker.strings[readSpeaker.lang][str];
	},
	strings: {
		"en": {"listen": "Listen to this page"},
		"sv": {"listen": "Lyssna på sidan"}
	}
};

/**
 * @requires jQuery
 * Calls each function's init() method when the DOM is ready
 */
$(document).ready(function(){
	NetRInputPopulate.init(); // Populate input fields
	createLinkButton.init();
	readSpeaker.init();
});

/* Flicker fix for IE6 */
try {
  document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}
