
	function de(elem)	{
		return document.getElementById(elem);
	}
	
	function doLogout()	{
		location.href = location.href+"?logout";
	}
	
	// JScript source code

	function isValid(formName)	{

		var isValid = true;
		var elem = de(formName).elements;

		var ul = document.createElement("ul");
		for(var i = 0; i < elem.length; i++)	{
			if(BrowserDetect.browser=="Explorer")	{
				if((elem[i].type!="hidden") && (elem[i].type!="file"))
					validationHandler(elem[i], isValid);
			}
			else	{
				if( (elem[i].attributes[0].nodeValue!="hidden") && (elem[i].attributes[0].nodeValue!="file") )
					validationHandler(elem[i], isValid);
			}
		}
	
		return isValid;
		
	}
	
	function validationHandler(elem, isValid) {
		
		if( elem.value == "" )	{
			isValid = false;
			elem.style.border = "1px solid #FF0000";
			elem.onclick = new Function("this.style.border = \"1px solid #C0C0C0\"");
		}
		return isValid;
		
	}
	
	function isPartNoValid()	{
		if( (de('hdnCatalogueID').value!="") && (de('hdnArea').value!="AddOld") )
			return true;
		var pNo = de('txtPartNo').value;
		var args = new Array();
		args[0] = pNo;
		var valid = AJAXPOSTSyncs('validatePartNo',args, "../");
		if(!valid)	{
			alert("Part Number Already used !");
			return false;
		}
		return true;		
	}
	
	function LoadOffer(ID)	{
		
		var args = new Array();
		args[0] = ID;
		var offer = AJAXPOSTSyncs('LoadOffer', args, "../../");
		offer = offer.parseJSON();
		de('txtTitle').value = offer['Title'];
		de('txtReduction').value = offer['Value'];
		de('selType').selectedIndex = (offer['Type']=="percent") ? OfferEnum.percent : OfferEnum.deduction;
		de('txtOffersDesc').value = offer['Desc'];
		de('hdnOfferID').value = offer['ID'];
		de('delOffer').style.display='inline';
		
	}
	
	function DeleteOffer()	{
		
		if(de('hdnOfferID').value!="")	{
			var args = new Array();
			args[0] = de('hdnOfferID').value;
			var isDeleted = AJAXPOSTSyncs('DeleteOffer', args, "../../");
			if(isDeleted=="NO")
				location.href=location.href;
			else
				alert('This has offer has items linked to it and can not be deleted');
		}
		else	{
			alert('No Offer Selected');
		}
		
	}
	
	function deleteCategory()	{
		
		if(de('hdnCategoryID').value!="")	{
			var args = new Array();
			args[0] = de('hdnCategoryID').value;
			var isDeleted = AJAXPOSTSyncs('DeleteCategory', args, "../../");
			if(isDeleted)
				location.href = location.href;
			else
				alert('This Category has assosiations and can not be deleted.')
		}
		else
			alert('No Category Selected');
		
	}
	
	function LoadCategory(ID)	{
		
		var args = new Array();
		args[0] = ID;
		var category = AJAXPOSTSyncs('LoadCategory', args, "../../");
		category = category.parseJSON();
		de('txtCategory').value = category['Title'];
		de('txtCategoryDesc').value = category['Desc'];
		de('delCategory').style.display = "inline";
		
	}
	
	// -----------------------------------------------------------------------
	// Browser detector
	// -----------------------------------------------------------------------
	
	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"
			}
		]
	};
	BrowserDetect.init();
	
	// returns document.getelementbyid
	function de(elem)	{
		return document.getElementById(elem);
	}
	
	////////////////////////////////////////////////////
	///////////   AJax Functions     ///////////////////
	////////////////////////////////////////////////////
	
	function getXMLHTTPObjects() {
		var obj;
		var msxmlhttp = new Array(
		'Msxml2.XMLHTTP.5.0',
		'Msxml2.XMLHTTP.4.0',
		'Msxml2.XMLHTTP.3.0',
		'Msxml2.XMLHTTP',
		'Microsoft.XMLHTTP');
		for (var i = 0; i < msxmlhttp.length; i++) {
			try {
				obj = new ActiveXObject(msxmlhttp[i]);
			} catch (e) {
				obj = null;
			}
		}
		if(!obj && typeof XMLHttpRequest != "undefined")
			obj = new XMLHttpRequest();
		return obj;
	}
	
	function AJAXPOSTs(operation, callback, args) {
		var postdata;
		var xmlObj;
		postdata = "operation=" + escape(operation);
		postdata += "&time=" + new Date().getTime();
		for (i = 0; i < args.length; i++) {
			postdata = postdata + "&args[]=" + escape(args[i]);
		}
		xmlObj = getXMLHTTPObjects();
		xmlObj.open("POST","../Javascript/ajaxhandler.php",true);
		xmlObj.setRequestHeader("Method", "POST ../Javascript/ajaxhandler.php HTTP/1.1");
		xmlObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlObj.onreadystatechange = function() {
			if (xmlObj.readyState != 4)
				return;
			var txt = xmlObj.responseText;
			if(callback!=null) callback(txt);
		}
		xmlObj.send(postdata);
		delete xmlObj;
		return true;
	}
	
	function AJAXPOSTSyncs(operation, args, path) {
		var postdata;
		var xmlObj;
		postdata = "operation=" + escape(operation);
		postdata += "&time=" + new Date().getTime();
		for (i = 0; i < args.length; i++) {
			postdata = postdata + "&args[]=" + escape(args[i]);
		}
		xmlObj = getXMLHTTPObjects();
		xmlObj.open("POST",path+"Javascript/ajaxhandler.php",false);
		xmlObj.setRequestHeader("Method", "POST "+path+"Javascript/ajaxhandler.php HTTP/1.1");
		xmlObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlObj.send(postdata);
		var result = xmlObj.responseText;
		delete xmlObj;
		return result;
	}
	
	/*	JSon Parse's	*/
	
	(function (s) {

	    var m = {
	        '\b': '\\b',
	        '\t': '\\t',
	        '\n': '\\n',
	        '\f': '\\f',
	        '\r': '\\r',
	        '"' : '\\"',
	        '\\': '\\\\'
	    };
	
	    s.parseJSON = function (filter) {
	        var j;
	
	        function walk(k, v) {
	            var i;
	            if (v && typeof v === 'object') {
	                for (i in v) {
	                    if (v.hasOwnProperty(i)) {
	                        v[i] = walk(i, v[i]);
	                    }
	                }
	            }
	            return filter(k, v);
	        }
	
	        if (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]+$/.test(this.
	                replace(/\\./g, '@').
	                replace(/"[^"\\\n\r]*"/g, ''))) {
	
	            j = eval('(' + this + ')');
	
	            return typeof filter === 'function' ? walk('', j) : j;
	        }
	
	        throw new SyntaxError('parseJSON');
	    };
	})(String.prototype);
	
	/* UD Functions	*/
	
	/*	Image Detect	*/
	function validateImage(imgSrc)
	{
		var img = document.createElement('img');
		img.src = imgSrc;
		var newImg = new Image();
		var rtn = false;
		newImg.src = imgSrc;
		//var height = newImg.height;
		var height = img.height;
		var width = newImg.width;
		if((height>80)||(width>80))	{
			de('spnImageDesc').innerHTHML = width+" x "+height+" - file too big. (80 x 80)";
			de('spnImageDesc').style.display='block';
			rtn = false	}
		else	{
			de('spnImageDesc').innerHTML = width+" x "+height+" - file ok.";
			de('spnImageDesc').style.display='block';
			rtn = true;
		}
		return rtn;
	}
	
	/*	Content Manager	*/

	function saveEditor(page)	{
		var content = "";
		debugger;
		try	{
			tinyMCE.activeEditor.save();
			content = tinyMCE.activeEditor.getContent();
		}
		catch(e)	{
			try	{
				content = (BrowserDetect.browser=="Explorer") ? de('texta').innerText : de('texta').innerHTML;
			}
			catch (er)	{
				alert('Error Saving Content');
			}
		}
		de('content').innerHTML = content;
		SaveContent(page, content);
		LoadContent(page);
		showContainer();
	}
	
	function LoadContent(page)	{
	
		var args = new Array();
		args[0] = page;
		var path = (page=="Events")?"../":"";
		//var content = "dff";
		var content = AJAXPOSTSyncs('loadPage',args, path);
		if(content!=null)	{
			try	{
				if (BrowserDetect.browser == "Explorer") 
					de('texta').innerText = content;
				else {
					de('texta').innerHTML = content;
					tinyMCE.activeEditor.setContent(content);
				}
				de('content').innerHTML = content;
			}
			catch(e)	{
				alert('Error: Content cannot be loaded');
			}
		}
		
	}
	
	function SaveContent(page, content)	{
	
		var args = new Array();
		args[0] = page;
		args[1] = content;
		AJAXPOSTSyncs('SavePage',args, "../");
		
	}
	
	function showContainer()	{
		var container = de('container');
		container.style.display = (container.style.display=="none") ? "block" : "none";
	}
	
	function myFileBrowser (field_name, url, type, win) {
		var fileBrowserWindow = new Array();
		fileBrowserWindow['title'] = 'File Browser';
		fileBrowserWindow['file'] = "index.php" + "?type=" + type;
		fileBrowserWindow['width'] = '420';
		fileBrowserWindow['height'] = '400';
		tinyMCE.openWindow(fileBrowserWindow, { window : win, resizable : 'yes', inline : 'yes' });
		return false;
	}
	
	function blah()	{
		var body = de('body');
		images = body.getElementsByTagName('img');
		var out = "";
		for(var i=0; i<images.length; i++)	{
			images[i].onclick = new Function("ShowImage(this)");
		}
	}
	
	function ShowImage(image)	{
		var src = image.src;
		var img = document.createElement("img");
		var link = document.createElement("img");
		link.onclick = function(){
			CloseImage();
		}
		link.src="/images/close.gif";
		link.style.position="relative";
		link.style.top="0px";
		link.style.cssFloat = "right";
		link.style.zIndex="3000";
		link.style.width="72px";
		link.style.height="100px";
		link.style.border="none";
		link.style.cursor="pointer";
		img.src = src;
		var hRatio = (600/(img.height))*100;
		var wRatio = (600/(img.width))*100;
		img.height= ((parseInt(img.height)/100)*parseFloat((hRatio<wRatio)?hRatio:wRatio));
		img.width= ((parseInt(img.width)/100)*parseFloat((hRatio<wRatio)?hRatio:wRatio));
		img.style.height = img.height+"px";
		img.style.width = img.width+"px";
		img.style.marginLeft=(400-(parseInt(img.width)/2))+"px";
		img.style.cssFloat="left";
		//img.onclick = new Function("location.href='"+img.src+"';");
		var viewer = de('imageViewer');
		RemoveChildren(viewer);	// removes all existing elements.
		viewer.appendChild(img);
		viewer.appendChild(link);
		de('imageContainer').style.display="block";
		viewer.style.display="block";
		window.scrollTo(0,0);
	}
	
	function CloseImage()	{
		de('imageContainer').style.display="none";
		de('imageViewer').style.display="none";
	}
	
	function RemoveChildren(elem)	{
		
		// removes all nodes from an element.
		if ( (elem.hasChildNodes()))	{
		    while ( elem.childNodes.length >= 1 )	{
		        elem.removeChild( elem.firstChild );
		    }
		}
		
	}
	
	function QuickSearch()	{
		window.location = "http://" + document.domain + "/Catalogue/?QuickSearch="+de('txtQuickSearch').value;
	}