function cmdAddCoupon_callback(text, params)
{
  var result = text.split('>');
  d('cmdFeedback').innerHTML = result[3];
  if(result[0]!=-1)
  {
    d('Code').value = '';
    d('Discount').value = '';
    d('AppliesTo').value = '';
    d('Expiry').value = '';
    d('SourceURL').value = '';

    if(result[2]==1)
    {
      showPopup('/Popup/New-Coupon1.asp');
    }
  }
}

function cmdAddCoupon(merchantID)
{
  if (d('Code').value == '') { d('cmdFeedback').innerHTML = 'Please enter a coupon code.'; return; };
  if (d('Discount').value == '') { d('cmdFeedback').innerHTML = 'Please enter a discount.'; return; };
  d('cmdFeedback').innerHTML = 'Adding coupon';
  ajaxFunction('/Action/Merchant_AddCoupon_ByUser.asp?' + addVariables(merchantID, d('Code').value, d('Discount').value, d('AppliesTo').value, d('Expiry').value, d('SourceURL').value), cmdAddCoupon_callback, []);
}

function Vote_callback(text, params)
{
  var result = text.split('>');
  if(result[0]=='1')
  {
    if(params[1]==1)
    {
      showPopup('/Popup/New-User-Vote1.asp?MerchantID=' + result[1] + '&CouponID=' + params[0]);
    }
  }
  else if ( result [ 0 ] == '0' )
  {
    if(params[1]==1)
    {
      showPopup('/Popup/Invite-Friends1.asp?CouponID=' + params[0]);
    }
  }
  else if ( result [ 0 ] == '2' )
  {
    if(params[1]==1)
    {
	 
		// Allows us to use this multiple times
		if ( _facebook == null || !_facebook.isReady )
		{
			_facebook = new _FacebookFunction ( );
		} 
    // move out of if because they need reset
    _facebook.globalParams = params;
    _facebook.globalResults = result;
    _facebook.requireEmailPermission = false;
    _facebook.forceSetup = false;		

		
		_facebook.UserSetup =  function ( ) { 
			_facebook.isReady = true;
			var attachment = {'media':[{'type':'image','src':'http://store.img' + 
				(_facebook.globalResults [1] % 4) +'.tjoos.com/' + _facebook.globalResults [ 1 ] + '.jpg','href':document.location.href } ] }; 
			if ( result[3] != '' ) FB.Connect.streamPublish('I used coupon code "' + result [3] + '" to get a discount at ' + result[2] + '.', attachment,
        [{ "text": "View " + result[2] + ' Coupons', "href": document.location.href }]);
			else FB.Connect.streamPublish('I used a coupon code to get a discount at ' + result[2] + '.', attachment, 
       [{ "text": "View " + result[2] + ' Coupons', "href": document.location.href }]);
		}
		_facebook.NoUser = function ( _debug ) { showPopup('/Popup/Invite-Friends1.asp?CouponID=' + _facebook.globalParams[0]); }
		
		
		if ( _facebook == null || !_facebook.isReady )
		{
			_facebook.Init ( );
		} else {
			_facebook.UserSetup ( );
		}
		
		
    }
	
  }
   
}

function Vote(id, Vote)
{
  ajaxFunction("/Action/Coupon_Vote.asp?" + addVariables(id, Vote), Vote_callback, [id, Vote]);
  d('V' + id).innerHTML = 'Voted';
  if(Vote==-1)
  {
    d('Y' + id).parentNode.removeChild(d('Y' + id));
    d('N' + id).parentNode.removeChild(d('N' + id));
  }
}




function OnLoad ( )
{
	// this code is required for facebook to work
	// within a lazy load method
	var fbHiddenDiv = document.createElement("div");
	fbHiddenDiv.id = "FB_HiddenContainer";
	fbHiddenDiv.style.position = "absolute";
	fbHiddenDiv.style.left = "-10000px";
	fbHiddenDiv.style.top = "-10000px";
	fbHiddenDiv.style.width = "0px";
	fbHiddenDiv.style.height = "0px";
	window.document.body.insertBefore(fbHiddenDiv, window.document.body.firstChild);
	setTimeout ( 'LoadFacebookScript ( )', 10 ); // IE fix
}


// lazy load the facebook script
function LoadFacebookScript ( ) 
{
	var head= document.getElementsByTagName('head')[0];
	var script= document.createElement('script');
	script.type= 'text/javascript';
	script.src= 'http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php';
	head.appendChild(script);
  DetectFacebookAvailable ();
}


function DetectFacebookAvailable ()
{
  if ( typeof ( FB ) == 'undefined' )
  {
    setTimeout ( 'DetectFacebookAvailable()', 250 );
    return;
  }
  setTimeout ( 'CheckIsFacebook ( )', 250 );
}

function CheckIsFacebook ( )
{
    _facebook = new _FacebookFunction ( );
    _facebook.requireEmailPermission = false;
    _facebook.forceSetup = false;
    _facebook.UserSetup =  function ( ) { ajaxFunction('/Action/User_IsFacebook.asp', '', []); }
    _facebook.NoUser = function ( _debug ) { if ( _debug == 'app not auth' ) { ajaxFunction('/Action/User_IsFacebook.asp', '', []); } }
    _facebook.Init ( );
}


var _facebook;

var _FacebookFunction = function () {};

_FacebookFunction.prototype = 
{
	api : null,
	globalParams : null,
	globalResults : null,
	alreadyRunning : false,
	apiKey : 'd31ab2d69b23cbd50e19e4166016a475',
  xdr: 'http://www.tjoos.com/FB/xd_receiver.htm',
	forceSetup : false,
	requireEmailPermission : false,
	isReady : false,


	PermissionGranted : function ( result )
	{
		if ( result )
		{
			ajaxFunction ( "/Action/User_SetFacebook.asp?" + addVariables ( _facebook.globalParams [ 0 ] ) );
			_facebook.UserSetup ( );
		} else {
			ajaxFunction ( "/Action/User_SetFacebook.asp?" + addVariables ( _facebook.globalParams [ 0 ] ) );
			_facebook.NoUser ( );
		}	
	},
	
	
	DetectFacebookConnectStatus : function ( )
	{
		if ( _facebook.alreadyRunning ) return;
		_facebook.alreadyRunning = true;
		
		FB.Connect.get_status( ).waitUntilReady ( 
			function ( status ) { 
				switch ( status ) 
				{ 
					case FB.ConnectState.connected: 
						if ( _facebook.requireEmailPermission ) setTimeout ( '_facebook.DoesRequirePermission ( )', 10 );
						else _facebook.UserSetup ( );
						return
					case FB.ConnectState.appNotAuthorized:
            ajaxFunction('/Action/User_IsFacebook.asp', '', []);
						if ( _facebook.forceSetup ) FB.Connect.requireSession ( _facebook.SessionResult ); 
						else _facebook.NoUser ( 'app not auth' );
						return;
					case FB.ConnectState.userNotLoggedIn:
						_facebook.NoUser ( 'not logged in' );
						break;
						
				}
		}); 
	},
	
	SessionResult : function ( )
	{
		_facebook.alreadyRunning = false; 
	},
	
	
	
	DoesRequirePermission : function ( ) 
	{
    _facebook.ApiReady ();
	},
	
	
	ApiReady : function ( )
	{
		FB_RequireFeatures(["Api"], function(){ 
			FB.Facebook.init(_facebook.apiKey, _facebook.xdr); 
			_facebook.api = FB.Facebook.apiClient; 
			_facebook.api.requireLogin ( function ( exception ) { 
				_facebook.api.users_hasAppPermission ( 'email', _facebook.ShowPermission );
			} );
		});
	},
	
	
	ShowPermission : function ( result )
	{
		if ( result != 1 ) FB.Connect.showPermissionDialog ('email', _facebook.PermissionGranted ) ;
		else {
		
			ajaxFunction ( "/Action/User_SetFacebook.asp?" + addVariables ( _facebook.globalParams [ 0 ] ) );
			_facebook.UserSetup ( );
		}
	},
	
	
	Init : function ( )
	{
    if ( typeof ( FB.ConnectState ) != 'undefined'  ) if ( FB.ConnectState.connected == 1 ) { _facebook.DetectFacebookConnectStatus (); return; }

    FB.init( _facebook.apiKey , _facebook.xdr ,  
        { "ifUserConnected" : _facebook.DetectFacebookConnectStatus , 
        "ifUserNotConnected" : _facebook.DetectFacebookConnectStatus }  ); 
	},
	
	UserSetup : function ( ) {},
	NoUser : function ( _debug ) {}
	
};

function cmdNotify_callback(text, params)
{
  d('cmdNotifyFeedback').innerHTML = '';

  if(text=='2') 
  {
    if ( document.getElementById('FB_HiddenContainer') == null )
    {
      showPopup('/Popup/New-User1.asp?MerchantID=' + params [ 0 ]);
    } else 
    {
      _facebook = new _FacebookFunction ( );
      _facebook.globalParams = params;
      _facebook.requireEmailPermission = true;
      _facebook.forceSetup = true;
      _facebook.UserSetup =  function ( ) { showPopup ( "/Popup/New-FacebookUser1.asp?MerchantID=" + _facebook.globalParams [ 0 ] ); }
      _facebook.NoUser = function ( ) { showPopup('/Popup/New-User1.asp?MerchantID=' + _facebook.globalParams [ 0 ]); }
      _facebook.Init ( );
    }
  };
}



function cmdNotify(merchantID, checked)
{
	
  d('cmdNotifyFeedback').innerHTML = 'Saving...';
  ajaxFunction('/Action/User_SetCouponNotification.asp?' + addVariables(merchantID, checked), cmdNotify_callback, [merchantID]);
}

function cmdSetCategory_callback(text, params)
{
  d('cmdNotifyFeedback').innerHTML = '';
  window.location.reload(true);
}

function cmdSetCategory(merchantID)
{
  d('cmdNotifyFeedback').innerHTML = 'Saving...';
  ajaxFunction('/Action/Merchant_SetCategory.asp?' + addVariables(merchantID, d('CategoryID').value), cmdSetCategory_callback, []);
}