
var debug = 0;
var sCRLF = "\r\n";


function xmlhttp()
{
	try{return new ActiveXObject("Msxml2.XMLHTTP");} catch(e){}
	try{return new ActiveXObject("Microsoft.XMLHTTP");} catch(e){}
	try{return new XMLHttpRequest();} catch(e){}
//	alert("XMLHttpRequest Object not existed!!");
	return null;
}


function iFaxAjax () {

// Public Properties
	var _oiFaxAjax = this;
	this.oAjax= null;
	this.sResult = "";
	this.sContentType = "";	// FORM or [Empty] or FORMFILE
	this.sURL = "";
	this.oDest = null;

	this.fnCallBack = "";
	this.fnProcessing = "";

	this._fields = new Array();


// Private Methods

	this._createBoundary = function () {
		var tmp = Math.random();
		var thisDate = new Date();
		tmp = Math.abs(tmp*thisDate.getTime());
		tmp = "--------" + tmp + "--------";
		return tmp;
	}

	this._createField = function ( _field, _value) {
		var tmp = "";
		if ( this.sContentType == "FORMFILE" || this.sContentType == "FORM" )
		{
			tmp = "--" + this._boundary + sCRLF;
			tmp += "Content-Disposition: form-data; name=\"" + _field + "\"" + sCRLF;
			tmp += "Content-Transfer-Encoding: binary" + sCRLF + sCRLF;
			tmp += _value + sCRLF
			tmp += "--" + this._boundary + "--" + sCRLF + sCRLF;
//		}else if ( this.sContentType == "FORM" ){
//			tmp = escape(_field) + "=" + escape(_value);
		}
		return tmp;
	}

// Public Methods

	this.addField = function (_field, _value) {
		this._fields.push(new Array(_field, _value));
	}

	this.removeField = function (_field) {
		for (var i=0; i<this._fields.length; i++) {
			var tmp = this._fields[i];
			if (tmp[0] == _field) {
				this._fields.splice(i,1);
			}
		}
	}

	this.emptyField = function () {
		this._fields = new Array();
	}

	this.abort = function(){
		if ( this.oAjax )
		{
			if (this.oAjax.readyState != 4) {
				this.oAjax.abort();
			}
		}
	}



		
	this.send = function ( sURL, oDest ) {
		var sMsgBody = "";
		
		this.oAjax= new xmlhttp();
		if (!this.oAjax) return false;


		this.oAjax.onreadystatechange =function ()
		{
	
			if ( _oiFaxAjax.fnProcessing )
			{
				try{
					eval(_oiFaxAjax.fnProcessing);
				} catch(e){}
			}
		
			try{
				if (_oiFaxAjax.oAjax.readyState == 4) {
					
//					alert( _oiFaxAjax.oAjax.responseText );
					if (_oiFaxAjax.oAjax.status == 200) {
						if ( _oiFaxAjax.oDest )
						{
							_oiFaxAjax.sResult = _oiFaxAjax.oAjax.responseText;
							_oiFaxAjax.oDest.innerHTML = _oiFaxAjax.sResult;
						}
					} else {
						_oiFaxAjax.errCode = _oiFaxAjax.oAjax.status;
						_oiFaxAjax.sResult = _oiFaxAjax.oAjax.responseText;
		//				alert("Error in request!! HTTP RESPONSE STATUS: " + formObj.errCode);
					}
					
					if ( _oiFaxAjax.fnCallBack )
					{
						try{
							eval(_oiFaxAjax.fnCallBack);
						} catch(e){}
					}
				}
			}catch(e) {		
				if ( _oiFaxAjax.fnCallBack )
					eval(_oiFaxAjax.fnCallBack);
			}

		}
		

		this.sURL = sURL;
		this.oDest = oDest;
//		if ( !oDest ) return false;
		
		this.oAjax.open("POST", this.sURL, true);
		
		this._boundary = this._createBoundary();
		for (var i=0; i<this._fields.length; i++){
			var tmp = this._fields[i];

//			if ( this.sContentType == "FORM" )
//				if ( sMsgBody != "" ) sMsgBody +="&";
			sMsgBody += this._createField(tmp[0], tmp[1]);
		}


		if ( this.sContentType == "FORMFILE"  || this.sContentType == "FORM" )
		{
			this.oAjax.setRequestHeader("Content-Type","multipart/form-data; charset=UTF-8; boundary="+this._boundary);
			this.oAjax.setRequestHeader("Connection","Keep-Alive");
			this.oAjax.setRequestHeader("Content-Length",sMsgBody.length);
//		}else if ( this.sContentType == "FORM" ) {
//			this.oAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
//			this.oAjax.setRequestHeader("Content-Length",sMsgBody.length);
		}else{
			sMsgBody = null;
		}
//		alert(sMsgBody);
		
		this.oAjax.send(sMsgBody);
	}
	
}



var IID = 0;
var SID = 0;
var CID = 0;
var sMode;
var oiFaxAjax = new iFaxAjax();
oiFaxAjax.sContentType = 'FORM';

function Ajax_DeleteCart(ID)
{
//	KaWai_Eval( 'val['+ID+']_Loading', 'style.display', '' );
	with ( oiFaxAjax )
	{
		abort();
		emptyField();
		addField('ACTION', 'Ajax_Cart' );
		addField('MODE', 'DELETE' );
		addField('SID', ID );
		fnCallBack = 'handleStateChange()';
		send( 'index.php', null );
	}

}


function Ajax_DeleteAllCart()
{
//	KaWai_Eval( 'val['+ID+']_Loading', 'style.display', '' );
	with ( oiFaxAjax )
	{
		abort();
		emptyField();
		addField('ACTION', 'Ajax_Cart' );
		addField('MODE', 'DELETEALL' );
		fnCallBack = 'handleStateChange()';
		send( 'index.php', null );
	}

}

function Ajax_CheckOut()
{
//	KaWai_Eval( 'val['+ID+']_Loading', 'style.display', '' );
	with ( oiFaxAjax )
	{
		abort();
		emptyField();
		addField('ACTION', 'Ajax_Cart' );
		addField('MODE', 'CHECKOUT' );
		addField('CID', '' );
		addField('SID', '' );
		fnCallBack = 'handleStateChange()';
		send( 'index.php', null );
	}

}


function Ajax_RefreshCart(bRefreshCart)
{
//	KaWai_Eval( 'val['+ID+']_Loading', 'style.display', '' );
	with ( oiFaxAjax )
	{
		abort();
		emptyField();
		addField('ACTION', 'Ajax_Cart' );
		if ( bRefreshCart == "YES" )
			addField('MODE', 'REFRESHALL' );
		else
			addField('MODE', 'REFRESH' );
		fnCallBack = 'handleStateChange()';
		send( 'index.php', null );
	}

}

function Ajax_AddtoCart(sObjName)
{
//	KaWai_Eval( 'val['+ID+']_Loading', 'style.display', '' );

	var nIndex = KaWai_Eval( sObjName, 'selectedIndex');
	var SID =KaWai_Eval( sObjName, 'options['+nIndex+'].value');
	
	if ( SID == "") 
	{
		alert("Please select a size. ");
	}else{
		with ( oiFaxAjax )
		{
			abort();
			emptyField();
			addField('ACTION', 'Ajax_Cart' );
			addField('MODE', 'ADD' );
			addField('CID', CID );
			addField('SID', SID );
			fnCallBack = 'handleStateChange()';
			send( 'index.php', null );
		}
		KaWai_Eval( sObjName, 'selectedIndex', '0');
	}
}

function handleStateChange( ) {

//alert((oiFaxAjax.oAjax.responseText));
//	KaWai_Eval( 'val['+ID+']_Loading', 'style.display', 'none' );
	var nIndex = (oiFaxAjax.oAjax.responseText).search("AJAX_OK");

	if ( (oiFaxAjax.oAjax.responseText).substr(nIndex,7) == "AJAX_OK" ){
		eval((oiFaxAjax.oAjax.responseText).substr(nIndex+7));
	}
}


function Ajax_AddtoMaillingList()
{
//	KaWai_Eval( 'val['+ID+']_Loading', 'style.display', '' );

	var sEmail =KaWai_Eval( "sEmail", "value" );	
	KaWai_Eval('sMaillingList_Msg', 'innerHTML', ' *** Loading ***');
	with ( oiFaxAjax )
	{
		abort();
		emptyField();
		addField('ACTION', 'Ajax_Cart' );
		addField('MODE', 'ADDMAILLINGLIST' );
		addField('EMAIL', sEmail );
		fnCallBack = 'handleStateChange()';
		send( 'index.php', null );
	}

}
