/*------ background color picker ------*/
var timeout	= 500;
var closetimer	= 0;
var ddmenuitem	= 0;

// open hidden layer
function mopen(id) {
  // cancel close timer
  mcancelclosetime();

  // close old layer
  if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

  // get new layer and show it
  ddmenuitem = document.getElementById(id);
  ddmenuitem.style.visibility = 'visible';

}
// close showed layer
function mclose() {
  if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}

// go close timer
function mclosetime() {
  closetimer = window.setTimeout(mclose, timeout);
}

// cancel close timer
function mcancelclosetime() {
  if(closetimer)
  {
    window.clearTimeout(closetimer);
    closetimer = null;
  }
}

// close layer when click-out
document.onclick = mclose;

/*--code language settings change------*/
function lang_sel_change(lang) {
  var str = get_cookie("codee_langs");
  if (str) {
    var langs = [lang];
    var olds = str.split(' ');
    for(var i=0; i<olds.length; i++) {
      if (olds[i] != lang && langs.length < 5)
        langs.push(olds[i]);
    }
    set_cookie("codee_langs", langs.join(" "));
  } else {
    set_cookie("codee_langs", lang);
  }
  $("#raw_text").focus();
}

function change_lang(lang) {
  $("#code_lang").val(lang);
  lang_sel_change(lang);
}

function show_langs() {
  var ele = document.getElementById('langs');
  var str = get_cookie('codee_langs');
  if (!str || !ele) return;
  var langs = str.split(' ');
  for (var i=0; i<langs.length; i++) {
    var a = document.createElement('span');
    ele.appendChild(a); //append first for security issue
    a.innerHTML = '<a href="#" class="lang_sel_link" onclick="change_lang(\'' + langs[i] + '\'); return false;">' + langs[i] + '</a> ';
  }
  if (langs.length > 0) {
    document.getElementById('code_lang').value = langs[0];
  }
}

function toggle_new_code_options() {
  $("#new_code_options p").toggle();
  $("#nosavediv").toggle();
}

function getCaretPos(ctrl) {
	var caretPos = 0;
	if (document.selection) {//IE
    var range = document.selection.createRange();
    var stored_range = range.duplicate();
    stored_range.moveToElementText( ctrl );
    stored_range.setEndPoint( 'EndToEnd', range );
    ctrl.selectionStart = stored_range.text.length - range.text.length;
    ctrl.selectionEnd = ctrl.selectionStart + range.text.length;
    caretPos = ctrl.selectionStart;
	} else if (ctrl.selectionStart || ctrl.selectionStart == '0')//FF
		caretPos = ctrl.selectionStart;
	return (caretPos);
}

function getCurrentLineBlanks(obj) {
  var pos = getCaretPos(obj);
  var str = obj.value;
  var i = pos-1;
  while(i>=0){if(str.charAt(i) == '\n') break;i--;}
  i++;
  var blanks = "";
  while(i<str.length){var c=str.charAt(i);if(c==' '||c=='\t') blanks += c;else break;i++;}
  return blanks;
}
function set_tab_indent_for_textareas() {
  $("textarea").each(function() {
    $(this).keydown(function(eve){
      if (eve.target != this) return;
      if (eve.keyCode == 13)
        last_blanks = getCurrentLineBlanks(this);
    }).keyup(function(eve){
      if (eve.target == this && eve.keyCode == 13)
          insertAtCursor(this, last_blanks);
    });
  });
}

