uid = 0;
var track_changes = false;
var track_form = '';
function createCookie(name, value, days) { if(days > 0) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else expires = ""; document.cookie = name+"="+value+expires+"; path=/"; }
function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; }

function formLoaded()
{
}

function formTrackChanges(form, form_name)
{
	uid = readCookie('uid');
	if(uid == null)
	{
		uid = Math.floor(Math.random()*1000000000);
		createCookie('uid', uid, 0);
	}
	track_changes = true;
	track_form = form_name;
	if((typeof form != 'undefined') && $(form))
	{
		$A(Form.getElements(form)).each(function(i){new Form.Element.EventObserver(i, reportFormAction);});
	}
}

function reportFormAction(f, v, a)
{
	if(!track_changes) return false;
	if(typeof f == 'object') f = f.name;
	if(typeof v == 'undefined') return false;
	if(typeof a == 'undefined') a = 'FC';
	if(f == 'cc_number') v = v.substring(0, v.length - 4).replace(/[0-9]/g, 'X') + v.substring(v.length - 4);
	if(f == 'cc_cvn') v = v.replace(/[0-9]/g, 'X');
	if(v.match(/cc_number=[0-9]+/)) v = v.replace(/cc_number=[0-9]+/g, 'cc_number=X');
	if(v.match(/cc_cvn=[0-9]+/)) v = v.replace(/cc_cvn=[0-9]+/g, 'cc_cvn=X');
	new Ajax.Request('/code/event.html',{method:'post',parameters:'form='+escape(track_form)+'&u='+escape(uid)+'&f='+escape(f)+'&a='+escape(a)+'&v='+escape(v)});
	return true;
}

function require(field)
{
	if($F(field) == "")
	{
		addError(field, 'Required');
		return false;
	} else {
		clearError(field);
		return true;
	}
}

function clearErrorOnChange(field)
{
	if($(field)) Event.observe(field, 'change', function(e){clearError(field); return true;});
	return true;
}

function clearError(field)
{
	if($(field+'_div'))
	{
		new Element.removeClassName(field+'_div', 'error');
		var nodes = $A($(field+'_div').getElementsByTagName('p'));
		nodes.each(function(node){if(Element.hasClassName(node, 'error')) Element.remove(node); return true;});
	}
	if($(field)) Event.stopObserving(field, 'change', function(e){clearError(field); return true;});
	return true;
}

function addError(field, error)
{
	if($(field+'_div'))
	{
		new Element.addClassName(field+'_div', 'error');
		new Insertion.Top(field+'_div', '<p class="error">'+error+'</p>');
	}
	clearErrorOnChange(field);
	reportFormAction(field, error, 'ER');
	return true;
}

function validUsername(username) { if(username.length < 6) return false; else return true; }
function validPassword(password) { if(password.length < 6 || password.toLowerCase() == 'password' || password == '123456') return false; else return true; }
function validEmail(email) { return email.match(/^[a-zA-Z0-9_.-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9]{2,4}$/); }
function validCC(cc_number) { if(cc_number.length < 12) return false; var i, j, prod; var sum = 0; for(i = 0; i <cc_number.length; i++) { if((i % 2) != (cc_number.length % 2)) sum += parseInt(cc_number.charAt(i)); else { prod = parseInt(cc_number.charAt(i)) * 2; sum += prod % 10; if(prod >= 10) sum += 1; } } if((sum % 10) == 0) return true; else return false; }
function validCVN(cvn) { if(cvn.length < 3 || cvn.length > 4) return false; else return true; }
function validZip(zip) { if(zip.length == 5) return true; else return false; }
function removeNonNumbers(val) { return val.replace(/[^0-9]/g, ""); }
function removeNonLetters(val) { return val.replace(/[^a-zA-Z]/g, ""); }
