function getWarrants(letter)
{
	$.ajax({   
		type: "POST",
		url: "ajaxFuncs.php",
		data: "ajid=getWarrants&letter="+letter,   
		beforeSend: function(){	
			$("#warrants").hide("fast"); //empty the warrants dv
			$("#loading").show("fast");}, //show loading just when link is clicked   
		complete: function(){ $("#loading").hide("fast");}, //stop showing loading when the process is complete   
		success: function(html){ //so, if data is retrieved, store it in html   
			$("#warrants").show("slow"); //animation   
			$("#warrants").html(html); //show the html inside warrants div 
		}   
	}); //close $.ajax(  
}

function deleteWarrant(wID)
{
	var myID = '#w' + wID;
	$.ajax({   
		type: "POST",
		url: "ajaxFuncs.php",
		data: "ajid=deleteWarrant&id="+wID,   
		beforeSend: function(){	
			var wIDHTML = $("#myID").html();
			$(myID).html('Deleting...');}, //empty the warrants dv
		complete: function(){ $("#loading").hide("fast");}, //stop showing loading when the process is complete   
		success: function(html){ //so, if data is retrieved, store it in html   
			$(myID).html(html); //show the html inside warrants div 
		}   
	}); //close $.ajax(  
}

// prepare the form when the DOM is ready 
$(document).ready(function() { 
    var options = { 
        target:        '#msgbox',    // target element(s) to be updated with server response 
        beforeSubmit:  validate,  // pre-submit callback 
        success:       showResponse, // post-submit callback 
		clearForm: 	   true, 
        // $.ajax options can be used here too, for example: 
        timeout:       3000 
    }; 
 
    // bind to the form's submit event 
    $('#add_warrant_form').submit(function() { 
        $(this).ajaxSubmit(options); 
        return false; 
    }); 
}); 
 
// pre-submit callback 
function validate(formData, jqForm, options) { 
    // formData is an array; here we use $.param to convert it to a string to display it 
    // but the form plugin does this for you automatically when it submits the data 
    for (var i=0; i < formData.length; i++) { 
        if (!formData[i].value) { 
            $('#msgbox').attr('class','messageboxerror').html('Please enter a value for all boxes.').fadeIn(500); 
            return false; 
        } 
    } 
 
    $('#msgbox').attr('class','messagebox').html('Saving.').fadeIn(500);
     
    // here we could return false to prevent the form from being submitted; 
    // returning anything other than false will allow the form submit to continue 
    return true; 
} 
 
// post-submit callback 
function showResponse(responseText, statusText)  { 
 	$('#msgbox').attr('class','messageboxok').fadeTo(3000,1).fadeOut("slow");
} 





//var oXHR

function encodeNameAndValue(sName, sValue) {
    var sParam = encodeURIComponent(sName);
    sParam += "=";
    sParam += encodeURIComponent(sValue);
    return sParam;
}

function createXHR()
{
	if( typeof XMLHttpRequest != "undefined" ) {
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		//var aVersions = [ "MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0"];
		var aVersions = [ "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
		for( var i=0; i < aVersions.length; i++ ) {
			try {
				var oXHR = new ActiveXObject(aVersions[i]);
				return oXHR;
			} catch (oError) {
				//Do nothing
			}
		}
	}
	throw new Error("XMLHttp object could not be created.");
}

function getObj(name)
{
	if (document.getElementById) {
		this.obj = document.getElementById(name);
	} else if (document.all)	{
		this.obj = document.all[name];
	} else if (document.layers) {
		this.obj = document.layers[name];
	}
}

//AJAX
function urlencode(str) 
{
	//escapes everything for PHP
	str = escape(str);
	str = str.replace('+', '%2B');
	str = str.replace('%20', '+');
	str = str.replace('*', '%2A');
	str = str.replace('/', '%2F');
	str = str.replace('@', '%40');
	//alert(str)
	return str;
}

function urldecode(str) 
{
	str = str.replace('+', ' ');
	str = unescape(str);
	return str;
}

//asynchronous calls

//echo '<td class="tblleft" id="t',$key,'">',$value,'</td><td class="tble" id="b',$key,'">
//<input type="button" id="b,',$key,'" value="Edit" onclick="editItem(\'',$key,'\')"></td></tr>';
function editItem(mykey,t)
{
	
	var lock = new getObj('lock');
	
	if( (undefined === t || t == '') && lock.obj.value != '' ) {
		alert('Please finish editing or cancel your current item \nbefore editing another.');
		return;
	}
		
	var tdl = new getObj('l' + mykey);
	var tdr = new getObj('r' + mykey);
	var tdb = new getObj('b' + mykey);
	
	if( t == 'c' ) {
		var ov = new getObj('ov');
		tdl.obj.innerHTML = ov.obj.value;
		lock.obj.value = '';
		return;
	}
	
	if( lock.obj.value == 's' ) {
		var ov = new getObj('ov');
		var newname = new getObj('newname');
		if( newname.obj.value < 1 ) {
			alert('New name must contain letters');
			return;
		}
		oXHR = createXHR()
		if( oXHR == null ) {
			alert('Your browser does not support AJAX!');
		  	return;
		}
		
		var thispage = new getObj('thispage');
		var url = 'ajaxFuncs.php';
		var params = 'ajid=saveItem';
		params += '&p=' + urlencode(thispage.obj.value);
		params += '&v=' + urlencode(newname.obj.value);
		params += '&k=' + mykey;
		
		oXHR.open("POST",url,true);
		oXHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		oXHR.setRequestHeader("Content-length", params.length);
		oXHR.setRequestHeader("Connection", "close");
		oXHR.onreadystatechange = function () {
			if( oXHR.readyState == 4 ) {
				if( oXHR.status == 200 || oXHR.status == 304 ) {
					if( oXHR.responseText == 'expired' ) {
						weHaveExpired();
					} else {
						if( oXHR.responseText == 1 ) {
							tdl.obj.innerHTML = newname.obj.value;
							lock.obj.value = '';
						} else {
							alert('An error has occured.  Please try again later');
							tdl.obj.innerHTML = ov.obj.value;
							lock.obj.value = '';
						}
					}
				} else {
					alert('error oXHR.statusText = ' + oXHR.statusText);
					weHaveTimedOut();
				} 
			}
		};
		oXHR.send(params);
	} else {
		var temp = tdl.obj.innerHTML;
		var ov = temp;
		temp += '<br><div style="border: 1px solid green;background-color:#99ff99;padding:3px;">';
		temp += 'New name: <input type="text" id="newname" name="newname" value="">';
		temp += '&nbsp;<input type="button" id="saveme" value="Save" onclick="editItem(' + mykey + ',\'s\')">';
		temp += '<input type="button" id="can" value="Cancel" onclick="editItem(' + mykey + ',\'c\')">';
		temp += '<input type="hidden" name="ov" id="ov" value="' + ov + '"></div>';
		tdl.obj.innerHTML = temp;
		lock.obj.value = 's';		
	}
}

function deleteItem(mykey,conf)
{
	var lock = new getObj('lock');
	if( conf == '' && lock.obj.value != '' ) {
		alert('Please Delete or Cancel the current recurring signup before deleting another signup');
	} else {
		if( conf == '' ) {
			lock.obj.value = 'C';
			var str = '<div class="ys">Are you sure you want to<br>delete this item?<br><br>';
			str += '<input type="button" value="Delete" onclick="deleteItem(\'' + mykey + '\',\'Y\')">&nbsp;';
			str += '<input type="button" value="Cancel" onclick="deleteItem(\'' + mykey + '\',\'N\')"></div>';
			var tdr = new getObj('r' + mykey);
			tdr.obj.innerHTML = str;
		} else if( conf == 'Y' ) {
			var tdr = new getObj('r' + mykey);
			tdr.obj.innerHTML = '<div class="ys">Processing...</div>';
			delItem(mykey);
		} else {
			var tdr = new getObj('r' + mykey);
			var str = '<input type="button" id="b,' + mykey + '" value="Edit" onclick="editItem(\'' + mykey + '\',\'\')">';
			str += '<input class="actionred" type="button" value="Delete" onclick="deleteItem(\'' + mykey + '\',\'\')">';
			tdr.obj.innerHTML = str;
			lock.obj.value = '';
		}
	}
}

function delItem(mykey)
{
	oXHR = createXHR()
	if( oXHR == null ) {
	  	alert('Your browser does not support AJAX!');
		return;
	}
	
	var thispage = new getObj('thispage');
	var url = 'ajaxFuncs.php';
	var params = 'ajid=deleteItem';
	params += '&itemID=' + mykey;
	params += '&p=' + urlencode(thispage.obj.value);
	oXHR.open("POST",url,true);
	oXHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	oXHR.setRequestHeader("Content-length", params.length);
	oXHR.setRequestHeader("Connection", "close");
	oXHR.onreadystatechange = function () {
		if( oXHR.readyState == 4 ) {
			if( oXHR.status == 200 || oXHR.status == 304 ) {
				if( oXHR.responseText == 'expired' ) {
					weHaveExpired();
				} else {
					var tdr = new getObj('r' + mykey);
					var lock = new getObj('lock');
					
					if( oXHR.responseText == '1' ) {
						tdr.obj.innerHTML = '<div class="rs">Deleted</div>';	
					} else {
						tdr.obj.innerHTML = '<span class="red">ERROR</span><br>' + oXHR.responseText;
					}
										
					lock.obj.value = '';
				}
			} else {
				weHaveTimedOut();
			}
		}
	};
	oXHR.send(params);
}












// fieldname, warningname, remainingname, maxchars
function CheckFieldLength(fn,wn,rn,mc) {
  var len = fn.value.length;
  if (len > mc) {
    fn.value = fn.value.substring(0,mc);
    len = mc;
  }
  document.getElementById(wn).innerHTML = len;
  document.getElementById(rn).innerHTML = mc - len;
}

// table row ID
function shFieldLength(trID) {
  var tr = new getObj(trID);
  tr.obj.style.display == 'none' ? tr.obj.style.display = '' : tr.obj.style.display = 'none';
}

function weHaveExpired()
{
	window.location = 'index.php';
}

function weHaveTimedOut()
{
	var mes = new getObj('messages');
	mes.obj.innerHTML = 'We have timed out';
	mes.obj.style.display = 'block';
	loadingGrfx('off','','');
}

//usage on a tr tag:onmouseover='highlight(this)' onmouseout='unhighlight(this)'
function highlight(obj) {
   obj.style.backgroundColor='#C3C5DF';
   obj.style.cursor='pointer';
}
function unhighlight(obj) {
   obj.style.backgroundColor='';
   obj.style.cursor='default';
}
