jQuery.noConflict();

jQuery(document).ready(function() {
	// Link Building Tool: Set default checkboxes to checked - fault in SilverStripe
	if (jQuery("#Form_CompetitorLinksCrossTableForm_Default").val() == "default") {
		jQuery("#Form_CompetitorLinksCrossTableForm_Default").attr('value', "set");
		jQuery("#Form_CompetitorLinksCrossTableForm_YahooLD").attr('checked', true);
		jQuery("#Form_CompetitorLinksCrossTableForm_Google").attr('checked', true);
	}
	
	// Copy Meta: Set default checkboxes to checked - fault in SilverStripe
	if (jQuery("#Form_AnalyseMetaForm_Default").val() == "default") {
		jQuery("#Form_AnalyseMetaForm_Default").attr('value', "set");
		jQuery("#Form_AnalyseMetaForm_ShowTitle").attr('checked', true);
		jQuery("#Form_AnalyseMetaForm_ShowDescription").attr('checked', true);
	}
	
	// URL encode / decode
	jQuery("#Form_URLEncodeForm_action_CreateURLEncodeForm").click(function(event) {
		jQuery("#Form_URLEncodeForm_Text").attr('value', Url.encode(jQuery("#Form_URLEncodeForm_Text").val()));
	});
	
	jQuery("#Form_URLEncodeForm_action_CreateURLDecodeForm").click(function(event) {
		jQuery("#Form_URLEncodeForm_Text").attr('value', Url.decode(jQuery("#Form_URLEncodeForm_Text").val()));
	});
	
	jQuery("#Form_URLEncodeForm").submit(function(event) { return false; });
	
	jQuery("#Form_RGB2HexForm_Red").keyup(function(event) { updateHex(); });
	jQuery("#Form_RGB2HexForm_Red").change(function(event) { updateHex(); });
	jQuery("#Form_RGB2HexForm_Green").keyup(function(event) { updateHex(); });
	jQuery("#Form_RGB2HexForm_Green").change(function(event) { updateHex(); });
	jQuery("#Form_RGB2HexForm_Blue").keyup(function(event) { updateHex(); });
	jQuery("#Form_RGB2HexForm_Blue").change(function(event) { updateHex(); });
	
	jQuery("#Form_RGB2HexForm_Hex").keyup(function(event) { updateDec(); });
	jQuery("#Form_RGB2HexForm_Hex").change(function(event) { updateDec(); });

	jQuery("#Form_RGB2HexForm_HideHash").change(function(event) { updateHex(); });	
	updateHex();
});

function previewColour() {
	var color = jQuery("#Form_RGB2HexForm_Hex").val();
	if (String(color).charAt(0) != '#') color = '#' + color;
	jQuery("#rgbColour").css('background-color', color);
}

function decToHex(value) {
	var char = "0123456789ABCDEF";
	return String(char.charAt(Math.floor(value / 16))) + String(char.charAt(value - (Math.floor(value / 16) * 16)));
} 

function rgb2Hex() {
  var hash = '#';
  if (jQuery("#Form_RGB2HexForm_HideHash").attr("checked")) hash ='';
	var r = parseInt(jQuery("#Form_RGB2HexForm_Red").val());
	if (r < 0) r = 0; if (r > 255) r = 255;
	var g = parseInt(jQuery("#Form_RGB2HexForm_Green").val());
	if (g < 0) g = 0; if (g > 255) g = 255;
	var b = parseInt(jQuery("#Form_RGB2HexForm_Blue").val());
	if (b < 0) b = 0; if (b > 255) b = 255;
	return hash + decToHex(r) + decToHex(g) + decToHex(b);
}

function updateHex() {
	jQuery("#Form_RGB2HexForm_Hex").attr('value', rgb2Hex());
	previewColour();
}

function updateDec() {
	var fromHex = jQuery("#Form_RGB2HexForm_Hex").val();
	var hash = fromHex.indexOf('#') + 1;
	if (String(fromHex).length == (3+hash)) {
		if (hash == 1) var fromHex = '#';
		else var fromHex = '';
		for(var i=hash; i < 3+hash; i++) {
			fromHex += String(jQuery("#Form_RGB2HexForm_Hex").val().charAt(i)) + String(jQuery("#Form_RGB2HexForm_Hex").val().charAt(i));
		}
	}
	jQuery("#Form_RGB2HexForm_Red").attr('value', parseInt(fromHex.substr(0 + hash, 2), 16));
	jQuery("#Form_RGB2HexForm_Green").attr('value', parseInt(fromHex.substr(2 + hash, 2), 16));
	jQuery("#Form_RGB2HexForm_Blue").attr('value', parseInt(fromHex.substr(4 + hash, 2), 16));
	previewColour();
}


/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/
 
var Url = {
 
	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
 
	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}