jQuery.cookie = function(name, value, 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' : '';
        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;
    }
};
(function ($) {
    var m = {
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        },
        s = {
            'array': function (x) {
                var a = ['['], b, f, i, l = x.length, v;
                for (i = 0; i < l; i += 1) {
                    v = x[i];
                    f = s[typeof v];
                    if (f) {
                        v = f(v);
                        if (typeof v == 'string') {
                            if (b) {
                                a[a.length] = ',';
                            }
                            a[a.length] = v;
                            b = true;
                        }
                    }
                }
                a[a.length] = ']';
                return a.join('');
            },
            'boolean': function (x) {
                return String(x);
            },
            'null': function (x) {
                return "null";
            },
            'number': function (x) {
                return isFinite(x) ? String(x) : 'null';
            },
            'object': function (x) {
                if (x) {
                    if (x instanceof Array) {
                        return s.array(x);
                    }
                    var a = ['{'], b, f, i, v;
                    for (i in x) {
                        v = x[i];
                        f = s[typeof v];
                        if (f) {
                            v = f(v);
                            if (typeof v == 'string') {
                                if (b) {
                                    a[a.length] = ',';
                                }
                                a.push(s.string(i), ':', v);
                                b = true;
                            }
                        }
                    }
                    a[a.length] = '}';
                    return a.join('');
                }
                return 'null';
            },
            'string': function (x) {
                if (/["\\\x00-\x1f]/.test(x)) {
                    x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
                        var c = m[b];
                        if (c) {
                            return c;
                        }
                        c = b.charCodeAt();
                        return '\\u00' +
                            Math.floor(c / 16).toString(16) +
                            (c % 16).toString(16);
                    });
                }
                return '"' + x + '"';
            }
        };

	$.toJSON = function(v) {
		var f = isNaN(v) ? s[typeof v] : s['number'];
		if (f) return f(v);
	};
	
	$.parseJSON = function(v, safe) {
		if (safe === undefined) safe = $.parseJSON.safe;
		if (safe && !/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(v))
			return undefined;
		return eval('('+v+')');
	};
	
	$.parseJSON.safe = false;

})(jQuery);

var fuser = {
		 _cookieName:"fncseg",
		 _cookieOptions: {expires:365,path:"/"},
		 _defaultData:{current:{last:null,type:"p"}},
		 _data: this._defaultData,
		 encstr:function (str)
		 {
		 	xor_key=7;
		 	var the_res="";
		 	for(i=0;i<str.length;++i)
		 	{
		 		the_res+=String.fromCharCode(xor_key^str.charCodeAt(i));
		 	}
		 	return the_res;
		 },
		 decstr:function (str) 
		 {
			
				var xor_key=7;
				var the_res="";
				for(i=0;i<str.length;i++)
				{
					the_res+=String.fromCharCode(xor_key^str.charCodeAt(i));
				}
		 return the_res;	
		 },


         serialize : function (_obj)  
         {		
			  return $.toJSON(_obj);
        	   
			  
        	},
        	getCookie: function ()
        	{
				cookie=jQuery.cookie(this._cookieName);
				
				if (cookie!=null)
				{
					this._data=eval("("+this.decstr(cookie)+")");
				}
        	},
        	setCookie: function ()
        	{
        		jQuery.cookie(this._cookieName,this.encstr(this.serialize(this._data)),this._cookieOptions);
        		
        	},
		   setCustomer:function (ms)
		   {
        		date = new Date();
        		this.getCookie();
        		this._data.current={type:"c", last: date.getTime(), m:ms, session:date.getTime()};
        		this.setCookie();
		   },
		   setProspect:function (ms)
		   {
        		date = new Date();
        		this.getCookie();
        		this._data.current={type:"p", last: date.getTime(), m:ms};
        		this.setCookie();
		   },
		   setPreCustomer:function (p)
		   {
        		date = new Date();
        		this.getCookie();
        		this._data.current={type:"pc", last: date.getTime(), pak:p};
        		this.setCookie();
		   },
		   hasSession:function()
		   {
			   if (this._data.current.session==null)
			   {
				   return false;
			   }
			   date= new Date();
			   if (date.getTime() < this._data.current.session + 600000 ) 
			   {
				   return true;
			   }
			   return false;
		   },
		   clearSession: function()
		   {
			   this._data.current.session=null;
			   this.setCookie();
		   },
		   checkCustomer: function()
		   {
			   this.getCookie();
			   if (this._data==null) this._data=this._defaultData;
			   if (this._data.current.last==null || this._data.current.last==undefined)
			   {   
				   
				   date = new Date();
				   this._data.current.last=date.getTime();
				   
				   if (window.location.pathname.lastIndexOf("/selfcare/")!=-1)
				   {
					   this._data.current.session=date.getTime();
				   }
				   
				   this.setCookie();
			   }
			   this.trackCustomer();
			   return this._data.current;
		   },
		   trackCustomer: function ()
		   {
			  
			   if (typeof ntptAddPair == "function")
			   {	   
			   ntptAddPair( "type",  this._data.current.type);
			   ntptEventTag( "ev=segment" );
			   }
		   },
		   renderSegments: function () 
		   {
			   jQuery(".segment").hide().removeClass("visible");
			  
			   switch(this._data.current.type) {
			   	   case "c": 
			   		   jQuery(".segment.customer").show().addClass("visible");
			   		   if (this.hasSession())
			   		   {
			   			jQuery(".segment.session").show().addClass("visible"); 
			   			jQuery(".segment.nosession").hide().removeClass("visible"); 
			   		   }
			   	   break;
			   	   case "pc": jQuery(".segment.pre-customer").show().addClass("visible"); break;
			   	   case "p": jQuery(".segment.prospect").show().addClass("visible"); break;
			   	   
			   }   
			   },
		   init: function ()
		   {
				   
				   this.checkCustomer();
				   this.renderSegments();
				   
		   },
		   clean: function ()
		   {
			   
			   jQuery.cookie(this._cookieName,null,this._cookieOptions);
			   this._data=this._defaultData;
		   }
			   
			   
		   
		
};

fuser._data=fuser._defaultData;
