function settings(form) {
	form.op.disabled=true;
	$("body").addClass("wait");
	var data=form2ArrayString(form);
	$.ajax({
    url: "index.php?method=settings",
    type: "POST",
    dataType: "text",
		data: data,
    form: form,
    error: function(XMLHttpRequest, textStatus, errorThrown){
      this.form.op.disabled=false;
			$("body").removeClass("wait");
    },
    success: function(result){
			$("body").removeClass("wait");
      this.form.op.disabled=false;
			var div=document.getElementById("admincontainer")
			if (div) {
				div.innerHTML=result;
			}
    }
  });
	return false;
}
function validateNewspapers(form) {
	form.rss_op.disabled=true;
	$("body").addClass("wait");
	var data=form2ArrayString(form);
	$.ajax({
    url: "index.php?method=settings",
    type: "POST",
    dataType: "text",
		data: data,
    form: form,
    error: function(XMLHttpRequest, textStatus, errorThrown){
      this.form.rss_op.disabled=false;
			$("body").removeClass("wait");
    },
    success: function(result){
      this.form.rss_op.disabled=false;
			$("body").removeClass("wait");
			var div=document.getElementById("admincontainer")
			if (div) {
				div.innerHTML=result;
			}
    }
  });
	return false;
}
function signOut() {
	setCookie("logon","false");
	setCookie("PHPSESSID","");
	var div=document.getElementById("admincontainer")
	if (div) {
		$(div).addClass("nodisplay");
	}
	div=document.getElementById("logoncontainer")
	if (div) {
		$(div).removeClass("nodisplay");
	}
	logonInit();
}
function logonInit() {
	if (document.getElementById("username")) {
		document.getElementById("username").value='';
	}
	if (document.getElementById("password")) {
		document.getElementById("password").value='';
	}
  document.getElementById("username").focus();
  setCookie("logon","false");
}
function dm_admin_url(form) {
	if (!form.username.value) {
    alert("Please enter your Username.");
    form.username.focus();
    return false;
  }
	$("body").addClass("wait");
	form.dm_submit.disabled=true;
	$.ajax({
    url: "index.php?method=dm&username="+escape(form.username.value),
    type: "GET",
    dataType: "json",
    form: form,
    error: function(XMLHttpRequest, textStatus, errorThrown){
      this.form.dm_submit.disabled=false;
			$("body").removeClass("wait");
    },
    success: function(result){
      this.form.dm_submit.disabled=false;
			$("body").removeClass("wait");
      if (result.error) {
        alert(result.error);
      }else{
        alert("Your admin url has been sent in a DM to '"+this.form.username.value+"'.\n\nCheck your twitter account or email.");
      }
    }
  });
	return false;
}
function validateLogon(form) {
  if (!form.username.value) {
    alert("Please enter your Username.");
    form.username.focus();
    return false;
  }
  if (!form.password.value) {
    alert("Please enter your Password.");
    form.password.focus();
    return false;
  }
	$("body").addClass("wait");
  form.logon_submit.disabled=true;
  $.ajax({
    url: "index.php?method=logon&username="+escape(form.username.value)+"&password="+escape(form.password.value),
    type: "GET",
    dataType: "json",
    form: form,
    error: function(XMLHttpRequest, textStatus, errorThrown){
      this.form.logon_submit.disabled=false;
			$("body").removeClass("wait");
    },
    success: function(result){
      this.form.logon_submit.disabled=false;
			$("body").removeClass("wait");
      if (result.error) {
        alert(result.error);
      }else{
				setCookie("signed_out","false");
        setCookie("logon","true");
        var div=document.getElementById("logoncontainer");
				if (div) {
					$(div).addClass("nodisplay");
				}
				div=document.getElementById("admincontainer");
				if (div) {
					$(div).removeClass("nodisplay");
				}
				div.innerHTML=result.div;
      }
    }
  });
  return false;
}
function checkValid() {
  if (getCookie("logon") == "false") {
    var div=document.getElementById("admincontainer")
		if (div) {
			$(div).addClass("nodisplay");
		}
		div=document.getElementById("logoncontainer")
		if (div) {
			$(div).removeClass("nodisplay");
		}
		logonInit();
  }
}
function getCookie(c_name) {
  if (document.cookie.length>0)
    {
    c_start=document.cookie.indexOf(c_name + "=");
    if (c_start!=-1)
      { 
      c_start=c_start + c_name.length+1; 
      c_end=document.cookie.indexOf(";",c_start);
      if (c_end==-1) c_end=document.cookie.length;
      return unescape(document.cookie.substring(c_start,c_end));
      } 
    }
  return "";
}
function setCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function newLocation() {
  var link=document.getElementById("change");
  var div=document.getElementById("location_change");
  if (link && div) {
    if (link.innerHTML=="change") {
      $(div).slideDown("normal", function() {
        document.getElementById("postcode").focus();
      });
      link.innerHTML="hide"
    }else{
      $(div).slideUp("normal");
      link.innerHTML="change"
    }
  }
}
function validateLocation(form) {
  if (!form.postcode.value) {
    alert("Please enter a postcode.");
    form.postcode.focus();
    return false;
  }
  var postcode=formatPostcode(form.postcode.value);
  if (postcode) {
    if (!isValidPostcode(postcode)) {
      alert("Invalid postcode.");
      form.postcode.focus();
      return false;
    }
  }else{
    alert("Invalid postcode.");
    form.postcode.focus();
    return false;
  }
	$("body").addClass("wait");
	form.loc_op.disabled=true;
	$.ajax({
    url: "index.php?method=settings",
    type: "POST",
    dataType: "text",
		data: "postcode="+postcode+"&loc_op=change&twitter_id="+form.twitter_id.value,
    form: form,
    error: function(XMLHttpRequest, textStatus, errorThrown){
      this.form.loc_op.disabled=false;
			$("body").removeClass("wait");
    },
    success: function(result){
      this.form.loc_op.disabled=false;
			$("body").removeClass("wait");
			var div=document.getElementById("admincontainer")
			if (div) {
				div.innerHTML=result;
			}
    }
  });
  return false;
}
function formatPostcode(p) {
	if (isValidPostcode(p)) {
		var postcodeRegEx = /(^[A-Z]{1,2}[0-9]{1,2})([0-9][A-Z]{2}$)/i;
		return p.replace(postcodeRegEx,"$1 $2");
	} else {
		return false;
	}
}
function isValidPostcode(test){ //check postcode format is valid
  size = test.length
  test = test.toUpperCase(); //Change to uppercase
  while (test.slice(0,1) == " ") //Strip leading spaces
    {test = test.substr(1,size-1);size = test.length
  }
  while(test.slice(size-1,size)== " ") //Strip trailing spaces
    {test = test.substr(0,size-1);size = test.length
  }
  if (size < 2 || size > 8){ //Code length rule
    return false;
    }
  if (!(isNaN(test.charAt(0)))){ //leftmost character must be alpha character rule
    return false;
  }
  if (size > 5) { //full postcode?
    if (isNaN(test.charAt(size-3))){ //first character of inward code must be numeric rule
      return false;
    }
    if (!(isNaN(test.charAt(size-2)))){ //second character of inward code must be alpha rule
      return false;
    }
    if (!(isNaN(test.charAt(size-1)))){ //third character of inward code must be alpha rule
      return false;
     }
    if (!(test.charAt(size-4) == " ")){//space in position length-3 rule
      return false;
    }
  }
  count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
  if (count1 != count2){//only one space rule
    return false;
  }
  return true;
}

function formObj2String(obj, form) {
	var output="";
  if (obj.name) {
    output += "&"+obj.name + "=";
  }
  switch (obj.type) {
    case "radio":
      if (obj.name) {
        obj = form.elements[obj.name];
        //var radioVal = "value:false,index:-1";
        for (var i = 0; i < obj.length; i++) {
          if (obj[i].checked) {
            radioVal = obj[i].value;
            i = obj.length;
          } 
        }
        output += radioVal;
      } else {
        output += obj.checked;
      }
      break;
    case "checkbox":
      output += obj.checked;
      break;
    case "select-one":
      output += obj.selectedIndex;
      break;
    case "select-multiple":
      output += obj.selectedIndex;
      break;
    case "text":
      output += escape(obj.value);
      break;
    case "textarea":
      output += escape(obj.value);
      break;
    case "password":
      output += escape(obj.value);
      break;
    case "hidden":
      output += escape(obj.value);
      break;
		case "submit":
      output += escape(obj.value);
      break;
    default:
      output += "";
  }
  return output;
}

// Convert a passed form reference to a string formatted like
// a JavaScript array of objects
function form2ArrayString(form) {
  var elem, lastName = "", output="";
  for (var i = 0; i < form.elements.length; i++) {
    elem = form.elements[i];
    if (elem.name && (elem.name != lastName)) {
      output += formObj2String(form.elements[i],form);
      lastName = elem.name;
    }
  }	
  return output.substring(1);
}
