/// <reference name="MicrosoftAjax.js"/>

/*= PARAMETERS LOADING ++++++++*/
var _PARAMS;
var _PORTS_DEFAULT;
/*
var _PATHPARAMS = '/';
var _PATHDEFAULT = '/';
*/
//console.debug(_PATHDEFAULT);
//if( _dgPathDefault!=null && _dgPathParams!=null)
//{
	$(document).ready(function(){
		$.get(_PATHPARAMS+'params.xml', function(xml){
			 _PARAMS = $.xml2json(xml); 
			$.get(_PATHDEFAULT+'ports-default.xml', function(ports){
				_PORTS_DEFAULT = $.xml2json(ports);
				grid_init();
			});
		});
		$(".qmmc").stackOrderIEFix();
	});
//}
/*= CLASSES DEFINITION ++++++++*/
function CclPromoRequest() {
    this.PortCodes = null;
    this.FromSailDate = null;   
    this.ToSailDate = null;
    this.DurationDays = null;
    this.PrimaryFareCode = null;
    this.CompareFareCode = null;
    this.DefaultFareCode = null;
    this.AddPortCode = function AddPortCode(newPortCode) { if (this.PortCodes != null) this.PortCodes.push(newPortCode); else this.PortCodes = new Array(newPortCode); }
    this.AddDurationDay = function AddDurationDay(newDuration) { if (this.DurationDays != null) this.DurationDays.push(newDuration); else this.DurationDays = new Array(newDuration); }   
    this.getPromo = function getPromo($showLoading, $onPromoResponseSuccess, $onPromoResponseError){
        var request = this;
        $showLoading(true);
        proxy.invoke("GetPromoDetails", request,
            function(result) {
                if (!result) {
                    $onPromoResponseError("Invalid Request");
                    return;
                }
                $showLoading(false);
                $onPromoResponseSuccess(result);
            },
            $onPromoResponseError, 
            true);
    }
}

/*= PROXY CLASS ++++++++++*/
function serviceProxy(serviceUrl) {
    var _I = this;
    this.serviceUrl = serviceUrl;
    this.invoke = function(method, data, callback, error, bare) {
        var json = JSON.stringify(data);
       // var url = _I.serviceUrl +"?type="+ method;
	var url = _I.serviceUrl +"/"+ method;
        $.ajax({
            url: url,
            data: json,
			cache: false,
            type: "POST",
            processData: false,
            contentType: "application/json",
            timeout: 5000,
            dataType: "text",
            success:
                    function(res) {
                        if (!callback) return;
                        var result = JSON.parse(res);
                        if (result.Advisory) {
                            error(result.Advisory);
                            return;
                        }
                        if (bare) {
                            callback(result); return;
                        }
                        for (var property in result) {
                            callback(result[property]);
                            break;
                        }
                    },
            error: error
        });
    }
}
/*= URL AND INSTANCE OF PROXY CLASS ++++++++++*/
//var serviceUrl = "proxy.aspx";
var serviceUrl = "http://www.carnival.com/domaindata/pricingpromoservice.svc";
var proxy = new serviceProxy(serviceUrl);

(function($) {
$.fn.stackOrderIEFix = function () {
   var zIndexNumber = 800;
   return this.each(function () {
      $(this).css('zIndex', zIndexNumber);
      zIndexNumber -= (zIndexNumber <= 0) ? 0 : 10;
   });
};
})(jQuery);