
function showTools(tool_type) { 
document.getElementById('tools_popup').style.display='inline';
document.getElementById('FullScreenTools').style.display='inline';
LoadTool(tool_type);
}

function hideTools() {
document.getElementById('tools_popup').style.display='none';
document.getElementById('FullScreenTools').style.display='none';
}

function LoadTool(tool) {
 var ToolHTML = "";
 if (tool == null) {
  tool = 'replacer';
 }
 
 switch (tool) {
  case "replacer" :
   ToolHTML += "<table>";
   ToolHTML += " <tr><td>String or regexp to be replaced:</td><td>Replacement string or regexp:</td></tr>";
   ToolHTML += " <tr><td><textarea id='to_be_rep_string' rows='1' cols='20'></textarea></td><td><textarea id='rep_string' rows='1' cols='20'></textarea></td></tr>";
   ToolHTML += " <tr><td colspan='2'>Original text:</td></tr>";
   ToolHTML += " <tr><td><textarea id='input_text' rows='1' cols='20'></textarea></td><td><img src='/images/tools_go.png' onmouseover='this.style.cursor=\"pointer\"' alt='Replace' title='Replace' onclick='replacer()' /></td></tr>";
   ToolHTML += " <tr><td colspan='2'>Result:</td></tr>";
   ToolHTML += " <tr><td colspan='2'><textarea id='output_text' rows='1' cols='43'></textarea></td></tr>";
   ToolHTML += "</table>";
  break;
  
  case "quote_escaper" :
   ToolHTML += "<br />What type of quotes do you want to escape? <select id='quote_escape_type'><option value='single'>Single</option><option value='double'>Double</option><option value='both'>Both</option></select><br />";
   ToolHTML += "<br />Paste the text below and press enter:<br />";
   ToolHTML += "<textarea id='quote_escape_text' rows='2' cols='43' onkeypress='return EnableEnterQuote(event);'></textarea><br /><br />";
   ToolHTML += "Result:<br />";
   ToolHTML += "<textarea id='quote_escape_result' rows='2' cols='43'></textarea>";
  break;
  
  case "color_picker" :
   ToolHTML += "<br /><br />";
   ToolHTML += "<table align='center'>";
   ToolHTML += " <tr><td>Hexadecimal:</td><td><input maxlength='7' type='text' id='color_hex' value='#000000' onchange='color_picker(\"hex\")' style='width:100px;' /></td></tr>";
   ToolHTML += " <tr><td>Red:</td><td><input maxlength='3' type='text' id='color_r' value='0' onchange='color_picker(\"rgb\")' style='width:100px;' /></td></tr>";
   ToolHTML += " <tr><td>Green:</td><td><input maxlength='3' type='text' id='color_g' value='0' onchange='color_picker(\"rgb\")' style='width:100px;' /></td></tr>";
   ToolHTML += " <tr><td>Blue:</td><td><input maxlength='3' type='text' id='color_b' value='0' onchange='color_picker(\"rgb\")' style='width:100px;' /></td></tr>";
   ToolHTML += " <tr><td>Color:</td><td><div id='color_pic' style='height:20px; width:103px; background-color:black;'></div></td></tr>";
   ToolHTML += " <tr><td style='text-align:center;' colspan='2'><span id='color_picker_warn_text' style='color:#777; font-weight:bold;'></span></td></tr>";
   ToolHTML += "</table>";
   
  break;
 }
 document.getElementById('tools_select').value = tool;
 document.getElementById('tools_main').innerHTML = ToolHTML;
}

/*
 * The following functions are used for the tools.
 */
 
function EnableEnterQuote(e)
{
     var key;   
	 
     if (window.event) {
          key = window.event.keyCode; //IE
     } else {
          key = e.which; //firefox     
	 }
	
     if (key == 13) {
		quote_escaper();
		return false;
	 }
	 
	return true;
}
 
function quote_escaper() {

 var text = document.getElementById('quote_escape_text').value;
 var q_opt = document.getElementById('quote_escape_type').value;
 
 if (q_opt == 'single') {
  text = text.replace("'","\\'");
 } else if (q_opt == 'double') {
  text = text.replace('"','\\"');
 } else if (q_opt == 'both') {
  text = text.replace('"','\\"');
  text = text.replace("'","\\'");
 }
 
 document.getElementById('quote_escape_result').value = text;
 
}

function replacer() {
 var to_be_rep_string = document.getElementById('to_be_rep_string').value;
 var rep_string = document.getElementById('rep_string').value;
 var input_text = document.getElementById('input_text').value;
 var output_text = input_text;
 if (rep_string != "" && to_be_rep_string != "") {
  var MatchIndex = output_text.indexOf(to_be_rep_string);
  while (MatchIndex != -1) {
    output_text = output_text.replace(to_be_rep_string, rep_string);
    MatchIndex = output_text.indexOf(to_be_rep_string);
  }
 }
 document.getElementById('output_text').value = output_text;
}

function ConvToDec(Hex_val)
{
   var Ret_Value = "";
   
   if (Hex_val == "A")
      Ret_Value = 10;
   else if (Hex_val == "B")
      Ret_Value = 11;
   else if (Hex_val == "C")
      Ret_Value = 12;
   else if (Hex_val == "D")
      Ret_Value = 13;
   else if (Hex_val == "E")
      Ret_Value = 14;
   else if (Hex_val == "F")
      Ret_Value = 15;
   else
      Ret_Value = eval(Hex_val);

   return Ret_Value;
}

function ConvToHex(Dec_val)
{
   var Ret_Value = "";
   
   if (Dec_val == 10)
      Ret_Value = "A";
   else if (Dec_val == 11)
      Ret_Value = "B";
   else if (Dec_val == 12)
      Ret_Value = "C";
   else if (Dec_val == 13)
      Ret_Value = "D";
   else if (Dec_val == 14)
      Ret_Value = "E";
   else if (Dec_val == 15)
      Ret_Value = "F";
   else
      Ret_Value = "" + Dec_val;

   return Ret_Value;
}

function isHex(entry){

  var validChar='0123456789ABCDEF';
  var strlen=entry.length;
  if (strlen < 1) { 
    return false; 
  }
  entry=entry.toUpperCase(); 

  for(idx=0;idx<strlen;idx++){
   if (validChar.indexOf(entry.charAt(idx))<0) {
    return false; 
   }
  } 

  return true;
  
}

function color_picker(ch_type) {

 var hex = document.getElementById('color_hex').value;
 var red = document.getElementById('color_r').value;
 var green = document.getElementById('color_g').value;
 var blue = document.getElementById('color_b').value;
 
 if (parseInt(red) > 255) {
  red = 255;
  ColorPickerWarn("Invalid red value (0-255)");
 } else if (red < 0) {
  red = 0;
  ColorPickerWarn("Invalid red value (0-255)");
 }
 
 if (parseInt(green) > 255) {
  green = 255;
  ColorPickerWarn("Invalid green value (0-255)");
 } else if (green < 0) {
  green = 0;
  ColorPickerWarn("Invalid green value (0-255)");
 }
 
 if (parseInt(blue) > 255) {
  blue = 255;
  ColorPickerWarn("Invalid blue value (0-255)");
 } else if (blue < 0) {
  blue = 0;
  ColorPickerWarn("Invalid blue value (0-255)");
 }
 
 if (ch_type == 'hex') {
 
  if (hex.substr(0,1) != '#') {
   hex = "#" + hex;
  }
  if (!isHex(hex.substr(1,6))) {
   hex = "#000000";
   ColorPickerWarn("Invalid hex value (0-9, A-F)");
  }
  if (hex.length < 7) {
   hex = "#000000";
   ColorPickerWarn("Invalid hex length");
  }
  var hex_red_1 = hex.substr(1,1);
  var hex_red_2 = hex.substr(2,1);
  var hex_green_1 = hex.substr(3,1);
  var hex_green_2 = hex.substr(4,1);
  var hex_blue_1 = hex.substr(5,1);
  var hex_blue_2 = hex.substr(6,1);
  var rgb_red = ConvToDec(hex_red_1) * 16 + ConvToDec(hex_red_2);
  var rgb_green = ConvToDec(hex_green_1) * 16 + ConvToDec(hex_green_2);
  var rgb_blue = ConvToDec(hex_blue_1) * 16 + ConvToDec(hex_blue_2);

  document.getElementById('color_pic').style.backgroundColor = 'rgb(' + rgb_red + ',' + rgb_green + ',' + rgb_blue + ')';
  document.getElementById('color_r').value = rgb_red;
  document.getElementById('color_g').value = rgb_green;
  document.getElementById('color_b').value = rgb_blue;
  document.getElementById('color_hex').value = hex;
  
 } else if (ch_type == 'rgb') {

	document.getElementById('color_pic').style.backgroundColor = 'rgb(' + red + ',' + green + ',' + blue + ')';
	document.getElementById('color_hex').value = '#';
	document.getElementById('color_hex').value += ConvToHex(Math.floor((red / 16))) + "" + ConvToHex((red - (Math.floor((red / 16)) * 16)));
	document.getElementById('color_hex').value += ConvToHex(Math.floor((green / 16))) + "" + ConvToHex((green - (Math.floor((green / 16)) * 16)));
	document.getElementById('color_hex').value += ConvToHex(Math.floor((blue / 16))) + "" + ConvToHex((blue	- (Math.floor((blue / 16)) * 16)));
    document.getElementById('color_r').value = red;
    document.getElementById('color_g').value = green;
    document.getElementById('color_b').value = blue;
 }
}

function ColorPickerWarn(text) {
    document.getElementById('color_picker_warn_text').innerHTML = text;
}

