var $j = jQuery.noConflict();
var gresp = null;
var gsid = "-1";
var rztobj = new Object();


this.navigateTo = function(item)
{
	window.location.href=item;
};




function $rzt(key){
	//alert(key);
	return rztobj[key];
}
function showHideLoader(show)
{
	if (show)
	{	
		$j("#popupbackground").show();		
		$j("#loader").show();
		
	} else
	{
		$j("#loader").hide();
		$j("#popupbackground").hide();		
	}
}

var fileLoadCaller = null;
function finishFileLoad(s)
{
	if (fileLoadCaller != null)
	{
		fileLoadCaller.finishFileLoad(s);
	}
}


String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}


function setupRequest(resp)
{
	if ((gresp != null))
	{
		alert("request already in process");
		return false;
	} else
	{
		gresp = resp;
		return true;
	}
	return false;
}

function ServiceMessage(svcname,data)
{
	this.name = svcname;
	this.id = "1";
	this.data = data;
	this.sid = gsid;
}

function toElement(html){
	var div = document.createElement('div');
	div.innerHTML = html;
	var el = div.childNodes[0];
	div.removeChild(el);
	return el;
}


function createInputElement(name,value){
	if (name.indexOf("file_") == 0)
	{
		value.name = name;
		value.id = name;
		return value;
	} else
	{
		var el = document.createElement("input");
		el.type = 'hidden';
		el.name = name;
		el.id = name;
		el.value = value;
		return el;
	}
}
function setupUploadRequest(resp)
{
	return setupRequest(resp);
}

function getFileVar(fi)
{
	var cloned = fi.clone(true);
	fi.hide();
	cloned.insertAfter(fi);   
	return fi.get(0);
}

function processUploadRequest(svcname,data)
{
	if ((rzt_mode) && (rzt_mode == "dummy"))
	{
		var gr = gresp;
		gresp = null;
		gr.call(dummy_processRequest(svcname,data));
		return;
	}
	showHideLoader(true);
	this.toJSON=function(svcname,msg)
	{
		return Base64.encode(svcname+JSON.stringify(msg));
	}

	$j("#rzt_primary").one(svcname,function(event,data)
	{
		var gr = gresp;
		gresp = null;
		try
		{
			gr.call(null,data);
		} catch (e)
		{
			alert("Error occured " + e.name + " with message " + e.message);
		}
	});
	var form = toElement('<form method="post" enctype="multipart/form-data">something</form>');
	form.style.display = 'none';
	form.action = rzt_url;
	form.target = 'uploadiframe';
	form.method = 'post';
	for (var prop in data){
		form.appendChild(createInputElement(prop,data[prop]));
	}
	var el = document.createElement("input");
	el.type = 'hidden';
	el.name = 'serviceName';
	el.value = svcname;
	form.appendChild(el);
	document.body.appendChild(form);
	$j("#uploadiframe").unbind();
	$j("#uploadiframe").bind("load", function(e){
		var x =$j("#uploadiframe").contents().find("pre").html();
		showHideLoader(false);
		var smsg = JSON.parse(Base64.decode(x));
		gsid = smsg.sid;
		$j("#rzt_primary").trigger(svcname,smsg.data);
    });
	form.submit();
}
function processRequest(svcname,data)
{
	if ((rzt_mode) && (rzt_mode == "dummy"))
	{
		var gr = gresp;
		gresp = null;
		gr.call(dummy_processRequest(svcname,data));
		return;
	}
	showHideLoader(true);
	this.toJSON=function(svcname,msg)
	{
		return Base64.encode(svcname+JSON.stringify(msg));
	}

	$j("#rzt_primary").one(svcname,function(event,data)
	{
		var gr = gresp;
		gresp = null;
		try
		{
			gr.call(null,data);
		} catch (e)
		{
			alert("Error occured " + e.name + " with message " + e.message);
		}
	});
	$j.ajax({
		url:rzt_url,
		data:{json:toJSON(svcname,new ServiceMessage(svcname,data))},
		success:function(data)
		{
			showHideLoader(false);
			var smsg = JSON.parse(Base64.decode(data));
			gsid = smsg.sid;
			$j("#rzt_primary").trigger(svcname,smsg.data);
		},
		error: function(xhr) {
			showHideLoader(false);
			gresp = null;
			alert('Error: ' + xhr.status + ' ' + xhr.statusText);
		}
	});	
}


// use newObject = Object.beget(oldObject);
if (typeof Object.beget !== 'function') {
    Object.beget = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}

$j.ajaxSetup({
type: 'POST',
timeout: 5000,
dataType: 'text',
async: false,
error: function(xhr) {
$('#errorDisplay')
.html('Error: ' + xhr.status + ' ' + xhr.statusText);
}
})

function jsSubmit(url)
{
	$j("#jssubmit").attr("action",url);
	$j("#jssubmit").submit();
}
