jQuery.fn.xNews = function(options){

    //loadjscssfile('/WebObjects/XTLite.woa/Contents/WebServerResources/jquery.cookies.min.js','js');
    
    
    
    // define defaults and override with options, if available
    // by extending the default settings, we don't modify the argument
    settings = jQuery.extend({
        idContainer: '1',
        languageCode: 'ita',
        templateName: 'detail',
        appserverURL: '/Apps/WebObjects/XTLite.woa/wa/AjaxDirectAction/',
        //appserverURL:'/Apps/WebObjects/XTLite.woa/-5555/wa/AjaxDirectAction/',
        theID: null,
        batch: null,
        callback: null
    }, options);
    
    
    
    
    
    // do the rest of the plugin, using url and settings
    var anHref = new String(window.location);
    var queryString = anHref.replace(/^[^\?]+\??/, '');
	
	
    var params = parseQuery(queryString);
    
    if (params['theID']) 
        settings.theID = params['theID'];
    
    
    //var acceptsCookies = $.cookies.test();
    //if(acceptsCookies){
    if (settings.theID == null || settings.theID == '') 
        settings.theID = $.cookies.get('theID');
    var newOptions = {
        hoursToLive: 3
    };
    $.cookies.set('languageCode', settings.languageCode, newOptions);
    $.cookies.set('theID', settings.theID, newOptions);
    //alert("cookie theID: " +  $.cookies.get('theID'));
    //}
    //else{
    //alert("no cookies");
    //}
    
    if (settings.theID) {
        var appserverURL = settings.appserverURL;
        var theID = settings.theID;
        var idContainer = settings.idContainer;
        var batch = settings.batch;
        
        
        var languageCode = settings.languageCode;
        
        if (params['idXTLiteContainer']) 
            idContainer = params['idXTLiteContainer'];
        if (params['languageCode']) 
            languageCode = params['languageCode'];
        if (params['batch']) 
            batch = params['batch'];
        
        if ($('#loading')) {
            $('#loading').ajaxStart(function(){
                $(this).show();
            });
        }
        
        var templateName = settings.templateName;
        var getTemplateObjectAction = settings.appserverURL + 'getTemplateBehaviour?theName=' + templateName + '&theID=' + settings.theID;
        
        $.ajax({
            dataType: 'json',
            url: getTemplateObjectAction,
            success: function(response){
                var theDomElement = response.theDomElement;
                var theDomElementClass = response.theDomElementClass;
                var theDomElementID = response.theDomElementID;
                var htmlURL = appserverURL + 'getContainerWithTemplate?theName=' + templateName + '&theID=' + theID + '&idXTLiteContainer=' + idContainer + '&languageCode=' + languageCode;
                if (batch) 
                    htmlURL = htmlURL + "&batch=" + batch;
                
                var selector = theDomElement ? theDomElement : '';
                selector = theDomElementClass ? selector + '.' + theDomElementClass : selector + '';
                selector = theDomElementID ? selector + '#' + theDomElementID : selector + '';
                
                $.ajax({
                    url: htmlURL,
                    success: function(htmlresponse){
                        //alert(selector);
                        if (selector) {
                            if ($(selector)) {
                                $(selector).html(htmlresponse);
                                if (settings.callback) 
                                    settings.callback();
                            }
                            else {
                                alert('manca il container del template');
                            }
                        }
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown){
                        $(selector).html('<div class="error">Si &egrave; verificato un errore.</div>');
                    }
                });
            }
        });
    }
    else {
        //alert('ID mancante');
    }
}


function formValueForKey(key, request){
	if(request==undefined || request==null || request.length<0) request = new String(window.location);
	try {
		var queryString = request.replace(/^[^\?]+\??/, '');
        var params = parseQuery(queryString);
        try {
            var value = params[key];
			if(value.length>0) return value;
        } 
        catch (e2) {
        	
		}
    } 
    catch (e1) {
    }
	return null;
}


function parseQuery(query){
    var Params = {};
    if (!query) {
        return Params;
    }// return empty object
    var Pairs = query.split(/[;&]/);
    for (var i = 0; i < Pairs.length; i++) {
        var KeyVal = Pairs[i].split('=');
        if (!KeyVal || KeyVal.length != 2) {
            continue;
        }
        var key = unescape(KeyVal[0]);
        var val = unescape(KeyVal[1]);
        val = val.replace(/\+/g, ' ');
        Params[key] = val;
    }
    return Params;
}



function loadjscssfile(filename, filetype){
    if (filetype == "js") { //if filename is a external JavaScript file
        var fileref = document.createElement('script')
        fileref.setAttribute("type", "text/javascript")
        fileref.setAttribute("src", filename)
    }
    else 
        if (filetype == "css") { //if filename is an external CSS file
            var fileref = document.createElement("link")
            fileref.setAttribute("rel", "stylesheet")
            fileref.setAttribute("type", "text/css")
            fileref.setAttribute("href", filename)
        }
    if (typeof fileref != "undefined") 
        document.getElementsByTagName("head")[0].appendChild(fileref)
}
