
function getreq()
{
	var r;
	if ( window.XMLHttpRequest )
	{
		r = new window.XMLHttpRequest();
	}
	else if ( window.ActiveXObject )
	{
		r = new ActiveXObject("Msxml2.XMLHTTP");
		if (!r)
			r = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return r;
}


// passed an HTML element as a parameter, returns an object 
// with 2 properties: absolute coordinates (x,y) of the element
function getxy(el) 
{
	var xy = {x:0,y:0};
	var element = ( typeof el == "object" ) ? el : document.getElementById(el);
	while (element) {
		try
		{
			xy.x += element.offsetLeft;
			xy.y += element.offsetTop;
		}
		catch(err) { }
		element = element.offsetParent;
	}
	return xy;
}

var JSON = {
	// JSON.serialize(o)
	// serializes object o and returns a string 
	serialize : function(o) {
		var i, v, s = JSON.serialize, t;

		if (o == null)
			return 'null';

		t = typeof o;

		if (t == 'string') {
			v = '\bb\tt\nn\ff\rr\""\'\'\\\\';

			return '"' + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'])/g, function(a, b) {
				i = v.indexOf(b);

				if (i + 1)
					return '\\' + v.charAt(i + 1);

				a = b.charCodeAt().toString(16);

				return '\\u' + '0000'.substring(a.length) + a;
			}) + '"';
		}

		if (t == 'object') {
			if (o instanceof Array) {
					for (i=0, v = '['; i<o.length; i++)
						v += (i > 0 ? ',' : '') + s(o[i]);

					return v + ']';
				}

				v = '{';

				for (i in o)
					v += typeof o[i] != 'function' ? (v.length > 1 ? ',"' : '"') + i + '":' + s(o[i]) : '';

				return v + '}';
		}

		return '' + o;
	},

	// JSON.parse(str)
	// returns an object of the parsed string
	parse : function(s) {
		try {
			return eval('(' + s + ')');
		} catch (ex) {
			// Ignore
		}
	}
}

function email_validation(em)
{
	return /^((?:\w+[^\w\s@]?)+)@((?:[^\.@\s]+\.)+[a-z]{2,}|(?:\d{1,3}\.){3}\d{1,3})$/.test(em)
}

var currentLiSeqNo = 0;

function change_series(iLiSeqNo)
{
	currentLiSeqNo = iLiSeqNo;
	var change_panel = document.getElementById("change_panel");
	if(change_panel)
	{
		var pkg_no_span = document.getElementById("pkg"+iLiSeqNo);
		var pkg_no = pkg_no_span.innerHTML;
		var radToDisable = document.getElementById("cp" + pkg_no );
		if (radToDisable)	
			radToDisable.disabled = true;
		var li = getxy("td" + iLiSeqNo);
		change_panel.style.left = "" + (li.x + 100) + "px";
		change_panel.style.top = "" + ( li.y + 10 ) + "px";
		$(change_panel).slideDown();
	}
}



function hide_change_panel()
{
	$('#change_panel').slideUp()
}

var newSeries = "";

function change_select(sNew)
{	
	newSeries = sNew;
}

function do_change_series(oCaller)
{
	var caller = oCaller;
	var req = getreq();
	this.handler = function()
	{
		if (req.readyState == 4 )
		{
			if(req.status == 200)
			{
				var rslt = JSON.parse(req.responseText);
				if (! rslt)
					alert(req.responseText);
			}
			else
				alert(req.responseText);
			hide_change_panel();
			caller.disabled = false;
		}
	}
	
	this.validate = function()
	{
		try
		{
			var retval= {};
			var message = document.getElementById("tbx_seat_change_req").value;
			if (newSeries == "" && message == "")
				alert("Please make a change selection or add enter a request.");
			else
			{
				retval.line_no = currentLiSeqNo;
				retval.change_request = newSeries;
				retval.message = message;
				return retval;
			}
		}
		catch(err)
		{
		
		}
	}
	
	var sendObj= this.validate();
	
	if (req && sendObj)
	{
		req.open("POST", ( srvr + ROOT + "/seasons/ajax.asmx/HandleOpera0809ChangeRequest"), true);
		req.setRequestHeader("Content-Type", "application/json");
		req.onreadystatechange = this.handler;
		req.send(JSON.serialize(sendObj));	
	}
}

var subscriber_name_panel_visible = false;
var ddl_source_no_val = 0;

function showhide_subscriber_name_panel(iSourceNo)
{
	if(iSourceNo == source_no_for_referral)
	{
		if (! subscriber_name_panel_visible)
			$('#friends_name').slideDown();
		subscriber_name_panel_visible = true;
	}
	else
	{
		if (subscriber_name_panel_visible)
			$('#friends_name').slideUp();
		subscriber_name_panel_visible = false;
	}
	ddl_source_no_val = iSourceNo;
}

function has_selected_source(src, args)
{
	args.IsValid = (ddl_source_no_val > 0);
}

function referrer_not_empty(src, args)
{
	if ( ddl_source_no_val == source_no_for_referral)
		args.IsValid = (args.Value != "");
	else
		args.IsValid = true;
}