var jkInclude = function(script)
{

	var path = jkiPath + 'javascript/' + script + '.js';
	if ($$('script[src='+path+']').length > 0) return false;
	var tag = new Element('script');
	tag.set('type','text/javascript');
	var cache =  (jkiDevMode) ? '?noCache='+$time() : '';
	tag.set('src',path+cache);
	$$('head').grab(tag);

};

var isCmd = function(e)
{

	return	((e.meta && Browser.Platform.name == 'mac') ||
		(e.control && Browser.Platform.name == 'win'))
		? true : false;

};

var jkiStart = new Class
({

	options:
	{

		deBug: jkiDeBug,
		url: jkiPath

	},

	initialize: function(options)
	{

		this.setOptions(options);
		this.currentPage = '';
		this.lastPage = '';
		this.loadAnew;
		this.vars = {

			'parent' : 0,
			'navTreeId' : 0,
			'entryPointId': 0,
			'loadPage': {},
			'activeLanguages' : {},
			'lang' : {
				
				'view' : {
					
					'id' : 30,
					'code' : 'en',
					'defaultLang' : 30,
					'defaultLangCode' : 'en',
					'template' : ''
					
				},
				'edit' : {
					
					'id' : 30,
					'code' : 'en',
					'template' : ''
					
				}
			},
			'pasteAction': false,
			'pasteNode': false,
			'pasteInput': false

		};
		this.getServerDeBug();
		var userTime = new Date();
		var offset = (userTime.getTimezoneOffset()/ 60)*-1;
		this.sendRequest('startData',offset,'startData');
		var checkIn = function(){
			
			this.sendRequest('checkSession',$time(),'checkSession');
			
		}.bind(this).periodical(30000);

	},
	
	setPathData: function(id,code,templatePackage)
	{
		
		this.vars.lang.edit.id = id;
		this.vars.lang.edit.code = code;
		this.vars.lang.edit.template = templatePackage;
		
	},

	deBug: function(data)
	{

		if (!this.options.deBug) return false;
		if (!$type(data)) return false;
		if (!window.console) return false;
		console.log(data);

	},

	getServerDeBug: function()
	{

		
		if (!this.options.deBug) return false;
		var deBugRequest = new Request({

			method: 'post',
			url: this.options.url+'jsonFeed/deBugData/'+this.lsString(),
			onSuccess: function(returns){
				
				var data = JSON.decode(returns);
				if ($defined(data.jkiDeBug))
					this.deBug(data.jkiDeBug);

			}.bind(this)

		}).send('do=deBugData&data=debug');

	},
	
	lsString: function()
	{
		// create query string variables to attach - if lang is default don't attach the lang=
		var lang = (this.getQueryVariable('lang') != '') ? this.getQueryVariable('lang') : '';
		var string = (lang == '' || lang == this.vars.lang.view.defaultLangCode) ?
			'?id=' + this.sessString() :
			'?lang=' + lang + '&id='+this.sessString();
			
		return string;

	},
	
	sessString: function()
	{
		
		return this.getQueryVariable('id');

	},
	
	getQueryVariable: function (variable) 
	{
	
	  	var query = window.location.search.substring(1);
	  	var vars = query.split("&");
	  	
	  	for (var i=0;i<vars.length;i++) 
	  	{
	  		
	  		var pair = vars[i].split("=");
	  		if (pair[0] == variable) return pair[1];
	
	  	}
	  	return '';
	},
      	
	encodeData: function(data)
	{
		
		var string = JSON.encode(data);
		string = string.replace(/&/g,'jkiAMP;');
		string = string.replace(/\+/g,'jkiPLUS;');
		string = string.replace(/\.\.\./g,'jkiELPS;');
		return string;
		
	},

	sendRequest: function(com,items,api)
	{

		this.deBug('sending...');
		var jkiRequest = new Request({

			method: 'post',
			url: this.options.url+'jsonFeed/'+api+'/'+this.lsString(),
			onSuccess: function(returns){

				this.deBug('received...');
				if (this.options.deBug) this.getServerDeBug();
				this.processReturn(JSON.decode(returns));

			}.bind(this)

		}).send('do='+com+'&data='+this.encodeData(items));

	},

	processReturn: function(data)
	{

		if ($type(data) != 'object') return false;
		switch(data.package)
		{

			case 'error':
				this.userPop(data);
				break;
				
			case 'startData':
				this.vars.lang.view.id = data.languageId;
				this.vars.lang.view.code = data.languageCode;
				this.vars.lang.view.template = data.template;
				this.vars.lang.view.defaultLang = data.defaultCode;
				this.vars.activeLanguages = data.activeLanguages;
				fixPaths.makeLanguageObj();
				break;
				
			default:
				eval(data.package+'.newData(data)');
				break;

		}

	},

	userPop: function(data)
	{

		var box = $('userPop').clone(true,true);
		box.getElement('h1').set('text',data.heading);
		box.getElement('p').set('text',data.message);
		box.getElement('a').set('text',data.linkText).set('href',data.link);
		box.injectAfter($('wrapper'));
		box.setStyles({

			'display': 'block'

		});

		var size = box.getSize();
		var width = size.x;
		var height = size.y;
		var size = window.getSize();
		var posX = (size.x - width) / 2;
		var posY = (size.y - height) / 2;

		box.setStyles({
			
			'left' : posX,
			'top' : posY
			
		});

		if ($chk(data.close))
		{
			box.getElement('button').addEvent('click',function(){
				box.destroy();
			});

			var dragBox = new Drag(box,{handle: box.getElement('div.userPopHead')});

		} else {

			box.getElement('button').destroy();

		}
		
		this.box = box;

	}
	
});

jkiStart.implement(new Options);

/*End of Class*/
var jkiSession =  new jkiStart();
jkInclude('jkiFixPaths');
