var d = document;
var flv = parseFloat(deconcept.SWFObjectUtil.getPlayerVersion().major + "." + deconcept.SWFObjectUtil.getPlayerVersion().minor);
var	errors = false;
var	test = false;
var htmlFlag = false;
var	readyLoad = false;

var browserObj = new Object();
browserObj.field = '';
browserObj.url = '';
browserObj.type = '';
browserObj.win = new Object();
//var browserLayer = '';
//var browserFlag = false;

var MSIE = false;
if (navigator.appName.indexOf("Microsoft Internet")!==-1)  MSIE = true;

// === For Html editor communications

function init(){

	if (errors==false && test==false) {
		$('#console').focus();
	}

}

function drawComplete(id,type,txt,msg,label) {
	var html = "";
	if (typeof(label)=='undefined') label="";

	if (txt!='') html+=txt;
	if (label!='') label=label+" ";
	
	if (type==1) {
		html+=label+"<"+"span class='pass'>"+msg+"<"+"/span>";
	}
	if (type==2) {
		html+=label+"<"+"span class='error'>"+msg+"<"+"/span>";
		errors = true;
	}
	if (type==3) {
		html+="label+<"+"span class='warn'>"+msg+"<"+"/span>";
	}
	$('#'+id).html(html);
}

function testStart() {
/*
	$("#tests").animate({ 
		opacity: 0.2
	}, 1 );
*/
}

function testJavascript(id) {
	m = "Version "+jsv;
	if (jsv >= 1.2) {
		drawComplete(id,1,m,'Pass')
	} else {
		drawComplete(id,2,m,'To old!')
	}
}

function testCookies(id,cfid) {
	var val="";
	var nameEQ="CFID=";
	var ca=d.cookie.split(';');
	var c="";
	for(var i=0;i < ca.length;i++) {
		c = ca[i];
		while (c.charAt(0)==' ') c=c.substring(1,c.length);
		if (c.indexOf(nameEQ)==0) val=c.substring(nameEQ.length,c.length);
	}
	m = "Coldfusion CFID = "+cfid;
	if (cfid=='' || val=='') {
		if (cfid=='') {
			drawComplete(id,3,m,'Session ID not set');
		}
		if (val=='') {
			drawComplete(id,3,m,'Cookie not set.');
		}
	} else {
		drawComplete(id,1,m,'Pass')
	}	
}

function testFlash(id) {
	if (flv >= 8) {
		drawComplete(id,1,"Version "+flv,'Pass');
	} else {
		drawComplete(id,2,"Version "+flv,"To old! (Flash 8 or higher is required.\nPlease download from <"+"a href='http://www.adobe.com/go/getflashplayer/'>www.adobe.com<"+"/a>)");
	}
}

function testBrowser(id1,id2) {
	var BrowserDetect = {
		init: function () {
			this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
			this.version = this.searchVersion(navigator.userAgent)
				|| this.searchVersion(navigator.appVersion)
				|| "an unknown version";
			this.OS = this.searchString(this.dataOS) || "an unknown OS";
		},
		searchString: function (data) {
			for (var i=0;i<data.length;i++)	{
				var dataString = data[i].string;
				var dataProp = data[i].prop;
				this.versionSearchString = data[i].versionSearch || data[i].identity;
				if (dataString) {
					if (dataString.indexOf(data[i].subString) != -1)
						return data[i].identity;
				}
				else if (dataProp)
					return data[i].identity;
			}
		},
		searchVersion: function (dataString) {
			var index = dataString.indexOf(this.versionSearchString);
			if (index == -1) return;
			return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
		},
		dataBrowser: [
			{ 	string: navigator.userAgent,
				subString: "OmniWeb",
				versionSearch: "OmniWeb/",
				identity: "OmniWeb"
			},
			{
				string: navigator.vendor,
				subString: "Apple",
				identity: "Safari"
			},
			{
				prop: window.opera,
				identity: "Opera"
			},
			{
				string: navigator.vendor,
				subString: "iCab",
				identity: "iCab"
			},
			{
				string: navigator.vendor,
				subString: "KDE",
				identity: "Konqueror"
			},
			{
				string: navigator.userAgent,
				subString: "Firefox",
				identity: "Firefox"
			},
			{
				string: navigator.vendor,
				subString: "Camino",
				identity: "Camino"
			},
			{		// for newer Netscapes (6+)
				string: navigator.userAgent,
				subString: "Netscape",
				identity: "Netscape"
			},
			{
				string: navigator.userAgent,
				subString: "MSIE",
				identity: "Microsoft Internet Explorer",
				versionSearch: "MSIE"
			},
			{
				string: navigator.userAgent,
				subString: "Gecko",
				identity: "Mozilla",
				versionSearch: "rv"
			},
			{ 		// for older Netscapes (4-)
				string: navigator.userAgent,
				subString: "Mozilla",
				identity: "Netscape",
				versionSearch: "Mozilla"
			}
		],
		dataOS : [
			{
				string: navigator.platform,
				subString: "Win",
				identity: "Windows"
			},
			{
				string: navigator.platform,
				subString: "Mac",
				identity: "Mac"
			},
			{
				string: navigator.platform,
				subString: "Linux",
				identity: "Linux"
			}
		]
	
	};
	BrowserDetect.init();
	
	m1 = BrowserDetect.browser+" "+BrowserDetect.version;
	m2 = BrowserDetect.OS;
	
	drawComplete(id2,1,m2,'Pass');

	if (BrowserDetect.browser == "Microsoft Internet Explorer") {
		if (BrowserDetect.version >= 6) {
			drawComplete(id1,1,m1,'Pass');
		} else {
			drawComplete(id1,2,m1,"To old! ("+BrowserDetect.browser+" 6 or higher is required.\nPlease download from <"+"a href='http://www.microsoft.com/ie/'>www.microsoft.com<"+"/a>)");
		}
	}
	else if (BrowserDetect.browser == "Firefox") {
		if (BrowserDetect.version >= 2) {
			drawComplete(id1,1,m1,'Pass');
		} else {
			drawComplete(id1,2,m1,"To old! ("+BrowserDetect.browser+" 2 or higher is required.\nPlease download from <"+"a href='http://www.mozilla.com/'>www.mozilla.com<"+"/a>)");
		}
	}
	else if (BrowserDetect.browser == "Safari") {
		if (BrowserDetect.version >= 400) {
			drawComplete(id1,1,m1,'Pass');
		} else {
			drawComplete(id1,2,m1,"To old! ("+BrowserDetect.browser+"'s latest version is required.\nPlease download from <"+"a href='http://www.apple.com/'>www.apple.com<"+"/a>)");
		}
	}
	else {
		drawComplete(id1,3,m1,"Not supported! (Please download from <"+"a href='http://www.microsoft.com/ie/'>www.microsoft.com<"+"/a>)");
	}
}

function testApplication(id1,id2) {
	if (company=='' && location.pathname!='/') {
		$.ajax({
			type: "GET",
			url: "/application.xml",
			success: function(data, textStatus){
				drawComplete(id1,1,'','Pass');
				try {
					var xmlObj = data.documentElement;
					company = xmlObj.getAttribute("company");
					if (company==null || typeof(company)!='string') company='';
					drawComplete(id2,1,'','Pass ('+company+')');
				} catch(err) {
					drawComplete(id2,3,'','Could not parse company attribute.');
				}
				readyLoad = true;
			},
			error: function(data, textStatus, errorThrown) {
				drawComplete(id1,3,'','Unable to load XML');
				readyLoad = true;
			},
			dataType: 'xml'
		});
	} else {
		if (company=='') {
			drawComplete(id1,1,'','Skipped');
		} else {
			drawComplete(id1,1,'Company = '+company,'');
		}
		readyLoad = true;
	}
}

var curid = "";

function drawFlash(id) {
	if (curid==""&&id!="") curid=id;
	if (curid!=""&&id=="") id=curid;
//alert('drawFlash('+id+') errors['+errors+']');

	if (readyLoad == false) {
		drawComplete(id,1,'Waiting to load...','');
		setTimeout("drawFlash('')", 500);
	} else {
		$("#loading").fadeOut('normal');
	
		if (flv >= 8) {
			if (errors == false) {
				var so = new SWFObject(consoleSwf, "console", "100%", "100%", "8");
				if (company!='') so.addVariable("company", company);
				so.addParam("smode", "noscale");
				so.addParam("menu", "false");
				so.addParam("allowScriptAccess", "sameDomain");
				so.write('flash');
				drawComplete(id,1,'','Pass');
				setTimeout("drawDone('')", 500);
			} else {
				drawComplete(id,2,'','Draw flash error');
				drawDone('');
			}
		} else {
			drawComplete(id,2,'','Flash not supported');
			drawDone('');
		}
	}
}

function drawDone() {
	if (errors==true) {
		$('#flash').html("<h1>Forefront Error Report<"+"/h1>");
		$("#tests").animate({opacity: 1}, 1000 );
	} else {
		//$("#tests").css('display','none'); 
		if (test==false) {
			$('#tests').fadeOut('slow');
		}
	}
}

function html_entity_decode(str) {
  var ta=document.createElement("textarea");
  ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
  return ta.value;
}



// === TinyMCE

function setEditorHtml(data, x, y){
	try {
		if (data=='null') data = '';
		data = data.replace(/\r\n/g, "\r");
		data = data.replace(/\n/g, "\r");
	
		var ed = tinyMCE.get('htmlArea');
		ed.setContent(data); // Send form data to tinyMCE
	
		htmlFlag = true;
		setHtmlEditorPosition(x,y);
	} catch(err) {
		alert(err);
	}
}

function updateHtmlText(done, cancel) {
	var ed = tinyMCE.get('htmlArea');

	data = ed.getContent();
	// remove tinyMCE CDATA tags
	data = data.replace(/\>\/\/ \<\!\[CDATA\[/g,">");
	data = data.replace(/\/\/ \]\]\>\<\//g,"</");

	// special character conversion for french (http://www.w3schools.com/tags/ref_entities.asp)
	document.getElementById('console').updateHtmlText(data, done, cancel); // Send text to flash
	hideHtmlEditor();
}

function setHtmlEditorPosition(x, y){
	if (htmlFlag) {
		$('#html').css('left',(Number(x) + 8).toString()+'px');
		$('#html').css('top',(Number(y) + 36).toString()+'px');
	}
}

function hideHtmlEditor(){
	if (htmlFlag == true) {
		htmlFlag = false;
		$('#html').css('top','-1000px');
	}
}

// === For File browser

function openFileBrowser(field, url, type, win){
	browserObj.field = field;
	browserObj.url = url;
	browserObj.type = type;
	browserObj.win = win;
	if (location.pathname.substr(1,10)=='forefront/') {
		winBrowser = window.open('/forefront/filebrowser.cfm', 'winFileBrowser', 'width=725,height=530,toolbar=no,scrollbars=no,resizeable=no');
	} else {
		winBrowser = window.open('/filebrowser.cfm', 'winFileBrowser', 'width=725,height=530,toolbar=no,scrollbars=no,resizeable=no');
	}
/*
	if (location.pathname.substr(1,10)=='forefront/') {
		winBrowser = window.open('/forefront/filebrowser.cfm?incontext=true', 'winFileBrowser', 'width=725,height=530,toolbar=no,scrollbars=no,resizeable=no');
	} else {
		winBrowser = window.open('/filebrowser.cfm', 'winFileBrowser', 'width=725,height=530,toolbar=no,scrollbars=no,resizeable=no');
	}
*/
	winBrowser.focus();
}

function setSelectedFile(path){
	var field = browserObj.win.document.getElementById(browserObj.field);
	field.value = path;
}


/* ------ Test -------- */

function showTest(testObj,type) {
	var msg = "";
	var types = type.split(",");

	for(i in testObj) {
		show = false;
		if (type=="") {
			show = true;
		} else {
			for(t in types) {
				if (i.indexOf(types[t])>-1) {
					show = true;
					break;
				}
			}
		}
		//if (i!='outerHTML'&&i!='innerHTML'&&i!='outerText'&&i!='innerText'&& (i.indexOf('eight')>-1||i.indexOf('idth')>-1)) show = true;

		if (show == true) {
			obj = testObj[i];
			if (typeof(obj)=='string' || typeof(obj)=='boolean' || typeof(obj)=='number') {
				msg += i+"=["+obj+"]\n";
			} else {
				msg += i+"=["+typeof(obj)+"]\n";
			}
/*
			if (typeof(obj)=='object') {
				msg += i+"=["+obj+"]\n";
			}
*/
		}
	}
	alert(msg);
}

