/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * Create a cookie with the given name and value and other optional parameters.
 *
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
 * @desc Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Create a session cookie.
 * @example $.cookie('the_cookie', null);
 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
 *       used when the cookie was set.
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */

/**
 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */

jQuery.cookie = function(name, value, options) {

//	console.log(name);
//	console.log(value);
//	console.log(options);



	if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';

        //console.log(path);
        //console.log(domain);
        //console.log(secure);

        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};




/**
* Lazy load for GoogleAPI
* Usage: $.googleMap.load({mapId : 'myMap'})
*
* @class googleMap
* @param {String} googkeKey -  klucz GoogleAPI unikalny dla kazdej domeny
* @param {String} loadCallback - funkcja callbackowa wykonywana po zaladowaniu GoogleAPI
* @param {String} mapId - id kontenera dla mapy, jezeli nie zostanie podany, jako kontener bedzie szukany id=map
* @param {Boolean} showLoader - pokazywanie loadera podczas ladowania GoogleAPI,
*                              jezeli zostaje uzyta customowa funkcja loadCallback, nalezy pamietac o usunieciu loadera
* @param {Map} mapData - zestaw danych do wyswietlenia defaultowej mapy
*                      * center - pozycja srodka mapy w postaci stringa
*                      * zoom - poczatkowy zoom mapy
*
* Copyright (c) 2009 Artegence sp. z o.o.
*/

jQuery.googleMap = {
   defaults : {
       googleKey : "",
       loadCallback : '',
       mapId: 'map',
       showLoader : true,
       mapData : {
               center : "51,21",
               zoom: 12
       }
   },

   load : function(options){
       var o = jQuery.googleMap.defaults;
       options = jQuery.extend(o, options);

       if (typeof GMap2 != 'function') {

           /*set custom Callback*/
           if(options.loadCallback != ''){
                   jQuery.googleMap.loadCallback = options.loadCallback;
           }

           if(o.showLoader){
                   jQuery('#' + o.mapId).css('position','relative').append('<div class="loader"><img src="loader.gif"></div>')
           }

           var $script = jQuery('<script type="text/javascript"></script>').attr('src',
                   'http://maps.google.com/maps?file=api&v=2.x&key='+options.googleKey+'&c&async=2&callback=jQuery.googleMap.loadCallback'
           );
           jQuery('body').append($script);

           if(jQuery('#' + o.mapId).children('img').length > 0){
                   o.mapData = jQuery(this).find('img').attr('src').replace(/.*\?/,'').toHash('&','=');
           }
       }
       else {
    	   //let custom callback be executed
    	   if(typeof options.loadCallback == 'function'){
               options.loadCallback();
    	   }
       }
   },

   /*default callback places map same as static image*/
   loadCallback: function(){
           var o = jQuery.googleMap.defaults;
           var map = new GMap2(document.getElementById(o.mapId));
           map.setCenter(new GLatLng.fromUrlValue(o.mapData.center), parseInt(o.mapData.zoom));
   }
}

/**
* Executing external script
*/

jQuery.executeScript = function(url, async, callback){
	$.ajax({
		type: 'get',
		async: false,
		dataType : 'text',
		url: url,
		success:function(data){
			eval(data);
			if(typeof callback == "function"){
				callback();
			}
		}
	});
}

