redux={}; redux.enabled=true; redux.layer={}; redux.event={};

function rxurl(v) {	

	// strip http:domain if exists and from same domain
	var test=window.location.protocol + '//' + document.domain + '/';
	if (v.substring(0,test.length) == test) {
		v=v.substring(test.length,v.length);

	}

	switch (v.substring(0,1))
	{
		case '/': v=v.substring(1,v.length); break;
		case '?': return (redux.page.url.split('?')[0] + v); break;
	} 

	var tmp=v.split('?')[0].split('.');
	switch (tmp[tmp.length-1].substring(0,3)) 
	{
		case "cfm": break;
		default: return false; break;
	}
	
	switch (v.split(':')[0]) 
	{
		case "javascript": return false; break;
		case "mailto": return false; break;
		case "file": return false; break;
		case "https": if (window.location.protocol == 'http:') {return false} else {break};
		case "http": break;
		default: 
			return v;
			var u=redux.page.name.split("/");
			if (u.length>2) {
				u[u.length-1]=v;
				return u.join("/");
			} else {
				return v; 
			}
		break;
	}
	
	return v;
}

function rxclick(o) {
	var v = rxurl($(o).get('href'));
	if (!v) return true;

	var chash=v.split('#');
	if (chash.length > 1) {
		redux.loadAsset([{url:'/inc/redux/26/moo/scroller.js',type:'JS',title:'moo_scroller',id:'moo_scroller'}]);
		redux.useAsset({asset:'moo_scroller',run:function()
		{
			var element=$(document).getElement('a[name='+chash[1]+']');
			var myFx = new Fx.Scroll(window).start(0,element.getPosition().y);
		}}); 
		return false;
	}

	redux.get(v,true);
	return false;
}

function rxsubmit(o) {
	var out=new Array(); var an={}; var a=new Array();

	var x1=$(o).getElements('select,input,textarea');
	$each(x1,function(o){
		if (o.name) {
			
			if (['checkbox'].contains(o.type) && !o.getProperty('checked')) return;
			if (['radio'].contains(o.type) && !o.getProperty('checked')) return;
			if (['select-one'].contains(o.type) || ['select-multiple'].contains(o.type) ){
				if (!an[o.name]) an[o.name] = [];
				
				var co=an[o.name];
				
				for(i=0;i<o.length;i++){
					if(o[i].selected){
						co.push(encodeURIComponent(o[i].value));
						
					}
				}
				
				return;
			}
			if (['submit'].contains(o.type) || ['image'].contains(o.type)) {
				if (o.getProperty('clicked') != null) {
					if (!an[o.name]) an[o.name]=[];
					fv=encodeURIComponent(o.value);
					o.removeProperty('clicked');
				}
			} else {
				if (!an[o.name]) an[o.name]=[];
				//Check to see if there is a custom submit value (used by editors, etc).
				var fv=encodeURIComponent(o.submitValue?o.submitValue():o.get('value'));
			}
			if (fv) {var co=an[o.name]; co.push(fv);}
		}
	});
	
	
	
	for (var x in an) out.push(x+'='+an[x].join(","));
	var str=rxurl(o.get('action'));
	if (!str) return true;     
	
	if (o.get('method')=='get') { 
		redux.get(str+"?"+out.join("&"),true);
	} else {
		redux.get(str,true,out.join("&")); 
	}
	
	return false;
}

// Asset functions
redux.assets = {};
redux.useAsset = function(o) {
	if (!this.assets[o.asset]) this.assets[o.asset]={}; 
	if (this.assets[o.asset]) {
		var asset = this.assets[o.asset];
		if (asset.loaded) {
			o.run.call(redux)
		}
		else {
			if (!asset.queue) asset.queue = [];
			asset.queue.push(o.run);
			//if (window.console) console.debug('useasset!' + o.asset);
		}
		
	} else {
		//if (window.console) console.debug('cant find' + o.asset);
	}
}

redux.initAsset = function(a,u,t) {
	if (!this.assets[a]) this.assets[a]={}; 
	var asset=this.assets[a];
	asset.loaded=true;
	asset.url=u;
	asset.t=t;
	if (asset.queue) {
		for(i=0;i<asset.queue.length;i++) {
			asset.queue[i].call(window);
		}
		asset.queue=[];
	} 
}

redux.reloadAsset = function(a) {
	var asset=redux.assets[a];
	if (asset.t == 'JS') {
		new Asset.javascript(asset.url+'?'+(new Date().getTime()));
	} else {
		new Asset.css(asset.url+'?'+(new Date().getTime()));
	}
}

redux.loadAsset = function(r) {
	for(res=0; res<r.length; res++) {
		var c=r[res];
		if (c.type=='CSS') {
			var found=false;
			for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
				
				if (a.id) {
					var ida=a.id.split('-');
					if (ida.length==2) {
						if (c.title==ida[0]) {
							if (ida[1]==c.id) {
								if (!c.disabled) a.disabled=false; 
								found=true;
							} else {
								if (!c.disabled) a.disabled=true;
							}
						}
					}
				}
			}
			if (!found) {
				(function(url,id,title,disabled){
					var newlink = new Asset.css(url, {'id': title + '-' + id});
					newlink.disabled=((disabled)?true:false);
					redux.initAsset(id,url,'CSS');
				})(c.url,c.id,c.title,c.disabled);
			}
		}
		if (c.type=='JS') {
			if (!this.assets[c.id] || !this.assets[c.id].loaded) {
				if (!c.url){
					this.initAsset(c.id);
				} else {
					if (!this.assets[c.id]) this.assets[c.id]={};
					(function(url,id){
						new Asset.javascript(url, ({'onload': 
							function(){redux.initAsset(id,url,'JS');}
						}));
					})(c.url,c.id);
				}
			}
		}
	}
}

// LOAD IN PAGE, SECTIONAL OR GLOBAL CACHES
redux.loadCache = function(o) {
	if (!redux.pageCache) redux.pageCache=o;
} 

redux.clearObjects = function (o) {
	if (!redux.object) redux.object={};
	for(res=0; res<o.length; res++) {		
		var c=o[res]; var co=$(c.o);
		if (!c.hook && c.h && co ) co.empty();
	}
}

redux.setObjects = function (objs,page) {
	if (!this.object) this.object={};
	for(var res=0; res<objs.length; res++) {
		var c=objs[res];
		if (c.hook) {
			if (this[c.hook]) var hook=this[c.hook];
			if (window[c.hook]) var hook=window[c.hook];
			if (hook) c.vars?hook.call(this,c.o,c.h,c.vars):hook.call(this,c.o,c.h);
		} else {
			if (c.h) {
				if ($(c.o)) {(c.h!='')?$(c.o).set('html',c.h.stripScripts(true)):$(c.o).empty()};
			}
			if (!this.object[c.o]) this.object[c.o]={};
			if (!c.editname) {
				c.editname=''; c.edittype=''; c.editurl='';
			}
			this.object[c.o]=$merge(this.object[c.o],c);
		}
		if ($(c.o))	c.t==2?$(c.o).setProperty('page',page):$(c.o).removeProperty('page');	
	}
}

redux.load = function (o) {
	//if (o.name) redux.bundle=o;
	var prevsid=false||this.sid;
	var prevtid=false||this.tid;
	if (o.name) this.pagename=o.name;
	if (o.query) this.pagequery=o.query;
	if (o.uid) this.uid=o.uid;
	if (o.history) {
		
		this.sid=o.sid;
		this.tid=o.tid;
		this.tmpid=o.tmpid;
		this.page=o;
		
		historySet(o.url);
		if (o.title && document.title) document.title=o.title;	

		// run some events here		
		this.event.run.call(this, 'onbeforeload', 'page=' + o.name);
		//if (prevsid != this.sid && prevsid != false) this.event.run.call(this, 'onsection', 'section=' + this.sid);
		if (prevtid && prevtid != this.tid) this.event.run.call(this, 'onlayout', this.tid);
	}		
	if (o.onstart) o.onstart.call(this);
	if (o.resource) this.loadAsset(o.resource);
	if (o.object) this.setObjects(o.object,o.name);
	
	this.set();
	if (window.urchinTracker) {urchinTracker(getPage())}
	if (o.onload) o.onload.call(this);
	
	if (window.admin_init) { 
		admin_init(o.object);
		if (o.resp || o.resp==0) {
			if (this.timer) {
				var t=new Date().getTime()-this.timer;
				$('pageInfo').innerHTML='Page Load ' + o.resp + '/' + t + 'ms';}
			else {
				$('pageInfo').innerHTML='CGI:' + o.resp + 'ms';
			}
		}
	}
	if (o.history) {
		$(document.body).getElements('.currenturl').removeClass('currenturl');
		$(document.body).getElements('a[href$=' + o.url + ']').addClass('currenturl');		
		this.event.run.call(this,'onload','page='+o.name);
	} 
	this.event.run.call(this,'oncomplete','page='+o.name);
}

redux.set = function () {
	if (!redux.enabled) return;
	uRevert=null;
	var rxlinks=document.links;	
	for (var i=0; i<rxlinks.length; i++) {
		if (!rxlinks[i].onclick && !rxlinks[i].target) {
			rxlinks[i].onclick=function() {return rxclick(this)}
		}
	}
	var i=0;
	$each($$('form'),function(ol){
		if (!ol.getProperty("target") && !ol.get('rx_proc')) {
			$each($$('input',ol),function(input){
				if((['submit'].contains(input.type) || ['image'].contains(input.type)) && input.getProperty('name')) {
					
					if (input.onclick && !input.oldclick) input.oldclick=input.onclick;
					input.onclick=function() {
						this.setProperty('clicked',true);
						if (this.oldclick) this.oldclick();
					}
					if (!input.oldclick) input.oldclick=function(){};
				}
			});
			ol.addEvent('submit', function(event){return rxsubmit(this)});
			ol.set('rx_proc',true);
		}
	});
}

redux.get = function(n,h,v) {
	var pass2=''; var pass1='';
	for (var x in redux.object)
	{
		
		var tmp=redux.object[x];
		if (tmp.t==1) {pass1+=x+';'}
		if (tmp.t==2) {pass2+=x+';'}
	}
	
	var rxt=redux.sid+':'+redux.tid+':'+((pass1=='')?0:pass1)+':'+((pass2=='')?0:pass2);	
	var src = '/' + n + ((n.indexOf("?") > 0)?'&':'?')  + 'rxtype=' + rxt + '&ts=' + (new Date().getTime()) + '-' + redux.uid;


	var x=n.indexOf('form=true');
	if (x > 0) n=n.substring(0,x-1);
	redux.timer=new Date().getTime();
	if(this.tracker) this.tracker.pushPacket('p',(v)?n+'?'+v:n);
	window.location.loading=h?n:false;
	this.event.run.call(this,'onget','page='+src);
	
	if(redux.pageCache && redux.pageCache[n.toLowerCase()]) {
		redux.load(redux.pageCache[n.toLowerCase()]);
		return;
	}	
	
	var myXHR = new Request({url:src, method: (v)?'post':'get', onSuccess: function(r){ 
		redux.load(JSON.decode(r));
	}}).send(v);	
	
}

/// EVENT FUNCTIONS

// ex - redux.event("onsection",function() {alert(1)},false);
redux.event.create = function(e,f,once) {
	var ev={};
	
	ev.func=f; ev.once=once;
	if (!redux.event[e]) redux.event[e]=[];
	redux.event[e].push(ev);
}

redux.event.run = function(e,v) {
	if (this.event[e]) {
		var o=this.event[e];
		var el=o.length;
		for(var i=0; i<el; i++) {
			if (o[i].id) {
				if ($(o[i].id)) {
					var out=o[i].url+((v)?'&'+v:'');
					this.get(out);
				}
			} else {
				if (o[i].func) {
					o[i].func.call(this,v);
					if (o[i].once) o[i]={};
				}
			}
		}
	}
}      

redux.resolve = function (packet) {	
	if (packet.MESSAGES) {
		for (var x in packet.MESSAGES) {
			var message=packet.MESSAGES[x];
			hook=redux[message.HOOK];
			if (!hook) hook=window[message.HOOK];
			if (hook) message.VAR?hook.call(redux,message.VAR):hook.call(redux);
		}
	}
}

function historySet(n) {
	if (window.poll) clearTimeout(poll);
	if (window.location.loading) window.location.hash=getPage();
	
	if (Browser.Engine.trident) {
		if (window.location.hash=='' || window.location.loading) historyAdd(getPage());
	} else {
		poll=setTimeout('rPoll()',300);
	}
}

function historyResolve(hist) {
	if (getPage()!=hist) {
		redux.get(hist,false);
		window.location.hash=hist;
	}
}

function historyAdd(hist) {
	window.historyObj.document.write("<html><body><script>parent.historyResolve('"+hist+"');<\/script></body></html>");
	window.historyObj.document.close();	
	return void(0);
}

function getPath() {
	var rPath=window.location.pathname; 
	var rSearch=window.location.search; 
	rPath=rPath.substring(1,rPath.length); 
	var rPathArray=rPath.split('/');
	if (rPathArray[rPathArray.length-1]=='') {
		rPath=rPath+'index.cfm';
	}	
	if (rSearch!='') rPath=rPath+rSearch;
	return rPath
}
function getPage() {var rPage=redux.page.url; if (redux.page.query) rPage=rPage+'?'+redux.page.query; return rPage}


function rPoll() {	
	if (!redux.enabled) return;
	var rHash=window.location.hash; rHash=unescape(rHash.substring(1,rHash.length));
	var rPage=unescape(getPage()); var rPath=unescape(getPath());
	//console.debug(rPage + ' page - (' + rHash + ') hash','redir!');
	if (rHash!=rPage && rHash!='') {
		redux.get(rHash,false);
	} else {
		//console.debug(rPath + ' Path - ' + rPage + 'Page','redir!');
		if (rHash=='' && rPath!=rPage) {
			redux.get(rPath,false);
		} else {
			poll=setTimeout('rPoll()',300);
		}
	}
}

redux.cache=[];
redux.saveCache = function(h) {
	this.cache.push(h);
	return this.cache.length-1;
}
redux.getCache = function(id) {return this.cache[id]}
redux.displayCache = function(id) {
	redux.createWindow('debug_detail',this.cache[id],{scrollbars:true,title:'Debug Window',height:400,width:700});
}

function qdebug(text,name) {
	var dstruct={};
	dstruct.desc=text;
	dstruct.name=name;
	debug('','Trace',dstruct);
}

function debug(he,h,options) {
	var curtime = new Date();
	if (!options) options={};
	
	h = '<a onclick="redux.displayCache(' + redux.saveCache(h) + ')">' + (options.desc?options.desc:'Debug') + '</a>';
	h = '<div class="' + ((he)?'debug_error':'debug_date') + '">'+(curtime.getHours()<10?'0'+curtime.getHours():curtime.getHours()) + ':' + (curtime.getMinutes()<10?'0'+curtime.getMinutes():curtime.getMinutes()) + ':' + (curtime.getSeconds()<10?'0'+curtime.getSeconds():curtime.getSeconds()) + ' ' + (options.type?options.type:'Debug') + '</div><div class="debug_item">' + h + '</div>';
	
	var o=$('window_debug_content');
	if (!o) {
		redux.createWindow('debug',h,{title:'Debug Window'});
	} else {
		var el=new Element('div');
		el.set('html',h);
		el.inject(o,'top');
	}
}

function moresize(id,draw) {
	
	var ci = MochaUI.Windows.instances.get(id);
	var cw = ci.contentWrapperEl;
	var ssize = cw.getScrollSize();
	if (ci.options.width < ssize.x) {
		ci.options.width=ssize.x;
		cw.setStyle('width', ssize.x);
	}
	var wsize = $(window).getSize();
	var ssize = cw.getScrollSize();
	if (wsize.y<ssize.y) ci.options.y=20;
	if (ci.options.height < ssize.y) {
		ci.options.height=ssize.y;
		cw.setStyle('height', ssize.y);
	}	
	if (draw) {ci.drawWindow($(id));}
}

redux.createWindow = function(id,h,opt) {
	if (!opt) var opt={};
	if (!opt.scrollbars) opt.scrollbars=false;
	opt.restrict=false;
	opt.id=(opt.id)?"window_"+opt.id:"window_"+id;

	if (!opt.title) {
		// Yank h1 and set title
		var xp=new RegExp("<\s*h1[^>]*>(.*?)<\s*/\s*h1>","g");
		var ret=xp.exec(h);
		if (ret) {if (ret.length > 1) opt.title=ret[1]; h=h.replace(ret[0],"");}
	}

	if (kamiro.plugins) {
		//redux.useAsset({asset:'windows',run:function()
		//{		
		
			if (h.replace(/\n/g,"").replace(/\t/g,"").length == 0 || opt.close) {
				kamiro.window.close(opt.id);
				return;
			}
			opt.width = (opt.width || 'auto');
			opt.height = (opt.height || 'auto');
			opt.html = h;
			opt.styles = {
				backgroundColor: (opt.contentBgColor || 'white')
			}
			kamiro.window.open(opt);
		
		//}});
		return;
		
	}	
	
	if (opt.overwrite) {
		MochaUI.closeWindow($(opt.id));
	}	
	if ((h.length==0 || opt.close) && (window.MochaUI)) {		
		if (!$(opt.id+'_content')) return;
		MochaUI.closeWindow($(opt.id)); 
		return;
	}	
	
	// check to see if window exists
	var o=$(opt.id+'_content');
	if (o) {
		o.set('html',h); 
		$(opt.id+'_title').set('html',opt.title);
		if (!opt.width || !opt.height) moresize(opt.id,true);
		return;
	}
	if (!opt.padding) opt.padding={top:0,right:0,bottom:0,left:0};
	opt.content=h;
	if (!opt.width || !opt.height) opt.onContentLoaded=function(o){moresize(o.id)}	
	if (!redux.assets.mocha.loaded) {	
		opt.tempObj = new Element('div',{
			id:opt.id+'_temp',
			html:opt.content,
			styles:{display:'none'}
		}).inject('worker');
	}
	redux.useAsset({asset:'mocha',run:function()
		{
			if (opt.tempObj) {
				opt.content=$(opt.tempObj).get('html');
				$(opt.tempObj).dispose();
			}
			if (!window.modalset) {
				MochaUI.underlayInitialize();
				window.modalset=true;	
			}
			(opt.type=='modal' || opt.type=='modal2')?new MUI.Modal(opt):new MochaUI.Window(opt);
			var o=$(opt.id+'_content');
			o.setProperty("page",redux.pagename);
			if (window.attachContext && o) attachContext(o,id.split('-')[0]);
			redux.set();
		}});
}

function oModeless(el,c,w) {
	redux.createWindow(el,c,w);
}
function oModal(el,c,w) {
	if (!w) {w={}; w.type='modal';}
	redux.createWindow(el,c,w);
}


/* SET UP SUCKERFISH MOUSEOVERS FOR IE6 AND HISTORY OBJECT */
if (Browser.Engine.trident) {
	document.write('<iframe src="/inc/redux/blank.html" style="width:10px; height:10px; position:absolute; left:0px; visibility:hidden;" id="historyObj" name="historyObj"></iframe>');
	if (Browser.Engine.version < 6) { 
		var sfEls = document.getElementsByTagName("LI");
		for (var i=0; i<sfEls.length; i++) {
			$(sfEls[i]).addEvent('mouseenter', function() {
				this.className+=" sfhover";
			});
			$(sfEls[i]).addEvent('mouseleave', function() {this.className=this.className.replace(new RegExp(" sfhover\\b"), "");});
		}
	}
	var sffEls = document.getElementsByTagName("INPUT");
		for (var j=0; j<sffEls.length; j++){
			$(sffEls[j]).addEvent('focus', function() {this.className+=" sffocus";});
			$(sffEls[j]).addEvent('blur', function() {this.className=this.className.replace(new RegExp(" sffocus\\b"), "");});
		}
}

/* IF PAGE IS LOADING FOR THE FIRST TIME AND THERE IS A HASH THEN RELOCATE TO HASH LOCATION */
if (window.location.hash!="") {
	var tmp=window.location.href.split('#');
	redux.event.create("oncomplete",function() {
		redux.get(unescape(tmp[1]),false);
	},true);
}

/* CATCH AND DONT RUN DOCUMENT.WRITES */
document.write=function(o) {}
window.alert=function(o) {}


function enableCollapsibles(s){
	//list of target elements
	var list = $$('div.collapse, li.collapsor ul');
	//list elements to be clicked on
	var headings = $$('div.collapser, li.collapsor');
	
		
		headings.addClass('collapsible');
		
	// checking for alternative open states
	if (s != undefined) {
		var start = s;
	}
	else {
		var start = 0
	}
	//array to store all of the collapsibles
	var collapsibles = new Array();
	
	var collapsible = new Accordion(headings, list, {
		onActive: function(toggler, element){
			toggler.addClass('map_detail_show_more');
		},
		onBackground: function(toggler, element){
			toggler.removeClass('map_detail_show_more');
		},
		alwaysHide: true,
		display: start
	});
	
	//$each(list, function(value, key){
	 //  	collapsible.detach(list[key]);
	//});

	headings.removeClass('collapsor');
	//headings.removeClass('collapser');

}

if (window.File) {
	var sendFile = 10240000; // maximum allowed file size
	                        // should be smaller or equal to the size accepted in the server for each file	
	
	sendFile = (function(toString, maxSize){
	    
		var isFunction = function(Function){return  toString.call(Function) === "[object Function]";},
	        split = "onabort.onerror.onloadstart.onprogress".split("."),
	        length = split.length;
	    return  function(handler){
	        if(maxSize && maxSize < handler.file.fileSize){
	            if(isFunction(handler.onerror))
	                handler.onerror();
	            return;
	        };
	        var xhr = new XMLHttpRequest,
	            upload = xhr.upload;
	        for(var
	            xhr = new XMLHttpRequest,
	            upload = xhr.upload,
	            i = 0;
	            i < length;
	            i++
	        )
	            upload[split[i]] = (function(event){
	                return  function(rpe){
	                    if(isFunction(handler[event]))
	                        handler[event].call(handler, rpe, xhr);
	                };
	            })(split[i]);
	        upload.onload = function(rpe){
	            if(handler.onreadystatechange === false){
	                if(isFunction(handler.onload))
	                    handler.onload(rpe, xhr);
	            } else {
	                setTimeout(function(){
	                    if(xhr.readyState === 4){
	                        if(isFunction(handler.onload))
	                            handler.onload(rpe, xhr);
	                    } else
	                        setTimeout(arguments.callee, 15);
	                }, 15);
	            }
	        };
	
		   
	        xhr.open("POST", handler.uri, true);
			xhr.setRequestHeader("Content-Type", "application/octet-stream");
	        xhr.setRequestHeader("Content-File-Name", handler.file.fileName);
			
			xhr.send(handler.file);		
			
			return handler;
			
	    };
	})(Object.prototype.toString, sendFile);	
	
	
	window.sendMultipleFiles = function(handler){
	    
		var length = handler.files.length,
	        i = 0,
	        onload = handler.onload;
		
		handler.uri = "/redir.cfm?control=file.html5Upload&UPATH=%2F" + handler.where;
	    handler.current = 0;
	    handler.total = 0;
	    handler.sent = 0;
	    while(handler.current < length)
	        handler.total += handler.files[handler.current++].fileSize;
	    handler.current = 0;
	    if(length){
	        handler.file = handler.files[handler.current];
	        sendFile(handler).onload = function(rpe, xhr){
	            if(++handler.current < length){
	                handler.sent += handler.files[handler.current - 1].fileSize;
	                handler.file = handler.files[handler.current];
	                sendFile(handler).onload = arguments.callee;
	            } else if(onload) {
	                handler.onload = onload;
	                handler.onload(rpe, xhr);
	            }
	        };
	    };
	    return  handler;
	};
	
	window.uploadPathToAS = function(path){
			inputfiles.upth = path;
		}
	
		//setup upload input and progbar etc.
	window.initFile=function(fid,startpath){
		
		var inputfiles = new Element('input', {
			'id': 'inputFiles'+fid,
			'type': 'file',
			'multiple': 'true'
		});
		inputfiles.addEvent('change', function(){
			
			sendMultipleFiles({
	                
	                    // list of files to upload
	                    files:this.files,
	                    //load files where
	                    where:startpath,
	                    // clear the container 
	                    onloadstart:function(){
	                       
	                        $$('.prog_holder').setStyle('display', 'block');
							$('subspan'+fid).setStyle('width', '0px');
							$('barspan'+fid).setStyle('width','0px');
	                    },
	                    
	                    // do something during upload ...
	                    onprogress:function(rpe){
	                      
	                        var stot = ((rpe.loaded * 200 / rpe.total) >> 0) + "px";
	                        var btot = (((this.sent + rpe.loaded) * 200 / this.total) >> 0) + "px";
							$('subspan'+fid).setStyle('width', stot);
							$('barspan'+fid).setStyle('width',btot);
	                    },
	                    
	                    // fired when last file has been uploaded
	                    onload:function(rpe, xhr){
	                        
	                        $('subspan'+fid).setStyle('width', "281px");
							$('barspan'+fid).setStyle('width',"281px");
	                        // enable the input again
	                        $('inputFiles'+fid).removeProperty("disabled");
							uploadCompleteData(fid,xhr);
							
							$('inputFiles'+fid).value = "";
	                    },
	                    
	                    // if something is wrong ... (from native instance or because of size)
	                    onerror:function(){
	                        
	                        // enable the input again
	                        $('inputFiles'+fid).removeProperty("disabled");
	                    }
	                });
			
		});
		inputfiles.upth = startpath;
		
		$('upload_btn_'+fid+'').adopt(inputfiles);
		$('upload_btn_'+fid+'').setStyle('padding-top', '4px');
		$('upload_btn_'+fid+'').setStyle('width', '230px');
		subdiv = new Element('div', {
			'styles': {
				'height': '19px',
				'width': '281px',
				'border': '1px solid #aaa',
				'margin-bottom': '5px'
			}
		});
		subspan = new Element('span', {
			'id': 'subspan'+fid,
			'styles': {
				'display': 'block',
				'height': '19px',
				'background': '#ccc'
			}
		});
		bardiv = new Element('div', {
			'styles': {
				'display': 'none',
				'height': '19px',
				'width': '200px',
				'border': '1px solid #aaa',
				'margin-bottom': '5px'
			}
		});
		barspan = new Element('span', {
			'id': 'barspan'+fid,
			'styles': {
				'display': 'none',
				'height': '19px',
				'background': '#ccc'
			}
		});
		sub = $('prog_holder_'+fid).adopt(subdiv.adopt(subspan));
		bar = $('prog_holder_'+fid).adopt(bardiv.adopt(barspan));
		$('progress_'+fid).setStyle('display', 'none');
		$('prog_holder_'+fid).setStyles({
			'border': 'none',
			'margin-left': '0px',
			'margin-top': '0px',
			'-webkit-border-radius': '0',
			'-moz-border-radius': '0'
		});
		
		
	}
	
	
	window.uploadCompleteData = function(fid,e){
			
			if(e.responseText == "false ") {
				alert('This file is not in an image format our system recognizes.  Please make sure you are saving your images for web in RGB format and not for print in CMYK.');
			}else{
				$('ufile'+fid).value = e.responseText.trim();
				$('ufile'+fid).setStyle('color','white');
				$('subspan'+fid).setStyle('background','green');
			}
			
			
		}
			

} else {
	/*** Flash Uploader Functions *********************************/
			
			window.httpError=function(){
				alert('httpError');
			}
			window.ioError=function(f){
				alert('ioError'+f);
				
			}
			window.securityError=function(){
				alert('security Error');
			}
			
			window.uploadPathToAS=function(obj,path){
				//obj.uploadPathToAS(path);
				Swiff.remote(obj.toElement(), 'uploadPathToAS',path);
			}
			
			window.uploadProgress = function(f,e){
				var progbar = 'progress';	
				$('progress_'+f).setStyle('width',Math.floor(e)+'%');
				
				
			}
			window.uploadStart = function(f,e){
				
				var fileinput = 'ufile'+f;
				$$('div.prog_holder').setStyle('display','block');	
				$('progress_'+f).setStyle('background-color','#ee0000');
				$('progress_'+f).setStyle('width',0+'%');
				
				$(fileinput).setProperty('disabled', 'disabled');
				console.debug(f);		
			
			}
			window.uploadComplete = function(f,e){
				
				var fileinput = 'src';
				var progbar = 'progress';
				$('progress_'+f).setStyle('width','100%');
				$('progress_'+f).setStyle('background-color','#00ee00');
					
				
			}
			window.uploadCompleteData = function(f,e){
				
				var fileinput = 'ufile'+f;
				if ($(fileinput)){
					if(e == "false ") {
						alert('This file is not in an image format our system recognizes.  Please make sure you are saving your images for web in RGB format and not for print in CMYK.');
					}else{
						$(fileinput).value = e;
					}
				} 
					
				
			}
		
			window.initFile = function(fid,path){
			
				/*********** End Flash uploader Functions *******************/
				
				var obj = new Swiff('/inc/redux/30/flash_upload/AS3_UploadField.swf', {
				    id: 'uloader'+fid,
				    container: 'upload_btn_'+fid,
				    width: 16,
				    height: 16,
				    params: {
				        
				    },
				    vars: {
				       cftoken: Cookie.read('CFTOKEN'),
				       cfid: Cookie.read('CFID'),
					   sessionParams: Cookie.read('SESSID'),
					   ffid: fid
					   
				    },
				    events: {
				        onLoad: function() {
				    	uploadPathToAS(obj,path);
				    	
				    	}
				    }
	
				});	
				
					
				
			}
			

}


enableCollapsibles(-1);

redux.loadAsset([
	{url:'/inc/redux/30/slimbox/slimbox.js',type:'JS',title:'Slimbox',id:'Slimbox'},
	{url:'/inc/redux/30/slimbox/css/slimbox.css',type:'CSS',title:'Slimbox_style',id:'Slimbox_style'}	
]);


