//$Revision: 1.9 $
var g_sProfileContent = {};

if (typeof(HTMLElement) != 'undefined' && HTMLElement.prototype
	&& !HTMLElement.prototype.innerText && HTMLElement.prototype.__defineGetter__) {
	HTMLElement.prototype.__defineGetter__('innerText', function () {
		var r = this.ownerDocument.createRange();
		r.selectNodeContents(this);
		return r.toString();
	});
}

function replaceElementWithFragment(element, fragment_url, errorElement, editElement, bSetLink) {
    var xmlhttp;
    if (window.XMLHttpRequest) {
		xmlhttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
		try {
		    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		    try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		    } catch (E) {
				xmlhttp = false;
		    }
		}
    }

    if (!xmlhttp){
		//alert("XMLHttpRequest isn't supported by your browser. Sorry.");
		return false;
    }

    //    element.innerHTML = '<p><em>Loading...</em></p>';

    xmlhttp.open("GET", fragment_url);
    xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4) {
		    	if (xmlhttp.status == 200) {
					var retStr = xmlhttp.responseText;
	
					if (retStr.substr(0, 1) == "0") {
						if (bSetLink) {
							var sUrl = retStr.substr(9);
							if (sUrl.indexOf("://") == -1) {
								sUrl = "http://" + sUrl;
							}
	
							element.innerHTML = '<a href="' + sUrl + '">' + StrBreak(retStr.substr(9)) + '</a>';
						} else {
							element.innerHTML = StrBreak(retStr.substr(9));
						}
	
						errorElement.innerHTML = '';
					} else {
						errorElement.innerHTML = StrBreak(retStr.substr(9));
					}
	
					editElement.style.visibility = "visible";
					editElement.style.display = "";
				} else {
					element.innerHTML = '<p><b>' + xmlhttp.status + ':' + xmlhttp.statusText + '</b></p>';
				}
			}
    }

    xmlhttp.send(null);
}

function ValidateLen(elementId) {
	var ctrl = document.getElementById(elementId + 'Ctrl');
	var errorEle = document.getElementById(elementId + 'Err');

	if (ctrl.value.length > 255) {
		errorEle.innerHTML = 'This field is too large to submit, please limit your text to 255 bytes.';
		return false;
	}

	errorEle.innerHTML = '';
	return true;
}

function SaveSection(user, elementId) {
	var ctrl = document.getElementById(elementId + 'Ctrl');
	var ele = document.getElementById(elementId);
	var errorEle = document.getElementById(elementId + 'Err');
	var editEle = document.getElementById(elementId + 'Edit');

	var sURL = "/user/" + user + "?action=updateProfile&updateType=" + elementId + "&" + elementId + "=" + encodeURIComponent(ctrl.value);
	var bSetLink = false;

	if (elementId == 'personalURL') {
		bSetLink = true;
	}

	if (ValidateLen(elementId)) {
		errorEle.innerHTML = '';
		replaceElementWithFragment(ele, sURL, errorEle, editEle, bSetLink);
	}
}

function CancelSection(elementId) {
	var ctrl = document.getElementById(elementId + 'Ctrl');
	var ele = document.getElementById(elementId);
	var err = document.getElementById(elementId + 'Err');
	var eleEdit = document.getElementById(elementId + 'Edit');

	eleEdit.style.visibility = "visible";
	eleEdit.style.display = "";

	ele.innerHTML = g_sProfileContent[elementId];
	err.innerHTML = '';
}

function EditSection(user, elementId) {
	var ele = document.getElementById(elementId);
	var eleEdit = document.getElementById(elementId + 'Edit');

	eleEdit.style.visibility = "hidden";
	eleEdit.style.display = "none";

	g_sProfileContent[elementId] = ele.innerHTML;
	var sHTML = '<textarea id="' + elementId + 'Ctrl" cols=28 rows=3 name="about" onKeyUp="ValidateLen(&quot;' + elementId + '&quot;);">' + escapeHTML(ele.innerText) + '</textarea><br><div style="margin: 8px 0 0 0" class="clearfix"><span id="profileSave" class="hvr" value="Save" onClick="SaveSection(\'' + user + '\', \'' + elementId + '\'); return false;" ></span><span id="profileCancel" class="hvr" value="Cancel" onClick="CancelSection(\'' + elementId + '\'); return false;"></span></div>';
	ele.innerHTML = sHTML;
}
function escapeHTML(value) {
	var div = document.createElement('div');
	var text = document.createTextNode(value);
	div.appendChild(text);
	return div.innerHTML;
}