var Invoker;
if (!Invoker) { 
    Invoker = {};
}

var _LSIURL = window.location.protocol + '//' + window.location.host;
var _LSISECUREURL =  "https://" + window.location.host;
Invoker.callCollectionAPI = function(url,collName,callback){
    url = _LSIURL + url+"?&_select=auctions";
    $.ajax({
        type:"GET",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data,collName);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error :[ {
                    status_code:XMLHttpRequest.status,
                    errorText: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                }]
            },collName );
        }
    });
};

Invoker.addItemToWatchList = function(param,callback){
    var url = "/api/v1/watchlist//create";
    url = _LSIURL + url;
    $.ajax({
        type:"POST",
        data:param,
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error : [{
                    status_code:XMLHttpRequest.status,
                    errorText: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                } ]
            } );
        }
    });
};

Invoker.createSavedSearch = function(param,callback){
    var url = "/api/v1/auction_saved_searches//create";
    url = _LSIURL + url;
    $.ajax({
        type:"POST",
        data:param,
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error : [{
                    status_code:XMLHttpRequest.status,
                    errorText: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                } ]
            } );
        }
    });
};

Invoker.removeShipping = function(transaction_id,callback){
    var url = "/api/v1/transaction/"+transaction_id+"/removeshipping";
    url = _LSIURL + url;
    $.ajax({
        type:"GET",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error : [{
                    status_code:XMLHttpRequest.status,
                    errorText: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                } ]
            } );
        }
    });
};

Invoker.statesBasedOnCountry = function(country_code,callback){
    var url = "/api/v1/address//statecodes?_select="+country_code;
    url = _LSIURL + url;
    $.ajax({
        type:"GET",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error : [{
                    status_code:XMLHttpRequest.status,
                    errorText: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                } ]
            } );
        }
    });
};

Invoker.accessCheck = function(rule, callback){
    var url = "/api/v1/access//check?rule="+rule;
    url = _LSIURL + url;
    $.ajax({
        type:"GET",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error : [{
                    status_code:XMLHttpRequest.status,
                    errorText: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                } ]
            } );
        }
    });
};

Invoker.GetRecomendedAuctions = function(callback){
    var url = "/api/v1/collection_master//recommended"; //"/api/v1/collection_master/7?_select=title&_select=auctions"
    url = _LSIURL + url;
    $.ajax({
        type:"GET",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback( {
                error : [ {
                    status_code:XMLHttpRequest.status,
                    errorText:
                    textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                }
                ]
            } );
        }
    });
};

Invoker.GetRecomendedLeftNav = function(params,callback){
    var url = "/api/v1/auction_search//narrow"; //"/api/v1/collection_master/7?_select=title&_select=auctions"
    url = _LSIURL + url;
    $.ajax({
        type:"GET",
        data:params,
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback( {
                error : [ {
                    status_code:XMLHttpRequest.status,
                    errorText:
                    textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                }
                ]
            } );
        }
    });
};

Invoker.GetAllAuctions = function(paramString, callback){
    var url = "/api/v1/auction_search//search?"+paramString;
    url = _LSIURL + url;
    $.ajax({
        type:"GET",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback( {
                error : [ {
                    status_code:XMLHttpRequest.status,
                    errorText:
                    textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                }
                ]
            } );
        }
    });
};

Invoker.RemoveFromWatchlist = function(auction_id, obj, callback){
    var url = "/api/v1/watchlist/"+auction_id+"/delete"; //"/api/v1/collection_master/7?_select=title&_select=auctions"
    url = _LSIURL + url;
    $.ajax({
        type:"GET",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data, obj);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback( {
                error : [ {
                    status_code:XMLHttpRequest.status,
                    errorText:
                    textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                }
                ]
            } );
        }
    });
};


Invoker.setDefaultShippingFlag = function(address_id,callback){
    var url = "/api/v1/address/"+address_id+"/update";
    url = _LSIURL + url;
    $.ajax({
        type:"POST",
        data:"default_shipping_location_flag=1",
        url: url,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error : [{
                    status_code:XMLHttpRequest.status,
                    error_text: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                } ]
            } );
        }
    });
};

Invoker.allAddressOfUser = function(user_id,callback){
    var url = "/api/v1/address//search?"+"user_id="+user_id+"&record_status=A";
    var params1="&_select=name&_select=address_type&_select=shipping_address_type_code&_select=state&_select=city&_select=postal_code";
    var params2="&_select=address1&_select=address2&_select=country_code&_select=default_billing_location_flag&_select=default_shipping_location_flag";
    url+=params1+params2;
    url = _LSIURL + url;
    $.ajax({
        type:"GET",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error : [{
                    status_code:XMLHttpRequest.status,
                    error_text: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                } ]
            } );
        }
    });
};

Invoker.createCreditCard = function(user_id,str,callback){
    var url = "/api/v1/creditcard//create";
    url =_LSIURL + url;
    $.ajax({
        type:"POST",
        data:str+'&user_id='+user_id,
        url: url,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error : [{
                    status_code:XMLHttpRequest.status,
                    error_text: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                } ]
            } );
        }
    });
};

Invoker.bidBoxDataCall = function(auction_id,record_status,callback){
    var url ="/api/v1/auction_view/"+auction_id;
    url = _LSIURL + url;
	
    var params1="_select=current_bid&_select=next_bid&_select=close_time&_select=close_flag&_select=record_status&_select=auction_type_code&_select=offer_rate&_select=quantity";
    if(record_status!="SV"){ 
        params1=params1+ "&_select=price_per_unit";
    }
    var params2="&_select=retail_price&_select=buy_now_price&_select=number_of_bids&_select=number_of_lots_remaining&_select=auction_type_code&_select=open_time&_select=winner&_select=time_until_close&_select=close_time";
	
    $.ajax({
        type:"GET",
        data:params1+params2,
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
             callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error :[ {
                    status_code:XMLHttpRequest.status,
                    errorText: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                }]
            } );
        }
    });
};

Invoker.loginAuth = function(params,callback){
    var url =  "/api/v1/user//login";
    url = _LSIURL + url;
    $.ajax({
        type:"POST",
        data:'username='+params.id+'&password='+params.pwd+'&page='+params.page,
        url: url,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error : [{
                    status_code:XMLHttpRequest.status,
                    error_text: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                } ]
            } );
        }
    });
};

Invoker.userIdentify = function(callback){
	if ( Invoker.userIdentifyCalled != undefined )
		return;
	Invoker.userIdentifyCalled = true;

    var url ="/api/v1/user//identify?_select=premium_group";
    url = _LSIURL + url;
    $.ajax({
        type:"GET",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error :[ {
                    status_code:XMLHttpRequest.status,
                    errorText: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                }]
            } );
        }
    });
};

Invoker.carouselApi = function(url,callback){
    // var url ="/api/v1/user//identify";
    url = _LSIURL + url+"?_select=auctions";
    $.ajax({
        type:"GET",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error :[ {
                    status_code:XMLHttpRequest.status,
                    errorText: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                }]
            } );
        }
    });
}

Invoker.tabbedCarouselApi = function(category,callback){
    var url =_LSIURL + "/api/v1/collection_master//search?";
    for(var i=0;i<category.length;i++){
        url = url+"label="+category[i]+"&";
    }
    url=url+"record_status=A&_select=auctions&_select=title&_select=label";
    $.ajax({
        type:"GET",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data) {
            callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            callback({
                error :[ {
                    status_code:XMLHttpRequest.status,
                    errorText: textStatus,
                    xmlrequest:XMLHttpRequest,
                    status:"false"
                }]
            } );
        }
    });
}

Invoker.updateSignIn = function(identifyResponse) {
    var str_d;
    var premium_group = $.cookie('premium_group');
    if(identifyResponse.result && identifyResponse.result.username && !identifyResponse.result.error)
    {
        username=identifyResponse.result.username;
		premium_group = identifyResponse.result.premium_group;
        global_user_id=identifyResponse.result.user.id;
        str_d = Invoker.getSignDetails(username,global_user_id);
        if(str){
			var url_logged = "http://www.surveymonkey.com/s.aspx?sm=AS0aWR_2bPJoBQbTGp3RP2Bw_3d_3d&c="+identifyResponse.result.user.id;

			if(identifyResponse.result.username)
			{   $('#myAccountFooterLink').show();
				$("a.takesurvey").attr("href",url_logged);
			}        
        }
    }
    else if ( username = $.cookie('username') )
    {
    	str_d = Invoker.getSignDetails(username);
    }
    else
    {
    	str_d = Invoker.getSignDetails();
        if ( str ) {
			$('#loginFooterLink').show();
			var url_not_logged = "http://www.surveymonkey.com/s.aspx?sm=AS0aWR_2bPJoBQbTGp3RP2Bw_3d_3d&c=nli";
			$("a.takesurvey").attr("href",url_not_logged);        
        }
    }
    $('#signDetails').html(str_d);
    
    /* display tabbed navigation for STR users */
	var lcomURI = document.location.href.replace(/\/direct\./,"/").replace(/\.com.*$/,".com");
	$("div#tabLCOM a").attr("href",lcomURI);	
	if( premium_group && premium_group.match(/STR/) )
	{
		$('.auctionTabbedContainerHeader').show();
		var directURI = document.location.href.replace(/http:\/\/(www.)?/,"http://direct.").replace(/\.com.*$/,".com");
		$("div#tabSTR a").attr("href",directURI);
	}
	
};

Invoker.getSignDetails = function(username, user_id) {
	var details;
	var recommended_url = str ? "/recommended.html" : "/bu/recommended.html";
	if ( username ) {
		details="Hello, "+username+"! We have <a href='"+recommended_url+"'>recommendations</a> for you. (<a href='/logout'>logout</a>)";
	} else {
		details = "Hello!&nbsp;<a href='/login'>Sign in</a> for today's best deals, or <a href='/register'>register now</a>.";
	}
	return details;
};

