//Global variable
var szDelimiter1 = String.fromCharCode(28);
var szDelimiter2 = String.fromCharCode(29);
var szDelimiter3 = String.fromCharCode(30);

var bFormPosted = false;

function updateCheckBoxValue(szName,bChecked) {
	var oInput = document.getElementById(szName);
	if (bChecked) {
		oInput.value = 1;
	} else {
		oInput.value = 0;
	}
}	

function updateRadioListValue(szName,szValue) {
	var oInput = document.getElementById(szName);
	oInput.value = szValue;
}	

function updateCheckBoxListValue(szName,szValue,bChecked) {
	var oInput = document.getElementById(szName);
	var aValue = new Array();
	if (oInput.value.length > 0) {
		aValue = oInput.value.split(",");
	}
	if (bChecked) {
		//Append to selected value;
		aValue.push(szValue);
	} else {
		for (var i=0; i < aValue.length; i++) {
			if (aValue[i] == szValue) {
				aValue.splice(i,1);
			}
		}
	}
	
	oInput.value = aValue.join(",");
}

function deleteFile(szID,szUUID) {
	var objField = document.getElementById(szID + "_DeleteUUIDs");
	var objItem = document.getElementById(szUUID);
	var aValue = new Array();
	
	if (confirm("Are you sure you want to delete this file?")) {
	
		if (objItem != null) {
			objItem.style.display = "none";
		}	
	
		if (objField != null) {
			if (objField.value.length > 0) {
				aValue = objField.value.split(",");
			}				
			aValue.push(szUUID);					
			objField.value = aValue.join(",");
		}
	}
}

function uploadFile(szID,bSingle,szUUID,szFilename) {
	var objField = document.getElementById(szID + "_NewUUIDs");
	var aValue = new Array();
	var szInnerHTML = '<li class="fileUploadField" id="' + szUUID + '"><a href="download.cfm?File=' + szUUID + '" target="_top">' + szFilename + '<a> [<a href="##" onclick="deleteFile(' + "'" + szID + "','" + szUUID + "'" + '); return false;">Delete</a>] </li>';
	var objFileList = document.getElementById(szID + "_FileList");

	if (objField != null) {
		if (bSingle) {
			objField.value = szUUID;
		} else {
			if (objField.value.length > 0) {
				aValue = objField.value.split(",");
			}				
			aValue.push(szUUID);					
			objField.value = aValue.join(",");
		}
	}

	if (objFileList != null) {
		if (bSingle) {
			objFileList.innerHTML = szInnerHTML;
		} else {
			objFileList.innerHTML = objFileList.innerHTML + szInnerHTML;
		}
	}
}

function deleteImage(szID,szUUID) {
	var objField = document.getElementById(szID + "_DeleteUUIDs");
	var objItem = document.getElementById(szUUID);
	var aValue = new Array();
	
	if (confirm("Are you sure you want to delete this file?")) {
	
		if (objItem != null) {
			objItem.style.display = "none";
		}	
	
		if (objField != null) {
			if (objField.value.length > 0) {
				aValue = objField.value.split(",");
			}				
			aValue.push(szUUID);					
			objField.value = aValue.join(",");
		}
	}
}

function uploadImage(szID,bSingle,szUUID,szFileUUID,szFilename,szThumbFile,szDimention,szSize,dtCreated) {
	var objField = document.getElementById(szID + "_NewUUIDs");
	var aValue = new Array();
	var aInnerHTML = new Array();
	var objFileList = document.getElementById(szID + "_ImageList");

	aInnerHTML.push('<li id="');
	aInnerHTML.push(szUUID);
	aInnerHTML.push('">');

	aInnerHTML.push('<div class="w100px left">');
	aInnerHTML.push('<img src="getImage.cfm?Image=');
	aInnerHTML.push(szThumbFile);
	aInnerHTML.push('" alt="');
	aInnerHTML.push(szFilename);
	aInnerHTML.push('">');
	aInnerHTML.push('</div>');

	aInnerHTML.push('<div class="w150px left"><a href="download.cfm?File=');
	aInnerHTML.push(szFileUUID);
	aInnerHTML.push('" target="_top">');
	aInnerHTML.push(szFilename);
	aInnerHTML.push('</a></div>');
	
	aInnerHTML.push('<div class="w100px left">');
	aInnerHTML.push(dtCreated);
	aInnerHTML.push('</div>');

	aInnerHTML.push('<div class="w100px left">');
	aInnerHTML.push(szSize);
	aInnerHTML.push('</div>');

	aInnerHTML.push('<div class="w100px left">');
	aInnerHTML.push(szDimention);
	aInnerHTML.push('</div>');
	
	aInnerHTML.push('<div class="w50px left"><a href="#" onclick="deleteImage(');
	aInnerHTML.push("'" + szID + "','" + szUUID + "'");
	aInnerHTML.push('); return false;">Delete</a></div><div class="clear"></div>');
	
	aInnerHTML.push('</li>');
	
	if (objField != null) {
		if (bSingle) {
			objField.value = szUUID;
		} else {
			if (objField.value.length > 0) {
				aValue = objField.value.split(",");
			}				
			aValue.push(szUUID);					
			objField.value = aValue.join(",");
		}
	}

	if (objFileList != null) {
		if (bSingle) {
			objFileList.innerHTML = aInnerHTML.join("");
		} else {
			objFileList.innerHTML = objFileList.innerHTML + aInnerHTML.join("");
		}
	}

}

function doOnLoad() {
	if (typeof(customOnLoad) != "undefined") {
		customOnLoad();
	}
}

function isChild(s,d) {
	while(s) {
		if (s==d) return true;
		s=s.parentNode;
	}
	return false;
}


function validate(szData,szValidate) {
	switch (szValidate) {
		case 'noblanks':
			if (szData.length > 0) {
				szData = szData.replace(/^\s+/,"").replace(/\s+$/,"");
				if (szData.length == 0) return false;
			}
			break;
		case 'email':
			szData = szData.replace(/^\s+/,"").replace(/\s+$/,"");
			return /^[a-zA-Z_0-9-'\+~]+(\.[a-zA-Z_0-9-'\+~]+)*@([a-zA-Z_0-9-]+\.)+[a-zA-Z]{2,7}$/.test(szData);
			break;
		case 'integer':
//			szData	=	szData.replace(/^\s+/,"").replace(/\s+$/,"");
			szData	=	szData.replace(/[$£¥€,~+]?/g,"");
			var szValidChar1 = "+-0123456789";
			var szValidChar2 = "0123456789";

			if (szValidChar1.indexOf(szData.charAt(0)) < 0) return false;
			for ( var iChar=1; iChar < szData.length; iChar++) {
				if (szValidChar2.indexOf(szData.charAt(iChar)) < 0) return false;
			}
			break;
		case 'float':
//			szData	=	szData.replace(/^\s+/,"").replace(/\s+$/,"");
			szData	=	szData.replace(/[$£¥€,~+]?/g,"");
			var szValidChar1 = ".+-0123456789";
			var szValidChar2 = ".0123456789";
			if (szValidChar1.indexOf(szData.charAt(0)) < 0) return false;
			var iDecimalPoint = 0;
			for ( var iChar=1; iChar < szData.length; iChar++) {
				if (szData.charAt(iChar) == ".") iDecimalPoint++;
				if (szValidChar2.indexOf(szData.charAt(iChar)) < 0) return false;
				if (iDecimalPoint > 1) return false;
			}
			break;
		}
	return true;
}

function doPost(szForm,szURL,szTarget,bRequireFormCheck,bRequireConfirmation,szConfirmationMessage) {
	var oForm = document.getElementById(szForm);
	
	var bError = false;
	var bProceed = false;
	var iElement = 0;
	var oElement = null;
	var oElement2 = null;

	var szMessage = "";
	var szThisMessage = "";
	var szData = "";
	var oEditor = null;
	var objMSSelected = {"COLUMNS":["ID","SZNAME"],"DATA":[]};

	oForm.action = szURL;
	if (szTarget != "") oForm.target = szTarget;

	if (bFormPosted) {
		alert("Your request is being processed, please wait.");
		return false;
	}
	
	if (bRequireFormCheck) {

		if (typeof(preFormCheck) != "undefined") preFormCheck();

		for (iElement=0; iElement < objFormField.length; iElement++) {
			bError = false;
			
			oElement = document.getElementById(objFormField[iElement].szName);
			
			if (oElement != null && oElement != undefined) {

				switch (objFormField[iElement].szType) {
					case 'Text-RichText':
						var oEditor = FCKeditorAPI.GetInstance(objFormField[iElement].szName) ;
						oElement.value = oEditor.GetData();
					break;
				}
				
				if (oElement.getAttribute("required") == 'true' || oElement.getAttribute("required") == '1') {
					switch (objFormField[iElement].szType.toLowerCase()) {
						case 'text-text':
						case 'text-password':
						case 'text-textarea':
							var szData = oElement.value.replace(/^\s+/,"").replace(/\s+$/,"");
							if (szData.length == 0) bError = true;
							break;
						case 'text-hidden':
							break;
						case 'text-richtext':
							break;
						case 'checkbox':
							if (oElement.value != "1") bError = true;
							break;
						case 'calendar':
							if (oElement.value.length == 0) bError = true;
							break;
						case 'fileupload-browse':
							if (oElement.value.length == 0) bError = true;
							break;
						case 'fileUpload-single':
							oElement2 = document.getElementById(objFormField[iElement].szName + "_NewUUIDs");
							if (oElement.value.length == 0 && oElement2.value.length == 0) bError = true;
							break;
						case 'fileUpload-multiple':
							oElement2 = document.getElementById(objFormField[iElement].szName + "_NewUUIDs");
							if (oElement.value.length == 0 && oElement2.value.length == 0) bError = true;
							break;
						case 'selector-dropdownlist':
							if (oElement.value == 0) bError = true;
							break;
						case 'selector-radiolist':
							if (oElement.value.length == 0) bError = true;
							break;
						case 'selector-checkboxlist':
							if (oElement.value.length == 0) bError = true;
							break;
						case 'selector-multiselect':
							objMSSelected = ColdFusion.JSON.decode(oElement.value);
							if (objMSSelected != null && objMSSelected.DATA.length == 0) {
								 bError = true;
							}
							break;
					}
				}
				
				if (!bError && typeof(oElement.getAttribute("validate")) != "undefined" && oElement.value.length != 0) {
					switch (objFormField[iElement].szType.toLowerCase()) {
						case 'text-text':
						case 'text-password':
						case 'text-textarea':
							bError = !validate(oElement.value,oElement.getAttribute("validate"));
							break;
						case 'text-hidden':
							break;
						case 'text-richtext':
							break;
					}
				}

				
			}
			
			if (bError) {		
				if (oElement.getAttribute("message") != undefined) {
					szMessage = szMessage + oElement.getAttribute("message") + "\n";
				} else {
					szMessage = szMessage + oElement.name + " is required" + "\n";
				}
			}
			
		} // End For
		
	
	} 

	if (szMessage.length > 0) {
		alert(szMessage);
	} else {
		bProceed = true;
		if (bRequireFormCheck) {
			if (typeof(customFormCheck) != "undefined") {
				if (!customFormCheck()) {
					bProceed = false;
				}
			}
		} else {
			if (bRequireConfirmation) {
				bProceed = confirm(szConfirmationMessage);
			}
		}
		
		if (bProceed) {
			oForm.submit();
			bFormPosted = true;
		}
	}	
	
	return false;
}

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: "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"
		}
	]

};
