/*************************************************************
 * Personalizer
 * created by Michel Komarov (iCoder.com)
 *
 * Permanent link:
 * http://askmichel.icoder.com/2006/06/02/page-personalization/
 *
 * Got a question?
 * http://askmichel.icoder.com
 *
 * `i Code to help you profit`
 *  http://www.icoder.com
 *************************************************************/
function __personalize() {
	var cookieFields = document.cookie.split("; ");

	var firstName = __getPersonalizedFirstName(cookieFields);
	var lastName  = __getPersonalizedLastName(cookieFields);
	var fullName  = __getPersonalizedFullName(cookieFields);
	var email     = __getPersonalizedEmail(cookieFields);
	if ("" == firstName) firstName = checkUrlParam("__fn","firstname");
	if ("" == lastName)  lastName  = checkUrlParam("__ln","lastname");
	if ("" == fullName)  fullName  = checkUrlParam("__n","fullname");
	if ("" == email)     email     = checkUrlParam("__e","email");

	if ("" == fullName) {
		if ("" != firstName) fullName  = firstName;
		if ("" != lastName)  fullName += " "+lastName;
	} else {
		var names = fullName.split(" ");
		if ("" == firstName) firstName = names[0];
		if (("" == lastName) && (names.length > 1)) lastName = names[1];
	}
	if ("" != firstName) __personalizeFirstName(firstName);
	if ("" != lastName)  __personalizeLastName(lastName);
	if ("" != fullName)  __personalizeFullName(fullName);
	if ("" != email)     __personalizeEmail(email);

	for (var i = 0; document.forms.length > i; ++i) {
		if ("function" == typeof(document.forms[i].onsubmit))
			document.forms[i].__onsubmit = document.forms[i].onsubmit;
		document.forms[i].onsubmit = __personalizeCheckForm;
	}
}
function __personalizeCheckForm(event) {
	var d = new Date();
	d.setMonth(d.getMonth() + 24);
	var fieldNames = "|first_name|first_Name|firstname|firstName|"
		+ "|last_name|last_Name|lastname|lastName|"
		+ "|full_name|full_Name|fullname|fullName|name|Name|"
		+ "|email|Email|from|From|";
	var items = this.elements;
	for (var i = 0; items.length > i; ++i) {
		if (("INPUT" == items[i].tagName)
		&&  ("text" == items[i].type)
		&&  (-1 != fieldNames.indexOf("|"+items[i].name+"|"))) {
			document.cookie = "__personalize_" +items[i].name
				+ "=" + escape(items[i].value)
				+ "; expires="+d.toGMTString()+"; path=/;";
		}
	}
	if ("function" == typeof(this.__onsubmit))
		return this.__onsubmit(event);
	return true;
}

function __personalizeFirstName(fieldValue) {
	__personalizeField("first_name", fieldValue);
	__personalizeField("first_Name", fieldValue);
	__personalizeField("firstname",  fieldValue);
	__personalizeField("firstName",  fieldValue);
}
function __personalizeLastName(fieldValue) {
	__personalizeField("last_name", fieldValue);
	__personalizeField("last_Name", fieldValue);
	__personalizeField("lastname",  fieldValue);
	__personalizeField("lastName",  fieldValue);
}
function __personalizeFullName(fieldValue) {
	__personalizeField("full_name", fieldValue);
	__personalizeField("full_Name", fieldValue);
	__personalizeField("fullname",  fieldValue);
	__personalizeField("fullName",  fieldValue);
	__personalizeField("name",      fieldValue);
	__personalizeField("Name",      fieldValue);
}
function __personalizeEmail(fieldValue) {
	__personalizeField("email", fieldValue);
	__personalizeField("Email", fieldValue);
	__personalizeField("from",  fieldValue);
	__personalizeField("From",  fieldValue);
}
function __personalizeField(fieldName, fieldValue) {
	var fieldObjects = document.getElementsByName(fieldName);
	for(var i = 0; fieldObjects.length > i; ++i) {
		switch (fieldObjects[i].tagName) {
			case "A":
			case "DIV":
			case "SPAN":
				fieldObjects[i].innerHTML = fieldValue;
				break;
			case "INPUT":
				if ("" == fieldObjects[i].value)
					fieldObjects[i].value = fieldValue;
				break;
		}
	}
}

function __getPersonalizedFirstName(cookieFields) {
	var fieldNames = "|first_name|first_Name|firstname|firstName|";
	return __getPersonalizedField(fieldNames, cookieFields);
}
function __getPersonalizedLastName(cookieFields) {
	var fieldNames = "|last_name|last_Name|lastname|lastName|";
	return __getPersonalizedField(fieldNames, cookieFields);
}
function __getPersonalizedFullName(cookieFields) {
	var fieldNames = "|full_name|full_Name|fullname|fullName|name|Name|";
	return __getPersonalizedField(fieldNames, cookieFields);
}
function __getPersonalizedEmail(cookieFields) {
	var fieldNames = "|email|Email|from|From|";
	return __getPersonalizedField(fieldNames, cookieFields);
}
function __getPersonalizedField(fieldNames, cookieFields) {
	for (var i = 0; cookieFields.length > i; ++i) {
		var pair = cookieFields[i].split("=");
		if ((0 == pair[0].indexOf("__personalize_"))
		&& (-1 != fieldNames.indexOf("|"+pair[0].substr(14)+"|"))) {
			return unescape(cookieFields[i].substr(pair[0].length + 1));
		}
	}
	return "";
}

function checkUrlParam(urlParam, cookieName) {
	var value = "";
	if (document.location.search.length > 1) {
		var p = document.location.search.substr(1);
		var pFields = p.split("&");
		for(var i in pFields) {
			if (0 == pFields[i].indexOf(urlParam+"=")) {
				value = unescape(pFields[i].substr((urlParam+"=").length));
				var d = new Date();
				d.setMonth(d.getMonth() + 24);
				document.cookie = "__personalize_" +cookieName
				+ "=" + escape(value)
				+ "; expires="+d.toGMTString()+"; path=/;";
				break;
			}
		}
	}
	return value;
}

__personalize();

