function toggleAddRemoveTags(id) {
	if (document.getElementById('content_'+id).style.display=='none') {
		document.getElementById('content_'+id).style.display='block';
		document.getElementById('edittags_'+id).style.display='none';
	} else {
		document.getElementById('content_'+id).style.display='none';
		document.getElementById('edittags_'+id).style.display='block';
	}
}

var feedback_requester = null;

function startFeedbackSubmit(question_index) {
  var feedback = document.getElementById("betaquestiontext").value;
  document.getElementById("betaquestion").innerHTML="Submitting your feedback...";
  try {
    feedback_requester = new XMLHttpRequest();
  } catch (error) {
    try {
      feedback_requester = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (error) {
      return false;
    }
  }
  feedback_requester.open("GET","/beta_question_submit_xml.php?question_index=" + question_index + "&feedback=" + feedback);
  feedback_requester.send(null);
  feedback_requester.onreadystatechange = finishFeedbackSubmit;
}

function finishFeedbackSubmit() {
  if (feedback_requester.readyState == 4) {
    if (feedback_requester.status == 200) {
      var node = feedback_requester.responseXML.getElementsByTagName("value")[0];
      var textNode = node.childNodes[0];
      document.getElementById("betaquestion").innerHTML=textNode.nodeValue + "<br><div id='countdown'>This window will close in 3 seconds</div>";
    } else {
      document.getElementById("betaquestion").innerHTML="HTTP error when submitting feedback<br><div id='countdown'>This window will close in 3 seconds</div>";
    }
    feedbackCountdown(3);
  }
  return true;
}

function feedbackCountdown(seconds_left) {
  if (seconds_left < 1) {
    parent.GB_hide();
  } else {
    document.getElementById("countdown").innerHTML = "This window will close in " + seconds_left + " seconds.";
    setTimeout("feedbackCountdown(" + (seconds_left - 1) + ")",1000);
  }
}

function onDefaultChange(e)
{
    var target = e.target()
    if ( e.type() == 'focus' ) {
        removeElementClass(target, 'defaultValue');

        if ( target.value == target.__defaultValue ) {
            target.value = ''; 
        }
    } else if (  target.value == '' || 
               target.value == target.__defaultValue ) {
        target.value = target.__defaultValue;
        addElementClass(target, 'defaultValue');
    }
}

function setDefaultValue(element, value)
{
    element = $(element);
    if ( element ) {
        if ( element.value == element.__defaultValue ) {
            element.value = '';
        }

        element.__defaultValue = value;

        connect(element, 'onchange', onDefaultChange);
        connect(element, 'onfocus', onDefaultChange);
        connect(element, 'onblur', onDefaultChange);

        if (  element.value == '' || 
              element.value == element.__defaultValue ) {

            log('default', element.value);

            element.value = element.__defaultValue;
            addElementClass(element, 'defaultValue');
        }
    }
}

function onDefaultPasswordChange(e)
{
    var element = e.target();
    if (  element.value == '' || 
          element.value == element.__defaultValue ) {
        element.type = 'text';
    } else {
        element.type = 'password';
    }
}

function setPasswordValue(element, value)
{
    element = $(element);
    element.type = 'text';
    setDefaultValue(element, value);
    connect(element, 'onchange', onDefaultPasswordChange);
    connect(element, 'onkeypress', onDefaultPasswordChange);

    if (  element.value == '' || 
          element.value == element.__defaultValue ) {
        element.type = 'text';
    } else {
        element.type = 'password';
    }
}

var card_flipped = false;

function cardFlip(subject)
{
    card_flip_last = subject;
    if (document.getElementById('CardBack_'+subject).style.display != 'block') {
        document.getElementById('CardFront_'+subject).style.display = 'none';
        document.getElementById('CardBack_'+subject).parentNode.className = 'CardContentFadeBack';
        document.getElementById('CardBack_'+subject).style.display = 'block';
        card_flipped = true;
    } else {
        document.getElementById('CardFront_'+subject).style.display = 'block';
        document.getElementById('CardBack_'+subject).parentNode.className = 'CardContentFade';
        document.getElementById('CardBack_'+subject).style.display = 'none';
        card_flipped = false;
	}
}

function showCardBack(subject) {
    card_flip_last = subject;
    
    if ( $('CardBack_'+subject).style.display != 'block' ) {
        showElement('CardBack_'+subject);
        hideElement('CardFront_'+subject);
        card_flipped = true;
    }
}

function showCardFront(subject) {
    card_flip_last = subject;
    
    if ( $('CardFront_'+subject).style.display != 'block' ) {
        showElement('CardFront_'+subject);
        hideElement('CardBack_'+subject);
        card_flipped = false;
    }
}

var contentDiv = null;
function showGallery(keyword_id, page, max) {
  if (contentDiv == null) {
    if (document.getElementById('contentColumnLR') != null) {
      contentDiv = document.getElementById('contentColumnLR');
    } else if (document.getElementById('contentColumnR') != null) {
      contentDiv = document.getElementById('contentColumnR');
    } else if (document.getElementById('contentColumnL') != null) {
      contentDiv = document.getElementById('contentColumnL');
    } else if (document.getElementById('contentColumn') != null) {
      contentDiv = document.getElementById('contentColumn');
    }
  }
  
  if (true) {
    if (document.getElementById('TempContent') == null) {
      tempContent = document.createElement('div');
      tempContent.setAttribute('id','TempContent');
      tempContent.style.display = 'none';
      tempContent.innerHTML = contentDiv.innerHTML;
      document.getElementById('contentWrap').appendChild(tempContent);
      
      url = '/_/widget/image_gallery?keyword_id=' + keyword_id;
      var d = doSimpleXMLHttpRequest(url);
      d.addCallback(function(req) {
        contentDiv.innerHTML = req.responseText;
      });
    } else {
      tempContent = document.getElementById('TempContent')
      contentDiv.innerHTML = tempContent.innerHTML;
      document.getElementById('contentWrap').removeChild(tempContent);
    }
  }
}

function eventFlash(message) {
    $('flash').style.color = "#339900";
    $('flash').style.background_color = "#CCFFCC";
    $('flash').style.border = "0px solid #339000";
    $('flash').innerHTML = '<div class="message"><a style="float:right; display:block;" href="." onclick="clearFlash(); return false;">X</a>' + message + '</div>';
}

function noticeFlash(message) {
    $('flash').style.color = "#523B09";
    $('flash').style.background_color = "#FFFFC5";
    $('flash').style.border = "0px solid #F9D78E";
    $('flash').innerHTML = '<div class="notice"><a style="float:right; display:block;" href="." onclick="clearFlash(); return false;">X</a>' + message + '</div>';
}

function errorFlash(message) {
    $('flash').style.color = "#990000";
    $('flash').style.background_color = "#FFCCCC";
    $('flash').style.border = "0px solid #990000";
    $('flash').innerHTML = '<div class="error"><a style="float:right; display:block;" href="." onclick="clearFlash(); return false;">X</a>' + message + '</div>';
}

function clearFlash() {
    $('flash').innerHTML = '';
}

function getGalleryPage(keyword_id, page, max, alturl) {
    var url = alturl;
    if(!url) url = "/mozes_edit_keyword/image_gallery";
    url = url+"&keyword_id="+keyword_id+"&page="+page+"&max="+max;
    var d = doSimpleXMLHttpRequest(url);
    var loading = $("image_gallery_loading");
    var target = $("image_gallery");
    loading.innerHTML = "Loading...";

    d.addCallback(function(req) { target.innerHTML = req.responseText });
    d.addErrback(function(req) { target.innerHTML = "Error loading image gallery"; });
}

function gallerySelect(url, width, height) {
    //preview_changed=true; 
    var preview_image = $('preview_image');
    if ( preview_image ) {
        preview_image.src = url;
        $("image_url").value = url;

        if(width>100) {
            aspect = height/width;
            width = 100;
            height = width*aspect
        }

        if(height<100) {
            padding = Math.round((100 - height) / 2);
        } else {
            padding = 0;
        }

        preview_image.style.paddingTop = padding + 'px';
        preview_image.width = width;
        preview_image.height = height;
    }
}

function setOpacity(element, value)
{
    var element = $(element);
	element.style.opacity = value;
	element.style.filter = 'alpha(opacity=' + value * 100 + ')';
}

/*
function fadeOut(element, delay) {
    if ( element._fadeOutTimer ) {
        clearTimeout(element._fadeOutTimer);
    }
    
    element._fadeOutOpacity = 100;
    var t = setTimeout(
        function () { 
            element._fadeOutTimer = setTimeout('setOpacity("' + element.id + '", ' + o + ')', 50 * i);
    		
    		setTimeout(function () { hideElement(element); setOpacity(element, 1); }, 50 * 10);
         },
        delay
    );
    
    element._fadeOutTimer = t;

}
*/

function setFieldStatus(element, icon, status_message, fieldType) {
    var element = $(element);

    if ( !element._icon_element && icon && (element.nodeName == 'TEXTAREA' ||
        (element.nodeName == 'INPUT' && element.type == 'text'))) {
        // Make room for the icon
        //var s = elementDimensions(element);
        //s.w = s.w - 17;
        //setElementDimensions(element, s);        
        //element.style.marginRight = '-20px';

        element._icon_element = DIV({ 'style' : 'position: absolute; width: 20px; opacity: 50%' });
        insertSiblingNodesAfter(element, element._icon_element);
    }
    
    if ( fieldType ) {
        fieldBox = 'field'+fieldType+'Box';
    } else {
        fieldBox = 'fieldErrorBox';
    }
    if ( !element._message_element && status_message ) {
        element._message_element = DIV({'id' : element.id + '_status_message', 'style' : 'position: absolute', 'class' : fieldBox})
        insertSiblingNodesAfter(element, element._message_element);
    } else if ( status_message ) {
        element._message_element.className = fieldBox;
    }
    
    if ( status_message ) {
        var p = elementPosition(element);
        var s = elementDimensions(element);
        p.y += s.h;
        
        setElementPosition(element._message_element, p);
        element._message_element.innerHTML = status_message;
        showElement(element._message_element);
        
        //fadeOut(message_element, 2000);
        if ( element._fadeOutTimer ) {
            clearTimeout(element._fadeOutTimer);
        }
        element._fadeOutTimer = setTimeout(function () { hideElement(element._message_element); }, 3000);
    } else {
        hideElement(element._message_element);
    }
    
    if ( icon && element._icon_element ) {
        var p = elementPosition(element);
        var s = elementDimensions(element);
        p.x += s.w - 19;
        
        setElementPosition(element._icon_element, p);
        element._icon_element.innerHTML = '<img src="' + icon + '">';
        showElement(element._icon_element);
    } else {
        hideElement(element._icon_element);
    }   
}

function setFieldError(element, error) {
    var element = $(element);
    clearFieldStatus(element);
    addElementClass(element, 'error');
    setFieldStatus(element, '/_images/error_icon.gif', error);
}

function setFieldWarning(element, error) {
    var element = $(element);
    clearFieldStatus(element);
    addElementClass(element, 'warning');
    setFieldStatus(element, '/_images/warning_icon.gif', error, 'Warning');
}

function setFieldValid(element) {
    var element = $(element);
    clearFieldStatus(element);
    addElementClass(element, 'valid');
    setFieldStatus(element, '/_images/valid_icon.gif', null);
}

function clearFieldStatus(element) {
    var element = $(element);
    removeElementClass(element, 'error');
    removeElementClass(element, 'warning'); 
    removeElementClass(element, 'valid'); 
    setFieldStatus(element, null, null);    
}
 
function inlineValidate(element, regexp, error_message) {
    var element = $(element);
    
    if ( element.value != element.__defaultValue &&
         element.value.match(regexp)) {
        setFieldValid(element);
    } else {
        setFieldError(element, error_message);
    }
}

function addFieldValidator(element, regexp, error_message) {
    var element = $(element);
    
    var onchange = function (e) {
        if ( e.target().value != e.target().__defaultValue &&
             e.target().value.match(regexp)) {
            setFieldValid(e.target());
        } else {
            setFieldError(e.target(), error_message);
        }
    }
    
    connect(element, 'onchange', onchange);
    connect(element, 'onkeyup',  onchange);    
}

function trim(stringToTrim) {
    return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
    return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
    return stringToTrim.replace(/\s+$/,"");
}
function ucwords(stringToUcfirst) {
    return ucwords_recursive(stringToUcfirst,true);
}
function ucwords_recursive(stringToUcfirst, isSpaceBefore) {
    var chr = stringToUcfirst.charAt(0);
    if (isSpaceBefore) {
        chr = chr.toUpperCase();
    } else {
        chr = chr.toLowerCase();
    }
    if (parseInt(stringToUcfirst.length)==1) {
        return chr;
    } else if (chr == ' ') {
        return chr + ucwords_recursive(stringToUcfirst.slice(1),true);
    } else {
        return chr + ucwords_recursive(stringToUcfirst.slice(1),false);
    }
}

function cleanForSMS(stringToEscape) {
    stringToEscape = stringToEscape.replace(/\[/,"(");
    stringToEscape = stringToEscape.replace(/\]/,")");
    stringToEscape = stringToEscape.replace(/\\/,"/");
    return stringToEscape.replace(/[^- !"#\$%&'\(\)\*\+,-\.\/0-9:;<=>\?\@A-Z_a-z\r\n]/,"");
}

function getCheckedValueForRadio(obj) {
  // example usage: getCheckedValueForRadio(document.forms[0].elements['myRadioGroup']);
  if (!obj) return "";
  if (obj.length == undefined) {
    if (obj.checked) return obj.value;
    return "";
  }
  for (var i = 0; i < obj.length; i++) {
    if (obj[i].checked) return obj[i].value;
  }
  return "";
}
