function hideDiv(divId)
{
	document.getElementById(divId).style.display='none'
}

function showDiv(divId)
{
	document.getElementById(divId).style.display='block'
}

function toggleDiv(divId) 
{
	var d = document.getElementById(divId).style.display;
	if (d == 'none' || d.length == 0) {
		showDiv(divId);
	} else {
		hideDiv(divId);
	}
}

function toggleUpDownClass(elem, off) {
	if (elem.className.indexOf("up") != -1) {
		if (off == true) {
			elem.className = "down";
		} else {
			elem.className = "down-on";
		}
	} else if (elem.className.indexOf("down") != -1) {
		if (off == true) {
			elem.className = "up";
		} else {
			elem.className = "up-on";
		}
	}
}

function toggleUpDownOn(elem) {
	if (elem.className.indexOf("up") != -1) {
		elem.className = "up-on";
	} else if (elem.className.indexOf("down") != -1) {
		elem.className = "down-on";
	}
}

function toggleUpDownOff(elem) {
	if (elem.className.indexOf("up-on") != -1) {
		elem.className = "up";
	} else if (elem.className.indexOf("down-on") != -1) {
		elem.className = "down";
	}
}

function checkAll(form_id, cbox_name, allbox)
{
	var elems = document[form_id].elements;
	for (i = 0; i < elems.length; i++) {
		if (elems[i].type != "checkbox" ||
			elems[i].name == allbox.name ||
			elems[i].name != cbox_name) {
			continue;
		}
		elems[i].checked = allbox.checked;
	}
}

function hideHelp() 
{ 
  hideDiv('helper_sha1')
  hideDiv('image_magnet_details_fullsize')
  hideDiv('image_right_click_fullsize')
}

var whitespace = " \t\n\r";

function rf_isEmpty(str) 
{ 
	return ((str == null) || (str.length == 0)) 
}

function rf_isDigit(chr) 
{ 
	return ((chr >= "0") && (chr <= "9")) 
}

function rf_isInteger(str) 
{
    var i;
	if (rf_isEmpty(str))
		return false;
	for (i = 0; i < str.length; i++) {
		var chr = str.charAt(i);
		if (!rf_isDigit(chr))
			return false;
	}
	return true;
}

function rf_isWhitespace(str) 
{
    var i;
    if (rf_isEmpty(str))
     return true;
    for (i = 0; i < str.length; i++) {
     var chr = str.charAt(i);
     if (whitespace.indexOf(chr) == -1)
      return false;
    }
    return true;
}

function isEmail(field) 
{
    var str = field.value
    //needs to have @,. and no spaces.
    if (str.indexOf ('@',0) == -1 || 
        str.indexOf ('.',0) == -1 ||
        str.indexOf (' ',0) != -1) {
        highlightField(field)
        return false
    } else {
        unhighlightField(field)
        return true      
    }
}

/** 
 * Changes the value of result to false if the field
 * is empty, if empty it will also highlight the field
 * if not, it makes sure the field has no highlithing
 * input-> field:  form field
 *         result: boolean
 *
 * output ->  result: boolean 
 */
function checkEmptyField(field,result) 
{
  if (field.value == "") {
    result = false
    highlightField(field)
  } else {
    unhighlightField(field)
  }
  return result
}

//makes the field have a red border
function highlightField(field) 
{
	//TODO: make this with css classes instead.
    field.style.borderColor = "red"
    field.style.borderStyle = "solid"
}

//removes any border or coloring from the field
function unhighlightField(field) 
{
  field.style.borderStyle = "inset"
  field.style.borderColor = "black"  
}

/**
 * Validates the pre signup form
 */
function validatePreSignup() 
{
  f = document.forms['preSignup']
    result = true
    result = checkEmptyField(f.fname,result)
    result = checkEmptyField(f.lname,result)
    result = checkEmptyField(f.email,result)

    if (!isEmail(f.email)) {
      result = false
    }

    result = checkEmptyField(f.password,result)
    result = checkEmptyField(f.password2,result)

    if (f.password.value != '' &&
        f.password2.value != '' && 
        !(f.password.value == f.password2.value)) {
      highlightField(f.password2);
      highlightField(f.password);
      result = false;
    }

  return result
}


/** 
 * Validates the owner form
 */
function validateOwnerForm() 
{
  f = document.forms['owner_form']
  result = true
  result = checkEmptyField(f.name,result)
  result = checkEmptyField(f.email,result)

  if (!isEmail(f.email)) {
    result = false
  }

  return result
}


/**
 * Validates the file registration form
 */
function validateFileForm() 
{
    f = document.forms['file_form']    
    result = true;

    result = checkEmptyField(f.fname,result)

    result = checkEmptyField(f.fsize,result)

    if (!rf_isInteger(f.fsize.value)) {
        highlightField(f.fsize)
        result = false
    }

    result = checkEmptyField(f.sha1,result)

    if (f.sha1.value.length != 32) {
        highlightField(f.sha1)
        result = false
    }

    return result;
}

function validateFileFormCheckboxes() {
    var f = document.forms['file_form'];
    var error_msg = 'Please check the agreement boxes at left to continue ' + 
    		'with registration.';
    
    if (!f.confirm_indemnify.checked) {
        alert(error_msg);
        f.confirm_indemnify.focus();
        return false;
    }

    if (!f.confirm_not_authorized_work.checked) {
        alert(error_msg);
        f.confirm_not_authorized_work.focus();
        return false;
    }

    if (!f.confirm_accuracy.checked) {
        alert(error_msg);
        f.confirm_accuracy.focus();
        return false;
    }

    return true;
}
