function addslashes(str) {
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\0/g,'\\0');
	return str;
}

function stripslashes(str) {
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\\\/g,'\\');
	str=str.replace(/\\0/g,'\0');
	return str;
}

function serialize(obj)
{
	return escape($.toJSON(obj));
}

function unserialize(string)
{
	return $.parseJSON(unescape(string));
}

var CONTROLLER = "../../inc/control.php";

var callback = function() {return ""};

var Ordering = 
{

	paperOption: "",
	key: "",
	fields: "",
	callback: function(){},
	productHandler: function(){},
	browser: "",
	SESSION: '',
/* ================================================================== 

 ================================================================== */			
	init: function(key, fields,path)
	{
		

		openLoadingWindow()
		
		
		Ordering.getSession( Ordering.onPageLoad );
		
	},
	onPageLoad: function()
	{
		Ordering.key = key;
		Ordering.fields = fields;
		
		if (extra_data != "")
		{
			
		
			var eData = unserialize(extra_data);
			Ordering.setPage(eData);
		}
		else
		{
	

			Ordering.changeQuantity();
		}
			$(".ordering").change(Ordering.update);
			
			$(".attr").change(
				function (data)
				{
					openLoadingWindow()
					Ordering.orderHandler('getPrice',Ordering.updatePrice)			
				}
			);
			$(".quantity").change(Ordering.changeQuantity);
			$(".product").submit(Ordering.formHandler);

	},

	gatherExtraData: function()
	{

	},

/* ================================================================== 

 ================================================================== */			
	setCallback: function(call)
	{
		Ordering.callback = call;
	},

/* ================================================================== 

 ================================================================== */			
	setPage: function(eData)
	{
		var a;
		Ordering.orderHandler('getPage',function(data)
		{
			for (var key in data)
			{
				var sel = data[key].s;
				var output = "";			
				for (var i=0; i<$(data[key].v).length; i++)
				{
					
					var tArray = data[key].v[i].title.split("--");
					
					var title;
					
					if ($(tArray).length <= 0)
					{
						title = arr[i]['title'];
					}
					else
					{
						var h = tArray.pop();
						title = h;
					}
	
					var s = false;
					if (i == sel)
					{
						s = true;
					}
					data[key].v[i].title
					output += Ordering.makeOption(title,data[key].v[i].value,s);
				}
				
				if (quantity != "")
				{
					$("#products_quantity").val(quantity);

				}
				
							
				$("#"+key).html(output);
				closeLoadingWindow();
			}
			
			Ordering.changeQuantity();
		},CONTROLLER,{eData: eData });
		

	},


/* ================================================================== 

 ================================================================== */			
	setPageHandler: function(data)
	{
		var a;
	},
	update: function(data)
	{
		openLoadingWindow();
		$('.ordering').attr('disabled','disabled');
		$('.attr').attr('disabled','disabled');
		var cTarget = "";

		if ($.browser.msie)
		{
			cTarget = this.id;

		}
		else
		{
			cTarget = $(data.currentTarget)[0].id;
		}


		var startIndex = $.inArray(cTarget,Ordering.fields);
		

		var afterArray = [];
		
		var selectedArray = $(':selected');
		if (startIndex != eval($(Ordering.fields).length - 1))
		{
			for (var i=startIndex; i<$(Ordering.fields).length; i++)
			{
				afterArray.push(Ordering.fields[i]);
				
			}
			
			
		}
	//	if ($(afterArray).length <= 1) return false;
		var startCatID = $("#"+cTarget).val();
		
		Ordering.orderHandler('update',function(data)
		{
			
			if ($(data['opt']['products_id']).length > 0)
			{
				var count = 0;
				for (var key in data['opt'])
				{
					var idx = 0
					if ($($('#'+key).find(':selected'))[count] != undefined)
					{
						idx = $($('#'+key).find(':selected'))[count].index;
					}
		
					var set = Ordering.getOptionSet(data['opt'][key],0);
					$("#"+key).html(set);
				}
			}

			if (typeof Ordering.callback == "function")
			{
				Ordering.callback();
			}
			

			Ordering.changeQuantity();
			

		},"",{fields: serialize(afterArray),startCatID: startCatID});
		/*
		//get the id of the changed select box
		var startIndex = $.inArray($(cTarget,Ordering.fields);
		
		//an array for keeping track of the current selected options		
		var selected = [];
		
		//Grabbing the DOM id of the object from the array
		var startCatID = $("#"+fields[startIndex]).val();
		
		var products_id = $("#products_id").val();
			//The DOM index of the next item in the list		
			var nextIndex = eval(startIndex + 1);

			for (var i=nextIndex; i<$(fields).length; i++)
			{
				selected.push($("#"+fields[i])[0].selectedIndex);
			}
	
			var sel = selected.join("|");

		
		var obj = {
			task: "update",
			key: Ordering.key,
			startCatID: startCatID,
			selected: sel,
			startIndex: startIndex,
			products_id: products_id
		}

		$.get(CONTROLLER,obj,Ordering.productHandler,"json");
	
		*/
	},
/* ================================================================== 

 ================================================================== */			
	makeOption: function (title,value,sel)
	{
		var hold = "";
		if (sel) hold = "selected='selected'";
		return "<option value='"+value+"' "+hold+">"+title+"</option>";
	},

/* ================================================================== 

 ================================================================== */			
	productHandler: function(data)
	{
		var selected = data.selected.split(" - ");
		var index = eval(parseInt(data.startIndex) + 1);

		var count = 0;

		for (var i=index; i<$(Ordering.fields).length; i++)
		{
			
			html = Ordering.getOptionSet(data.opt[count]);
			$("#"+fields[i]).html(html);
			count++;
		}

		if (typeof Ordering.callback == "function")
		{
			Ordering.callback();
		}
		Ordering.changeQuantity();

	},
	
	orderHandler: function(task,cb,url,xtraOptions)
	{
		

		var lb = "%5B";
		var rb = "%5D";
		
		var c=[];
		var f=[];
		f.push(Ordering.key);

		
		var productOptions = {};

		for (var i=0; i<$(".ordering").length; i++)
		{
				var child = $($(".ordering")[i]).children();
				var sel = $($(".ordering")[i])[0].selectedIndex;
				
				if (sel == undefined) sel = "";
				var selValue = $(child[sel]).html();
				f.push(sel);
			productOptions[$($(".ordering")[i])[0].id] = {
				v: $($(".ordering")[i]).val(),
				s: sel
			}
			
			c.push($($(".ordering")[i]).val());

		}

		
		var a=[];
		var attrOptions = {};
		
		var eData = {};
		if (xtraOptions != undefined)
		{	
			if (xtraOptions['eData'] != undefined)
				eData = xtraOptions['eData'];
		}
		else
		{
			eData = {
				product: productOptions,
				attr: attrOptions
			}			
		}
		
		path = c.join("_");
		full = f.join(" - ");
		
	
		
		var description = $("#attrib-15-0").val();
		var p = $("#page").val();
		var hold = p.split("/").pop();
		var h = hold.split(".")[0];
		
		
		var opt = "&id"+lb+"txt_1"+rb+"="+description;
			opt += "&id"+lb+"txt_18"+rb+"="+h;
			opt += "&id"+lb+"txt_19"+rb+"="+escape(serialize(eData));
		
		var x = "";
		if (xtraOptions != undefined)
		{
			for (var i in xtraOptions)
			{
				x += "&"+i+"="+xtraOptions[i];
			}
		}
		

		
		for (var i=0; i<$(".attr").length; i++)
		{
			var sel = $($(".ordering")[i])[0].selectedIndex;
			a.push(sel);
			
			attrOptions[$($(".attr")[i])[0].id] = {
				v: $($(".attr")[i]).val(),
				s: sel
			}
			
			opt += "&id"+lb+$($(".attr")[i])[0].name+rb+"="+$($(".attr")[i]).val();
		}





	

		
		
		var obj = {
			products_id: $("#products_id").val(),
			cPath: path,
			quantity_index: $($(".quantity")[0])[0].selectedIndex,
			products_quantity: $("#products_quantity").val(),
			task: task,
			cart_id: $("#cart_id").val(),
			RTM: 1,
			session_name: Ordering.SESSION
		}

		


/*		var v1 = "&id"+lb+"txt_1"+rb+"="+description;
		var v2 = "&id"+lb+"txt_16"+rb+"="+full;
		var v3 = "&id"+lb+"txt_18"+rb+"="+h;
		var v4 = "&id"+lb+"txt_19"+rb+"="+serialize(eData);	*/


		var extraOptions  = "";

		if (typeof callback != undefined)
			extraOptions  = callback();

			u = "../../cart/index.php?external=1"+opt+"&"+extraOptions+x;
		

		
		$.post(u,obj,cb,'json');
	},

/* ================================================================== 

 ================================================================== */			
	getOptionSet: function (arr, index)
	{
		var to = $(arr).length;
		var output = "";
		for (var i=0; i<to; i++)
		{
			var tArray = arr[i]['title'].split("--");
			
			var title;
			
			if ($(tArray).length <= 0)
			{
				title = arr[i]['title'];
			}
			else
			{
				var h = tArray.pop();
				title = h;
			}

			var sel = false;
			if (index == i)
			{
				sel = true;
			}
			output += Ordering.makeOption(title,arr[i]['value'],sel);
		}

		return output;
	},

/* ================================================================== 

 ================================================================== */			
	changeQuantity: function()
	{
		var q = $("#products_quantity").val();
		var p = $("#products_id").val();
		$("#prodPrice").html("...");
		Ordering.orderHandler('getPrice',Ordering.updatePrice);
	},

/* ================================================================== 

 ================================================================== */			
	updatePrice: function(data)
	{

			
			$("#prodPrice").html(data.price);
			closeLoadingWindow();
			$('.ordering').attr('disabled',false);

			$('.attr').attr('disabled',false);			
			closeLoadingWindow();
	},

/* ================================================================== 

 ================================================================== */			
	onSubmit: function()
	{
		openLoadingWindow();
		Ordering.orderHandler('add',function(data)
		{

			var br;
			closeLoadingWindow();
			window.location = "../../cart/index.php?main_page=shopping_cart&path="+path+'session_name='+Ordering.SESSION;
			

		});
		return false;
	},
	
	toggleField: function( selector, input, onValue )
	{

		if ($(input).val() == onValue)
		{
			$(selector).removeAttr('readonly');
			$(selector).val('');
		}
		else
		{
			$(selector).attr('readonly','readonly');
		}
	},
	getSession: function()
	{
		$.post('../../cart/index.php?external=1',{task: 'getSession'}, function( data )
		{
			Ordering.SESSION = data.session;
			Ordering.onPageLoad();
		},'json');
																											 
	}

}

var LoadWindowOpen = false;

function openLoadingWindow() {
$("#loader").hide();
$("#loaderOverlay").hide();
		$("#loader").show();
$("#loaderOverlay").show();
	setTimeout('$("#loader").hide();',1000);
}

function closeLoadingWindow() {

$("#loader").hide();
$("#loaderOverlay").hide();


}
