/**
* Fix Paths
* @class jkiFixPaths
* @author jki
*/
var jkiFixPaths = new Class
(/** @lends jkiFixPaths.prototype */{
	
	name: 'jkiPaths',
	/**
	* @constructor
	* @member jkiFixPaths
	*/
	initialize: function()
	{
		
		this.activeLanguages = [];
		this.cacheMode = (jkiDevMode) ? '?noCache='+$time() : '';
		
	},
	
	/**
	* @member jkiFixPaths
	*/
	makeLanguageObj: function()
	{
		
		this.activeLanguages = [];
		$each(jkiSession.vars.activeLanguages,function(item){
			
			this.activeLanguages.push(item.languageCode);
			
		}.bind(this));
		
	},
	
	/**
	* @member jkiFixPaths
	*/
	doSrc: function(node,attr,attVal,admin)
	{
		
		if (attVal.substring(0,4) == 'http') return false;
		(attVal.contains('userFiles')) ?
			this.fixUserFiles(node,attVal,attr):
			this.fixHTML(node,attVal,attr,admin);
		
	},
	
	/**
	* @member jkiFixPaths
	*/
	doTemp: function(node,attr,attVal,temp)
	{
		
		if ($chk(node.getParent('head'))) return false;
		if (attVal == 'javascript:;' && temp != 'javascript:;') return false;
		node.set('temp',this.tempUserFiles(attVal));
		if (attr == 'href') node.set(attr,'javascript:;');
		
	},
	
	/**
	* @member jkiFixPaths
	*/
	fixAll: function(root,admin)
	{

		root.getElements('*').each(function(node){

			var tag = node.get('tag');
			var src = node.get('src');
			var attr = ($chk(src)) ? 'src' : 'href';
			var attVal = ($chk(src)) ? src : node.get(attr);
			if (!$chk(attVal)) return false;
			var originalAttVal = attVal;
			if (tag != 'a')  // if a tag it could be an inserted offsite link with query string values that should stay
			{
				
				attVal = attVal.split('?');
				attVal = attVal[0];
				
			}
			if (attr == 'src') this.doSrc(node,attr,attVal,admin);
			if (attr == 'href' || tag == 'img')
					this.doTemp(node,attr,attVal,node.get('temp'));

		}.bind(this));
		
	},
	
	/**
	* @member jkiFixPaths
	*/
	fixHTML: function(node,src,attr,admin)
	{
		
		node.set(attr,this.pathHTML(src,admin));
		
	},
	
	/**
	* @member jkiFixPaths
	*/
	fixUserFiles: function(node,src,attr)
	{
	
		node.set(attr,this.pathUserFiles(src));
		
	},
	
	/**
	* @member jkiFixPaths
	*/
	cleanPath: function(path,prefix,suffix)
	{
		
		var tempPath = path.split('?');
		if (!prefix) var prefix = [];
		if (!suffix) var suffix = [];
		var parts = tempPath[0].replace(jkiPath,'').split('/');
		var returns = [];
		var excludeItems = [];
		excludeItems.extend(this.activeLanguages);
		excludeItems.extend(['','..']);
		$each(parts,function(item){
			
			if (excludeItems.indexOf(item) < 0)
				returns.push(item);
			
		}.bind(this));
		prefix.extend(returns);
		prefix.extend(suffix);
		prefix.erase('');
		return prefix.join('/');
		
	},
	
	/**
	* @member jkiFixPaths
	*/
	pathHTML: function(src,admin)
	{
		
		var templatePackage = (admin) ?
			jkiSession.vars.lang.view.template:
			jkiSession.vars.lang.edit.template;
			
		var langCode = (admin) ?
			jkiSession.vars.lang.view.code:
			jkiSession.vars.lang.edit.code;
			
		var newSrc = (src.contains('javascript/')) ?
			jkiIncludePath+this.cleanPath(src)+this.cacheMode:
			jkiPath+this.cleanPath(src,['html',langCode,templatePackage])+this.cacheMode;
		
		return newSrc;
		
	},
	
	/**
	* @member jkiFixPaths
	*/
	pathUserFiles: function(src)
	{
		
		var newSrc = jkiPath+this.cleanPath(src)+this.cacheMode;
		return newSrc.replace('userFiles','userFiles/'+jkiSession.vars.lang.edit.code);
		
	},
	
	/**
	* @member jkiFixPaths
	*/
	tempUserFiles: function(src)
	{
		
		if (!src.contains('userFiles')) return src;
		return this.cleanPath(src);
		
	}
	
});
var fixPaths = new jkiFixPaths();
