if(typeof Symbiotic == "undefined") {
	Symbiotic = {};
}

if(typeof Symbiotic.Jettic == "undefined") {
	Symbiotic.Jettic = {};
}

function symbioticCookieGetCookies() {
	
	var cookies = document.cookie.split(";");
	
	for(var i = 0; i < cookies.length; i++) {
		cookies[i] = cookies[i].replace(/^\s+|\s+$/g, '') ;
	}
	
	return cookies;
}

function symbioticCookieSetCookie(name, value, expiryInMs, path, domain, secure) {
	
	var date = new Date();
	date.setTime(date.getTime() + expiryInMs);
	
	var params = new Array();
	
	params.push(name + "=" + value);
	params.push("expires=" + date.toUTCString());
	
	if(typeof path != "undefined" && path != null)
		params.push("path=" + path);
	
	if(typeof domain != "undefined" && domain != null)
		params.push("domain=" + domain);
	
	if(typeof secure != "undefined")
		params.push("secure");
	
	document.cookie = params.join("; ");
}

function symbioticCookieGetCookie(name) {
	
	var cookies = symbioticCookieGetCookies();
	
	for(var i = 0; i < cookies.length; i++) {
		
		var index = -1;
		
		if((index = cookies[i].indexOf(name + "=")) == 0) {
			return cookies[i].substring(name.length + 1);
		}
	}
	
	return null;
}

Symbiotic.Jettic = {
	url: null,
	domainId: null,
	sessionId: null,
	waitForInvitationTimeout: null,
	invitationResultTypes: {
		STARTCHAT: 8,
		NOCHAT: 4
	}
};

function symbioticJetticStartSession() {
	
	var sessionId = symbioticCookieGetCookie("SymbioticJetticSession");
	
	if(sessionId == null) {
		
		var chars = "0123456789abcdefghiklmnopqrstuvwxyz";
		
		var length = 36;
		var sessionId = '';
		
		for (var i = 0; i < length; i++) {
			var rnum = Math.floor(Math.random() * chars.length);
			sessionId += chars.substring(rnum, rnum + 1);
		}
	}
	
	symbioticCookieSetCookie("SymbioticJetticSession", sessionId, 600000); // 10 min
	Symbiotic.Jettic.sessionId = sessionId;
	
	// refresh session
	setTimeout('symbioticJetticStartSession()', 300000); // 5 min
}

function symbioticJetticIsReady() {
	return Symbiotic.Jettic.sessionId != null;
}

function symbioticJetticPing() {
	var l = escape(window.location.href).replace(/\//g, "_J2F_");
	var url = Symbiotic.Jettic.url + "/visitor/ping/domain/" + Symbiotic.Jettic.domainId + "/session/" + Symbiotic.Jettic.sessionId + "/location/" + l + "/time/" + (new Date()).getTime();
	
	var i = new Image();
	i.src = url;
}

function symbioticJetticWaitForInvitation() {
	var url = Symbiotic.Jettic.url + "/visitor/checkforinvitation/domain/" + Symbiotic.Jettic.domainId + "/session/" + Symbiotic.Jettic.sessionId + "/time/" + (new Date()).getTime();
	
	var i = new Image();
	i.src = url;
	
	i.onload = function() {
		var w = this.width;
		
		if(w == Symbiotic.Jettic.invitationResultTypes.STARTCHAT){
			symbioticJetticDisplayInvitation();
		}
		else
			setTimeout('symbioticJetticWaitForInvitation()', 5000);
	}
}

function symbioticJetticDisplayInvitation() {
	var invitation = document.createElement('div');
	invitation.setAttribute('id', 'symbioticJetticInvitationForm');
	invitation.style.display = 'none';
	
	document.body.appendChild(invitation);
	
	invitation.style.position = 'absolute';
	invitation.style.top = (document.all ? document.documentElement.scrollTop : window.pageYOffset) + 100 + 'px';
	invitation.style.left = '-350px';
	
	var inner = "";
	inner += '<img src="' + Symbiotic.Jettic.url + '/public/invitation.jpg"/>';
	inner += '<a href="javascript:void(0)" onclick="symbioticJetticRejectInvitation(); this.parentNode.parentNode.removeChild(this.parentNode);" style="position: absolute; top: 6px; right: 6px; width: 28px; height: 28px;"><img style="width: 100%; height: 100%; border: 0;" src="' + Symbiotic.Jettic.url + '/public/px.gif"/></a>';
	inner += '<a href="javascript:void(0)" onclick="symbioticJetticOpenChatWindow(); this.parentNode.parentNode.removeChild(this.parentNode);" style="position: absolute; top: 100px; left: 160px; width: 170px; height: 35px;"><img style="width: 100%; height: 100%; border: 0;" src="' + Symbiotic.Jettic.url + '/public/px.gif"/></a>';
	inner += '<a href="http://www.jettic.com" target="_blank" style="position: absolute; top: 100px; left: 20px; width: 100px; height: 35px;"><img style="width: 100%; height: 100%; border: 0;" src="' + Symbiotic.Jettic.url + '/public/px.gif"/></a>';
	
	invitation.innerHTML = inner;
	invitation.style.display = 'block';
	
	symbioticJetticAnimateInvitation();
}

function symbioticJetticAnimateInvitation() {
	
	var left = parseInt(document.getElementById('symbioticJetticInvitationForm').style.left) + 15;
	
	document.getElementById('symbioticJetticInvitationForm').style.left = left + 'px';
	
	if(left < screen.width / 2 - 175)
		setTimeout("symbioticJetticAnimateInvitation()", 10);
}

function symbioticJetticOpenChatWindow() {
	window.open(Symbiotic.Jettic.url + '/chat/start/domain/' + Symbiotic.Jettic.domainId + '/session/' + Symbiotic.Jettic.sessionId, 'JetticChatWindow', 'menubar=no, toolbar=no, location=no, scrollbars=yes, resizable=no, status=no, width=640, height=390');
}

function symbioticJetticRejectInvitation() {
	var url = Symbiotic.Jettic.url + "/visitor/rejectinvitation/domain/" + Symbiotic.Jettic.domainId + "/session/" + Symbiotic.Jettic.sessionId + "/time/" + (new Date()).getTime();
	
	var i = new Image();
	i.src = url;
}

function symbioticJetticStart() {	
	symbioticJetticStartSession();
	symbioticJetticStartListening();
}

Symbiotic.Jettic.numOfButtonChecks = 0;

function symbioticJetticStartListening() {
	if(Symbiotic.Jettic.numOfButtonChecks == 4) {
		return;
	}
	
	if(symbioticJetticCheckForButton()) {
		symbioticJetticPing();
		symbioticJetticWaitForInvitation();
	}
	else {
		setTimeout("symbioticJetticStartListening()", 100);
	}
}

function symbioticJetticCheckForButton() {
	Symbiotic.Jettic.numOfButtonChecks++;
	return document.getElementById("__jetticButton") ? true : false;
}

if (window.attachEvent) {
	window.attachEvent("onload", symbioticJetticStart);
} else if(window.addEventListener) {
	window.addEventListener("load", symbioticJetticStart, false);
}
else {
	Symbiotic.windowOnLoadFnc = window.onload;
	window.onload = function() {
		if(typeof Symbiotic.windowOnLoadFnc == "function")
			Symbiotic.windowOnLoadFnc();
		
		symbioticJetticStart();
	}
}