var proxyRequest;
function editSite(userName, siteUrl){
	var newUrl = prompt("Change the url of the site '" + siteUrl + "' to:", siteUrl);
	if(newUrl != null && newUrl != siteUrl){
		var formObject = document.getElementById("userops" + userName);
		formObject.elements["axn"].value="EditSite";
		formObject.elements["url"].value = siteUrl;
		formObject.elements["newurl"].value = newUrl;
		formObject.submit();
	}
	return false;
}
function confirmDelete(userName, siteUrl){
	if(confirm("Do you want to Delete'" + siteUrl + "' permanently?")){
		var formObject = document.getElementById("userops" + userName);
		formObject.elements["axn"].value="DeleteSite";
		formObject.elements["url"].value = siteUrl;
		formObject.submit();
	}
	return false;
}
var urlPattern = /^(((http(s?))|(ftp))\:\/\/)(www.|[a-zA-Z].)?[a-zA-Z0-9\-\.]+\.?(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk|us|in)?(\:[0-9]+)*(\/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*\/$/;
var ipPattern = /^(((http(s?))|(ftp))\:\/\/)((\d{1,3})\.){3}(\d{1,3})(\:[0-9]+)*(\/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*\/$/;

var regex = new RegExp(urlPattern);
var ipRegex = new RegExp(ipPattern);
function addSite(formObject){
	var newSiteUrl = formObject.elements["newsiteurl"].value;
	if(!regex.test(newSiteUrl)){
		//try IP based regular expression now
		if(!ipRegex(newSiteUrl)){
			alert("Please enter a valid url.  Note that all URLs must end with a '/'.\nYou entered '" + newSiteUrl + "'");
			return false;
		}
	}
	formObject.submit();
	return false;
}
function doEdit(formName){
	var formObject = document.getElementById(formName);
	alert("Editing site - " + formObject.elements["siteurl"].value);
	return false;
}
function validateLogin(formName){
	var formObject = document.getElementById(formName);
	if(formObject.elements["username"].value == ""){
		alert("Please enter a valid username.");
		return false;
	}
	if(formObject.elements["password"].value.length < 6){
		alert("Password should be atleast 6 characters long.");
		return false;
	}
	return true;
}
function deleteUser(userName){
	if(confirm("Do you really want to delete the user '" + userName + "'")){
		var formObject = document.getElementById("userops" + userName);
		formObject.elements["axn"].value="DeleteUser";
		formObject.submit();			
	}
	return false;
}
function changePassword(userName){
	var newPassword = prompt("Enter the new password for the user '" + userName + "'");
	if(newPassword != null){
		var formObject = document.getElementById("userops" + userName);
		formObject.elements["axn"].value="ChangePassword";
		formObject.elements["newpassword"].value = newPassword;
		formObject.submit();
	}
	return false;
}
function isProxyInstalled(siteUrl){
	var proxyCheckUrl = "ltc?axn=CheckProxy&site="+escape(siteUrl);
	if(proxyRequest == null){
		try {
			proxyRequest = new XMLHttpRequest();
		}
		catch (error) {
			try {
				proxyRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (error) {
				//This is an error situation
				//however end client should not see the messages
				//but we need messages for debugging - hence debug
				if(debug)
					displayDebugError("Error creating AJAX request:\n", error);
					return false;
			}
		}
	}
	try {
		proxyRequest.open("GET", proxyCheckUrl, false);
		proxyRequest.send(null);
		if (proxyRequest.status != 200) {
			alert("Proxy is not installed on your site '" + siteUrl + "' properly.");
		}
		else{
			alert("Proxy is installation on your site '" + siteUrl + "' succeeded.\nYou can proceed to the next step of updating your pages with javascript code.");
		}
	}
	catch (error) {
		if(debug)
			displayDebugError("Error communicating with Live Tracker Server:\n", error);
	}
	return false;
}
function displayDebugError(prefix, error){
	var r = prefix;
	for (var p in error)
		r += p + ": " + error[p] + "\n";
	alert(r);
}
function isSiteReadyForLT(siteUrl){
	var siteReadyUrl = "ltc?axn=CheckSite&site="+escape(siteUrl);
	if(proxyRequest == null){
		try {
			proxyRequest = new XMLHttpRequest();
		}
		catch (error) {
			try {
				proxyRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (error) {
				//This is an error situation
				//however end client should not see the messages
				//but we need messages for debugging - hence debug
				if(debug)
					displayDebugError("Error creating AJAX request:\n", error);
					return false;
			}
		}
	}
	try {
		proxyRequest.open("GET", siteReadyUrl, false);
		proxyRequest.send(null);
		if (proxyRequest.status != 200) {
			alert("Code changes to the site '" + siteUrl + "' are not proper.");
		}
		else{
			alert("Code changes to the site '" + siteUrl + "' have succeeded.\nYou can now 'live-track' all the pages that you marked for live tracker.");
		}
	}
	catch (error) {
		if(debug)
			displayDebugError("Error communicating with Live Tracker Server:\n", error);
	}
	return false;
}
function forgotPassword(){
	var formObject = document.getElementById('login');
	var userName = formObject.elements["username"].value;
	if(!isValidEmail(userName)){
		alert("Please enter your email id.");
		return false;
	}
	var forgotRequest;
	try {
		forgotRequest = new XMLHttpRequest();
	}
	catch (error) {
		try {
			forgotRequest = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (error) {
			//This is an error situation
			//however end client should not see the messages
			//but we need messages for debugging - hence debug
			if(debug)
				displayDebugError("Error creating AJAX request:\n", error);
				return false;
		}
	}
	try {
		forgotRequest.open("GET", "ltc?axn=ForgotPassword&username=" + userName, false);
		forgotRequest.send(null);
		if (forgotRequest.status == 412) {
			alert("User account with email id '" + userName + "' does not exist in Live Tracker.");
		}
		else if (forgotRequest.status != 200) {
			alert("Unable to process your request.  Please try after some time.");
		}
		else{
			alert("An email with your password has been sent to " + userName);
		}
	}
	catch (error) {
		displayDebugError("Error communicating with Live Tracker Server:\n", error);
	}
	return false;
}