package com.guru.conn 
{
	import com.guru.call.FunctionCall;
	import com.guru.call.ICall;
	
	public class ConnAbstract
	{
		private var mConnection:GeneralServerConnection = null;
		private var mSuccessCall:ICall = null;
		private var mFailCall:ICall = null;
		private var mXML:XML = null;
	
		public function ConnAbstract(pPath_str:String, pSuccessCall:ICall=null, pFailCall:ICall=null)
		{
			mConnection = new GeneralServerConnection(pPath_str, new FunctionCall(this, connSuccess), new FunctionCall(this, connFail));
			mConnection.setTimeout(30);
			mSuccessCall = pSuccessCall;
			mFailCall = pFailCall;
		}
		
		public function setSuccessCall(pCall:ICall):void
		{
			mSuccessCall = pCall;
		}
		
		public function setFailCall(pCall:ICall):void
		{
			mFailCall = pCall;
		}
		
		public function send(pData_obj:Object = null):void
		{
			mConnection.setParamObject(pData_obj);
			mConnection.send();
		}
		
		public function getXML():XML
		{
			return mXML;
		}
		
		private function encodeXML():void
		{
			XML.ignoreWhitespace = false;
			mXML = new XML(mConnection.getRawResult());
			if (mConnection.getConnectionUrl().indexOf("getFriends") == -1)
			{
				Logger.xml("URL: " + mConnection.getConnectionUrl());
				Logger.xml("XML: " + mXML);
				Logger.xml("----------------------------------------------");
			}
			if(mSuccessCall != null)
			{
				mSuccessCall.execute();
			}
		}
		
		private function connSuccess():void
		{
			encodeXML();
		}
		
		private function connFail():void
		{
			trace("ConnAbstract:::connFail");
			if(mFailCall != null)
			{
				mFailCall.execute();
			}
		}
	}
}