var main_page = true;

function trimstr(s) { return s.replace(/^\s+/,'').replace(/\s+$/,''); }
function get_key_code(e) { if (!e) { e = window.event; } return e.keyCode ? e.keyCode : e.which ? e.which : e.charCode; }

function is_fonttester() {
 if (window.location.protocol == 'http:') {
  if ((window.location.hostname.toLowerCase() == 'www.fonttester.com') || (window.location.hostname.toLowerCase() == 'fonttester.com') || (window.location.href.indexOf('translate') != -1) || (window.location.href.indexOf('cache') != -1)) {
   return true;
  } else { return false; }
 } else { return false; }
}

function web_safe_fonts_font_unit_dropdown_onchange() {
 if (trimstr(document.forms[0].web_safe_fonts_font_size_textbox.value) != '') {
  update_all_spans_font_size(document.forms[0].web_safe_fonts_font_size_textbox.value + document.forms[0].web_safe_fonts_font_size_unit.value);
 }
}

function web_safe_fonts_font_size_dropdown_onchange(it) {
 if (it.value == 'other') {
  document.forms[0].web_safe_fonts_font_size_textbox.disabled = false;
  document.forms[0].web_safe_fonts_font_size_unit.disabled = false;
  update_all_spans_font_size(document.forms[0].web_safe_fonts_font_size_textbox.value + document.forms[0].web_safe_fonts_font_size_unit.value);
 }
 else {
  document.forms[0].web_safe_fonts_font_size_textbox.disabled = true;
  document.forms[0].web_safe_fonts_font_size_unit.disabled = true;
  update_all_spans_font_size(it.value);
 }
}

function update_all_spans_preview_text(new_value) {
  var spans = document.body.getElementsByTagName("SPAN");
  for (var i=0;i<spans.length;i++) {
   spans[i].innerHTML = new_value;
  }
}

function update_all_spans_font_size(new_value) {
  var spans = document.body.getElementsByTagName("SPAN");
  for (var i=0;i<spans.length;i++) {
   spans[i].style.fontSize = new_value;
  }
}

function web_safe_fonts_font_size_textbox_onkeyup() {
 if (key_is_valid) {
  var spans = document.body.getElementsByTagName("SPAN");
  if (spans[0].style.fontSize != (this.value + document.forms[0].web_safe_fonts_font_size_unit.value) ) {
   if (trimstr(this.value) != '') { update_all_spans_font_size(this.value + document.forms[0].web_safe_fonts_font_size_unit.value); }
  }
 }
}

function two_decimal_places_textbox_keydown(e) {
 if (!e) { e = window.event; }
 if (event_already_caught == false) { two_decimal_places_textbox_keypress(e); }
 event_already_caught = false;
}

function two_decimal_places_textbox_keypress(e) {
 event_already_caught = true;
 if (!e) { e = window.event; }
 keycode = get_key_code(e);
 h_s_or_v = false;
 if ((e.srcElement.id == 'h_input') || (e.srcElement.id == 's_input') || (e.srcElement.id == 'v_input') || (e.srcElement.id == 'r_input') || (e.srcElement.id == 'g_input') || (e.srcElement.id == 'b_input')) {
  h_s_or_v = true;
  if (keycode == 46) { key_is_valid = false; event.returnValue = false; return false; }
 }
 if ((window.location.href.indexOf('web_safe_fonts.html') == -1) && (window.location.href.indexOf('font_test.html') == -1)) {
  main_page = true;
 }
 else { main_page = false; }
 if (main_page == true) { get_element_to_update(); }
 switch(keycode) {
  case 38: // up arrow
   if (e.srcElement.value.length > 0) {
    if (e.srcElement.value.indexOf('.') == -1) {
     if (e.srcElement.id == 'h_input') { if (e.srcElement.value < 359) { e.srcElement.value = parseInt(e.srcElement.value) + 1; } }
     else if ((e.srcElement.id == 's_input') || (e.srcElement.id == 'v_input')) { if (e.srcElement.value < 100) { e.srcElement.value = parseInt(e.srcElement.value) + 1; } }
     else if ((e.srcElement.id == 'r_input') || (e.srcElement.id == 'g_input') || (e.srcElement.id == 'b_input')) { if (e.srcElement.value < 255) { e.srcElement.value = parseInt(e.srcElement.value) + 1; } }
     else {
      e.srcElement.value = parseInt(e.srcElement.value) + 1;
     }
    }
    else { e.srcElement.value = (parseFloat(e.srcElement.value) + 0.1).toFixed(1); }
   }
   key_is_valid = true;
   break;
  case 40: // down arrow
   if (e.srcElement.value.length > 0) {
    if (e.srcElement.value.indexOf('.') == -1) {
     if (h_s_or_v == true) { if (e.srcElement.value > 0) { e.srcElement.value = parseInt(e.srcElement.value) - 1; } }
     else {
      e.srcElement.value = parseInt(e.srcElement.value) - 1;
     }
    }
    else { e.srcElement.value = (parseFloat(e.srcElement.value) - 0.1).toFixed(1); }
   }
   key_is_valid = true;
   break;
  case 46: case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 8: case 127:
   key_is_valid = true;
   break;
  default:
   key_is_valid = false;
   e.returnValue = false;
 }
 if (keycode == 46) {
  key_is_valid = false;
  if (e.srcElement.value.indexOf('.') != -1) { // already contains a (.)
   e.returnValue = false;
  }
 }
 if (key_is_valid == true) {
  if (e.srcElement.id == 'font_size_textbox') {
   if (trimstr(e.srcElement.value) != '') {
    if (e.srcElement.value.length > 0) {
     if (e.srcElement.value.substring(e.srcElement.value.length-1) != '.') {
      element_to_update.style.fontSize = e.srcElement.value + document.forms[0].font_size_unit.value;
     }
    } else { element_to_update.style.fontSize = '0' + document.forms[0].font_size_unit.value; }
   }
  }
  else if (e.srcElement.id == 'web_safe_fonts_font_size_textbox') {
   if (trimstr(e.srcElement.value) != '') { update_all_spans_font_size(e.srcElement.value + document.forms[0].web_safe_fonts_font_size_unit.value); }
  }
  else if (e.srcElement.id == 'line_height_textbox') {
   if (trimstr(e.srcElement.value) != '') {
    if (e.srcElement.value.length > 0) {
     if (e.srcElement.value.substring(e.srcElement.value.length-1) != '.') {
      element_to_update.style.lineHeight = e.srcElement.value + document.forms[0].line_height_unit.value;
     }
    } else { element_to_update.style.lineHeight = '0' + document.forms[0].line_height_unit.value; }
   }
  }
  else if (e.srcElement.id == 'text_indent_textbox') {
   if (trimstr(e.srcElement.value) != '') {
    if (e.srcElement.value.length > 0) {
     if (e.srcElement.value.substring(e.srcElement.value.length-1) != '.') {
      element_to_update.style.textIndent = e.srcElement.value + document.forms[0].text_indent_unit.value;
     }
    } else { element_to_update.style.textIndent = '0' + document.forms[0].text_indent_unit.value; }
   }
  }
  else if (e.srcElement.id == 'letter_spacing_textbox') {
   if (trimstr(e.srcElement.value) != '') {
    if (e.srcElement.value.length > 0) {
     if (e.srcElement.value.substring(e.srcElement.value.length-1) != '.') {
      element_to_update.style.letterSpacing = e.srcElement.value + document.forms[0].letter_spacing_unit.value;
     }
    } else { element_to_update.style.letterSpacing = '0' + document.forms[0].letter_spacing_unit.value; }
   }
  }
  else if (e.srcElement.id == 'word_spacing_textbox') {
   if (trimstr(e.srcElement.value) != '') {
    if (e.srcElement.value.length > 0) {
     if (e.srcElement.value.substring(e.srcElement.value.length-1) != '.') {
      element_to_update.style.wordSpacing = e.srcElement.value + document.forms[0].word_spacing_unit.value;
     }
    } else { element_to_update.style.wordSpacing = '0' + document.forms[0].word_spacing_unit.value; }
   }
  }
  else if (e.srcElement.id == 'font_size_adjust_textbox') {
   if (trimstr(e.srcElement.value) != '') {
    if (e.srcElement.value.length > 0) {
     if (e.srcElement.value.substring(e.srcElement.value.length-1) != '.') {
      element_to_update.style.fontSizeAdjust = e.srcElement.value;
     }
    } else { element_to_update.style.fontSizeAdjust = '0'; }
   }
  }
  else if (h_s_or_v == true) {
   if ((e.srcElement.id == 'h_input') || (e.srcElement.id == 's_input') || (e.srcElement.id == 'v_input')) {
    // update RGB
    rgb_arr = HSVtoRGB(document.forms[0].h_input.value, document.forms[0].s_input.value, document.forms[0].v_input.value);
    document.forms[0].r_input.value = rgb_arr[0];
    document.forms[0].g_input.value = rgb_arr[1];
    document.forms[0].b_input.value = rgb_arr[2];
   }
   else if ((e.srcElement.id == 'r_input') || (e.srcElement.id == 'g_input') || (e.srcElement.id == 'b_input')) {
    // update HSV
    hsv_arr = RGBtoHSV(document.forms[0].r_input.value, document.forms[0].g_input.value, document.forms[0].b_input.value);
    document.forms[0].h_input.value = hsv_arr[0];
    document.forms[0].s_input.value = hsv_arr[1];
    document.forms[0].v_input.value = hsv_arr[2];
    rgb_arr[0] = document.forms[0].r_input.value;
    rgb_arr[1] = document.forms[0].g_input.value;
    rgb_arr[2] = document.forms[0].b_input.value;
   }
   // update Hex Textbox
   document.forms[0].cp_hex_input.value = makeHexFromRGB(rgb_arr[0], rgb_arr[1], rgb_arr[2]);
   cp_hex_textbox_has_changed();
  }
  if (main_page == true) {
   make_css_edit_box_text();
  }
 }
}

function checkEmail() {
 var r = true;
 if (trimstr(document.forms[0].elements[0].value) == '') { alert('Please fill in your name.'); r = false; document.forms[0].elements[0].focus(); }
 else if (trimstr(document.forms[0].elements[1].value) == '') { alert('Please fill in your friend\'s name.'); r = false; document.forms[0].elements[1].focus(); }
 else if (trimstr(document.forms[0].elements[2].value) == '') { alert('Please fill in your e-mail address.'); r = false; document.forms[0].elements[2].focus(); }
 else if (trimstr(document.forms[0].elements[3].value) == '') { alert('Please fill in your friend\'s e-mail address.'); r = false; document.forms[0].elements[3].focus(); }
 else if (trimstr(document.forms[0].elements[4].value) == '') { alert('Please fill in a message to send to your friend.'); r = false; document.forms[0].elements[4].focus(); }
 else if (document.forms[0].elements[2].value.indexOf('@') == -1) { alert('Your e-mail address is invalid.'); r = false; document.forms[0].elements[2].focus(); }
 else if (document.forms[0].elements[2].value.indexOf('.') == -1) { alert('Your e-mail address is invalid.'); r = false; document.forms[0].elements[2].focus(); }
 else if (document.forms[0].elements[3].value.indexOf('@') == -1) { alert('Your friend\'s e-mail address is invalid.'); r = false; document.forms[0].elements[3].focus(); }
 else if (document.forms[0].elements[3].value.indexOf('.') == -1) { alert('Your friend\'s e-mail address is invalid.'); r = false; document.forms[0].elements[3].focus(); }
 if (r == true) {
  var old_action = '';
  old_action = document.forms[0].action;
  document.forms[0].action = window.location.href;
  document.forms[0].submit();
  document.forms[0].action = old_action;
 }
 return r;
}

function checkContact() {
 var r = true;
 //if (trimstr(document.forms[0].contact_name.value) == '') { alert('Please fill in your name.'); r = false; document.forms[0].contact_name.focus(); }
 //else if (trimstr(document.forms[0].contact_email.value) == '') { alert('Please fill in your e-mail address.'); r = false; document.forms[0].contact_email.focus(); }
 //else if (document.forms[0].contact_email.value.indexOf('@') == -1) { alert('Your e-mail address is invalid.'); r = false; document.forms[0].contact_email.focus(); }
 //else if (document.forms[0].contact_email.value.indexOf('.') == -1) { alert('Your e-mail address is invalid.'); r = false; document.forms[0].contact_email.focus(); }
 //else if (trimstr(document.forms[0].contact_subject.value) == '') { alert('Please fill in a subject for your e-mail.'); r = false; document.forms[0].contact_subject.focus(); }
 if (trimstr(document.forms[0].contact_message.value) == '') { alert('Please fill in a message for your e-mail.'); r = false; document.forms[0].contact_message.focus(); }
 if (r == true) {
  var old_action = '';
  old_action = document.forms[0].action;
  document.forms[0].action = window.location.href;
  document.forms[0].submit();
  document.forms[0].action = old_action;
 }
 return r;
}

function write_length_units_dropdown(the_id, disabled, selected_number) {
 var tmp = '<select name="' + the_id + '" id="' + the_id + '"';
 if (disabled == true) { tmp += ' disabled="disabled"'; }
 tmp += ' tabindex="1">';
 var selected = new Array(9);
 selected[selected_number] = ' selected="selected"';
 document.writeln(tmp);
 document.writeln('<option value="px"' + selected[0] + '>px</option>');
 document.writeln('<option value="%"' + selected[1] + '>%</option>');
 document.writeln('<option value="em"' + selected[2] + '>em</option>');
 document.writeln('<option value="in"' + selected[3] + '>in</option>');
 document.writeln('<option value="cm"' + selected[4] + '>cm</option>');
 document.writeln('<option value="mm"' + selected[5] + '>mm</option>');
 document.writeln('<option value="pt"' + selected[6] + '>pt</option>');
 document.writeln('<option value="pc"' + selected[7] + '>pc</option>');
 document.writeln('<option value="ex"' + selected[8] + '>ex</option>');
 document.writeln('</select>');
}

// DHTML micro API from http://www.quirksmode.org/js/dhtmloptions.html
function getObj(name) {
 if (document.getElementById) { // For Level 1 DOM (Netscape 6, Explorer 5)
  this.obj = document.getElementById(name);
  this.style = document.getElementById(name).style;
 }
 else if (document.all) { // For IE4 DOM
  this.obj = document.all[name];
  this.style = document.all[name].style;
 }
 else if (document.layers) { // For NS4 DOM
  this.obj = getObjNN4(document,name);
  this.style = this.obj;
 }
}

function getObjNN4(obj,name) {
 var x = obj.layers;
 var foundLayer;
 for (i=0;i<x.length;i++) {
  if (x[i].id == name)
   foundLayer = x[i];
  else if (x[i].layers.length)
   var tmp = getObjNN4(x[i],name);
  if (tmp) foundLayer = tmp;
 }
 return foundLayer;
}

var show_ads_string = '<scr' + 'ipt type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></scr' + 'ipt>';
