
function contacts (serial, callback) {
	var owner = DOM.owner;
	var OBJ = DOM.active;
	
	if(!callback) {
		callback = show_my_contacts;
	}	
	
	if(!serial) {
		serial = DOM.user_serial;
	}

	try { var XObj = new XMLHttpRequest(); }
	catch(e) { var XObj = new ActiveXObject(Microsoft.XMLHTTP); }
	
	XObj.onreadystatechange = function () {
		if(XObj.readyState == 4) {
			var xml = XObj.responseXML;
			callback(xml, OBJ.contacts, owner, serial);
		}
	}
	XObj.open('POST','php/contacts.php?serial='+serial,true);
	XObj.send(null);
}

// Owner contact display functions
function show_my_contacts (xml, contacts, owner, serial) {
	var array = xml_to_array(xml);
	var contact_array = array['contact_array'];
	DOM.contacts = contact_array;
	
	if(!xml || contact_array.length<1) {
		var contact = new Contact_Widget();
		contact.new_account('contact_holder');
	}
	else {
		contacts = contact_array;
		var contact = new Contact_Widget(contacts, owner, serial);
		contact.show_all('contact_holder');
	}
}

function show_all_contacts() {
	var owner = true;
	var serial = DOM.user_serial;
	var contacts = DOM.contacts;
	
	var contact = new Contact_Widget(contacts, owner, serial);
	contact.show_all('contact_holder');

}

function show_jobs_contacts() {
	var owner = true;
	var serial = DOM.user_serial;
	var contacts = DOM.contacts;
	
	var contact = new Contact_Widget(contacts, owner, serial);
	contact.show_jobs('contact_holder');

}

function show_winks_contacts() {
	var owner = true;
	var serial = DOM.user_serial;
	var contacts = DOM.contacts;
	
	var contact = new Contact_Widget(contacts, owner, serial);
	contact.show_winks('contact_holder');

}

function show_valid_contacts() {
	var owner = true;
	var serial = DOM.user_serial;
	var contacts = DOM.contacts;
	
	var contact = new Contact_Widget(contacts, owner, serial);
	contact.show_valid('contact_holder');

}
function guest_contacts (serial) {
	var owner = DOM.owner;
	var OBJ = DOM.active;
	if(!serial) {
		serial = DOM.user_serial;
	}
	
	if(OBJ.available == '0') {
		return false;
	}
	
	try { var XObj = new XMLHttpRequest(); }
	catch(e) { var XObj = new ActiveXObject(Microsoft.XMLHTTP); }
	
	XObj.onreadystatechange = function () {
		if(XObj.readyState == 4) {
			var xml = XObj.responseXML;
			var array = xml_to_array(xml);
			var contact_array = array['contact_array'];
			
			DOM.contacts = contact_array;
			if(OBJ.user_serial != serial) {
				var in_my_contacts = check_for_contact(contact_array, OBJ.user_serial);
				var in_contacts = check_for_contact(OBJ.contacts, serial);
				var winked = check_for_valid(OBJ.contacts, serial);

				if(!DOM.jobs) {
					var contact = new Contact_Widget(OBJ.contacts, owner, DOM.active.user_serial, in_my_contacts, in_contacts, winked);
					contact.guest_contact('contact_holder');
				} else {
					var available_posts = available_job_posts(DOM.jobs, OBJ.contacts);
					var contact = new Contact_Widget(OBJ.contacts, owner, DOM.active.user_serial, in_my_contacts, false, true, available_posts);
					contact.guest_contact('contact_holder');
				}
			}
		}
	}
	XObj.open('POST','php/contacts.php?serial='+serial+'&type='+'',true);
	XObj.send(null);

}

function available_job_posts(jobs, contacts) {
	var y = 0;
	for(var i=0;i<jobs.length;i++) {
	  	for(var x=0;x<contacts.length;x++) {
			if(jobs[i]) {
				if(contacts[x].job_id == jobs[i].job_id && contacts[x].serial == DOM.user_serial) {
					jobs.splice(i,1);
				}
			}
	  	}
	}
	return jobs;
}

function check_for_contact (array, match_key) {
	var match = false;
	var x = 0;
	for(x = 0; x<array.length; x++) {
		if(array[x].serial == match_key && array[x].valid >= 1) {
			match = true;
		}
	}
	return match;
}

function check_for_valid (array, match_key, jobs) {
	var valid = false;
	var x = 0;
	for(x = 0; x<array.length; x++) {
		if(array[x].serial == match_key && array[x].valid == 0) {
			valid = true;
		}
	}
	return valid;
}

function save_contact(sender_serial, type) {
	var serial = DOM.user_serial;
	if(!serial) {
		alert('You must be logged in to save a contact.');
		return false;
	}
	
	var length = DOM.contacts.length-1;
	
	try { var XObj = new XMLHttpRequest(); }
	catch(e) { var XObj = new ActiveXObject(Microsoft.XMLHTTP); }
	
	XObj.onreadystatechange = function () {
		if(XObj.readyState == 4) {
				guest_contacts(serial);
		}
	}
	
	XObj.open('POST','php/add_contact.php?serial='+serial+'&sender='+sender_serial+'&type='+type, true);
	XObj.send(null);
}

function wink_contact(sender_serial, type) {
	var serial = DOM.user_serial;
	if(!serial) {
		alert('You must be logged in to wink at somebody.');
		return false;
	}
	
	var length = DOM.active.contacts.length-1;
	
	try { var XObj = new XMLHttpRequest(); }
	catch(e) { var XObj = new ActiveXObject(Microsoft.XMLHTTP); }
	
	XObj.onreadystatechange = function () {
		if(XObj.readyState == 4) {
		
			var call = function (xml) {
				var array = xml_to_array(xml);
				var contact_array = array['contact_array'];
				DOM.active.contacts = contact_array;
				if(DOM.user_serial && DOM.user_serial != 'undefined') {
					guest_contacts(DOM.user_serial);
				}
			}
			contacts(sender_serial, call);
		}
	}
	
	XObj.open('POST','php/add_contact.php?serial='+sender_serial+'&sender='+serial+'&type='+type, true);
	XObj.send(null);
}

function validate_contact(sender_serial, type) {
	var serial = DOM.user_serial;
	
	try { var XObj = new XMLHttpRequest(); }
	catch(e) { var XObj = new ActiveXObject(Microsoft.XMLHTTP); }
	
	XObj.onreadystatechange = function () {
		if(XObj.readyState == 4) {
			contacts(serial);
		}
	}
	
	XObj.open('POST','../php/add_contact.php?serial='+serial+'&sender='+sender_serial+'&type='+type, true);
	XObj.send(null);
}

function contact_message() {
		var in_my_contacts = check_for_contact(DOM.contacts, DOM.active.user_serial);
		var in_contacts = check_for_contact(DOM.active.contacts, DOM.user_serial);	
		var contact = new Contact_Widget(DOM.active.contacts, DOM.owner, DOM.active.user_serial, in_my_contacts, in_contacts, true);
		contact.contact_message('contact_holder');
}

function guest_post_job(serial) {
		var in_my_contacts = check_for_contact(DOM.contacts, DOM.active.user_serial);
		var in_contacts = check_for_contact(DOM.active.contacts, DOM.user_serial);
		
		var available_posts = available_job_posts(DOM.jobs, DOM.active.contacts);
		var contact = new Contact_Widget(DOM.active.contacts, DOM.owner, DOM.active.user_serial, in_my_contacts, false, true, available_posts);
		contact.post_job('contact_holder');
}


function input_job_post(serial) {
	var sender_serial = DOM.user_serial;
	
	var job_id = _get('job_post_select').value;
	
	try { var XObj = new XMLHttpRequest(); }
	catch(e) { var XObj = new ActiveXObject(Microsoft.XMLHTTP); }
	
	XObj.onreadystatechange = function () {
		if(XObj.readyState == 4) {
			var call = function (xml) {
				var array = xml_to_array(xml);
				var contact_array = array['contact_array'];
				DOM.active.contacts = contact_array;
				
				if(DOM.user_serial && DOM.user_serial != 'undefined') {
					guest_contacts(DOM.user_serial);
				}
			}
			contacts(serial, call);
		}
	}
	
	XObj.open('POST','php/job_contact.php?serial='+serial+'&sender='+sender_serial+'&job_id='+job_id, true);
	XObj.send(null);
}

function input_contact_message(sender_serial, type) {
	var serial = DOM.user_serial;
	
	var data = _get('message_text').value;
	if(!data) {
		var empty = confirm('Are you sure you want to send without a message?');
		if(!empty) {
			return false;
		}
		data = "No Message.";
	}
	
	try { var XObj = new XMLHttpRequest(); }
	catch(e) { var XObj = new ActiveXObject(Microsoft.XMLHTTP); }
	
	XObj.onreadystatechange = function () {
		if(XObj.readyState == 4) {
			var in_my_contacts = check_for_contact(DOM.contacts, DOM.active.user_serial);
			var in_contacts = check_for_contact(DOM.active.contacts, DOM.user_serial);	
			var contact = new Contact_Widget(DOM.active.contacts, DOM.owner, DOM.active.user_serial, in_my_contacts, in_contacts, true);
			contact.guest_contact('contact_holder');
		}
	}
	
	XObj.open('POST','php/message_contact.php?serial='+sender_serial+'&sender='+serial+'&type='+type+"&data="+data, true);
	XObj.send(null);
}