
        //autocomplete code...
        function autocompleteify(ACelementId, DisplayElementId, ajaxcall) {
            var autocompleteElement = document.getElementById(ACelementId);
            var resultsElement = document.getElementById(DisplayElementId);
            autocompleteElement.linked = DisplayElementId;
            autocompleteElement.onclick = function() {
                var resultsElement = document.getElementById(this.linked);
                this.rerenderResults(resultsElement, this.value == undefined ? '' : this.value);
                resultsElement.style.display = '';
            }
            autocompleteElement.onkeyup = function(e) {
                var lastkeyCode = (window.event) ? event.keyCode : e.keyCode;
                //esc = 27, up = 38, down = 40, return = 13
                switch (lastkeyCode) {
                    case 27: // esc
                        resultsElement.style.display = 'none';
                        break;
                    case 13: // return
                        window.location = document.getElementById('autocompleteify' + this.selectedItemIndex).href;
                        break;
                }
                if (lastkeyCode == 38 || lastkeyCode == 40) {
                    var change = lastkeyCode - 39;
                    for (var i = 0; i < this.noOfResults; i++) {
                        document.getElementById('autocompleteify' + i).className = 'blank';
                    }
                    this.selectedItemIndex += change;
                    if (this.selectedItemIndex < 0) {
                        this.selectedItemIndex = 0;
                    }
                    if (this.selectedItemIndex > this.noOfResults - 1) {
                        this.selectedItemIndex = this.noOfResults - 1;
                    }
                    document.getElementById('autocompleteify' + this.selectedItemIndex).className = 'highlighted';
                }
                else {
                    autocompleteElement.rerenderResults(resultsElement, this.value);
                }
            }
            autocompleteElement.onblur = function() {
                setTimeout("document.getElementById('" + DisplayElementId + "').style.display = 'none';", 250);
            }
            autocompleteElement.rerenderResults = function(element, text) {
                //var json = autocompleteElement.json;
                //eval('(' + json + ')');
                var resultsObject = autocompleteElement.resultsObject;
                element.innerHTML = '';
                var selectableItemIndex = 0;
                var maxpertype = 5;
                this.selectedItemIndex = -1;
                this.noOfResults = 0;
                inspectObject = function(objectin, searchtext) {
                    for (var member0 in objectin) {
                        var object0 = objectin[member0];
                        if (typeof (object0) == 'object') {
                            if (object0.length > 0) {
                                var htmlBuilder = "";
                                var itemCount = 0;
                                for (var i = 0; i < object0.length; i++) {
                                    var object = object0[i];
                                    if (object['name'].toLowerCase().indexOf(text.toLowerCase()) > -1 && object['name'].length > 0) {
                                        if (maxpertype > itemCount) {
                                            itemCount++;
                                            htmlBuilder += "<li><a id='autocompleteify" + selectableItemIndex + "' href='/" + object['link'] + "'>" + object['name'] + "</a></li>";
                                            selectableItemIndex++;
                                            autocompleteElement.noOfResults++;
                                        } else {
                                            break;
                                        }
                                    }
                                }
                                if (htmlBuilder.length > 1) {
                                    htmlBuilder = "<h2>" + member0 + "</h2><ul>" + htmlBuilder + "</ul>";
                                    element.innerHTML += htmlBuilder;
                                }
                            }
                            inspectObject(object0);
                        }
                    }
                }
                inspectObject(resultsObject);
            }
            //initilisation stuff
            autocompleteElement.rerenderResults(resultsElement, '');
            var httpReq = undefined;
            if (window.XMLHttpRequest) {
                httpReq = new XMLHttpRequest();
            }
            else if (window.ActiveXObject) {
                httpReq = new ActiveXObject("Msxml2.XMLHTTP");
            } else {
                alert("Browser doesn't support AJAX");
                return false;
            }
            httpReq.onreadystatechange = function() {
                if (this.readyState == 4) {
                    autocompleteElement.resultsObject = eval('(' + this.responseText + ')');
                }
            };
            httpReq.open("get", ajaxcall, true);
            httpReq.send(null);
            return true;
        }



        //tabbing code...
        /* usage example
            <ul id="ygt_tabs">
                <li><a href="#tab1" class="initialLoad">Tab 1</a></li>
                <li><a href="#tab2">Tab 2</a></li>
                <li><a href="#tab3">Tab 3</a></li>
            </ul>
            <div id="tab1" class="lists"><h1>tab 1</h1></div>
            <div id="tab2" class="lists"><h1>tab 2</h1></div>
            <div id="tab3" class="lists"><h1>tab 3</h1></div>
         */
        function tabify(tabbedUL, callBackForClicked) {
            var tabHeader = document.getElementById(tabbedUL);
            for (var i = 0; i < tabHeader.childNodes.length; i++) {
                if (tabHeader.childNodes[i].tagName != undefined && tabHeader.childNodes[i].tagName.toLowerCase() == 'li') {
                    var liElement = tabHeader.childNodes[i];
                    for (var j = 0; j < liElement.childNodes.length; j++) {
                        if (liElement.childNodes[j].tagName != undefined && liElement.childNodes[j].tagName.toLowerCase() == 'a') {
                            var anchorElement = liElement.childNodes[j];
                            if (anchorElement.className != 'initialLoad') {
                                var divToDisplay = anchorElement.href.split('#')[1];
                                document.getElementById(divToDisplay).style.display = 'none';
                                anchorElement.parentNode.className = '';
                            } else {
                                liElement.className = 'selected';
                            }
                            anchorElement.className = '';
                            anchorElement.onclick = function() {
                                if (callBackForClicked(this)) {
                                    tabify(tabbedUL, callBackForClicked); //selected
                                    this.parentNode.className = 'selected';
                                    var divToDisplay = this.href.split('#')[1];
                                    document.getElementById(divToDisplay).style.display = '';
                                }
                                return false;
                            }
                        }
                    }
                }
            }
        }

		//enuryformify
        ygt_enqform = new function() {
        	this.ygt_enq_form = function(containerDivId) {

        		this.createTd = function(innerhtml, childnodeCollection, cssClass) {
        			var tblTd = document.createElement('td');
        			tblTd.innerHTML = innerhtml;
        			tblTd.className = cssClass;
        			if (childnodeCollection != undefined) {
        				tblTd.appendChild(childnodeCollection);
        			}
        			return tblTd;
        		}
        		this.createInput = function(type, value, nameid, cssClass) {
        			var inputTag = document.createElement('input');
        			inputTag.type = type;
        			inputTag.value = value;
        			inputTag.name = nameid;
        			inputTag.id = nameid;
        			inputTag.className = cssClass;
        			return inputTag;
        		}
        		this.containerDiv = document.getElementById(containerDivId);
        		var tblForm = document.createElement('table');
        		tblTr = document.createElement('tr');
        		tblTr.appendChild(this.createTd("Name:", undefined, ""));
        		tblTr.appendChild(this.createTd("", this.createInput("text", "", "ygt_enquiries_namefield", ""), ""));
        		tblForm.appendChild(tblTr);
        		tblTr = document.createElement('tr');
        		tblTr.appendChild(this.createTd("Email:", undefined, ""));
        		tblTr.appendChild(this.createTd("", this.createInput("text", "", "ygt_enquiries_emailfield", ""), ""));
        		tblForm.appendChild(tblTr);
        		tblTr = document.createElement('tr');
        		tblTr.appendChild(this.createTd("&nbsp;", undefined, ""));
        		tblTr.appendChild(this.createTd("", this.createInput("button", "Sign Up", "ygt_enquiries_submitform", ""), ""));
        		tblForm.appendChild(this.createInput("hidden", containerDivId, "ygt_enquiries_containerid", ""));
        		tblForm.appendChild(tblTr);
        		this.containerDiv.appendChild(tblForm);
        		document.getElementById('ygt_enquiries_submitform').onclick = function() {
        			var usrname = document.getElementById('ygt_enquiries_namefield').value;
        			var usremail = document.getElementById('ygt_enquiries_emailfield').value;
        			var containerId = document.getElementById('ygt_enquiries_containerid').value;
        			var headID = document.getElementsByTagName("head")[0];
        			var newScript = document.createElement('script');
        			newScript.type = 'text/javascript';
        			var xssHack = "http://www.google.com/?email=" + usremail + "&name=" + usrname;
        			newScript.src = xssHack;
        			headID.appendChild(newScript);
        			document.getElementById(containerId).innerHTML = "Thank you for submiting your email and name to our mailing list, you will be shortly emailed top offers";
        			return false;
        		}

        	}
        }
        
        
        //Event code...
        var CustomEvent = function() {
        	this.eventName = arguments[0];
        	var mEventName = this.eventName;
        	var eventAction = null;
        	this.subscribe = function(fn) {
        		eventAction = fn;
        	};
        	this.fire = function(sender, eventArgs) {
        		if (eventAction != null) {
        			eventAction(sender, eventArgs);
        		}
        		else {
        			window.status = ('There was no function subscribed to the ' + mEventName + ' event!');
        		}
        	};
        };


        //accordian code...
        /* usage example
        <div class="container">
        <div class="pagetitle">Page One</div>
        <div class="options"><a href="#">Edit</a> | <a href="#">Delete</a> | <a href="#" id="block1">View</a> | <a href="#">http://www.yourgolftravel.com/page1.html</a></div>
        <div id="text1">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ac arcu sit amet arcu pretium feugiat eget eu arcu. Vestibulum fermentum porttitor nisi vitae congue. Donec ut quam eros. Sed quis augue urna. Sed sagittis diam leo, blandit fermentum quam. Aliquam sapien libero, iaculis et molestie a, ornare sed leo. Nullam elementum, neque eu auctor sollicitudin, velit purus suscipit orci, at euismod risus ipsum id nisl. Proin rhoncus neque a risus porttitor in imperdiet erat interdum. Pellentesque in mi at sapien congue tincidunt vel quis lectus. Fusce in libero magna. Sed sem enim, suscipit dictum auctor a, luctus ac urna. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam tortor mauris, ornare convallis tempus quis, laoreet sed tortor. Pellentesque volutpat venenatis scelerisque. Duis at dui vitae arcu tristique iaculis nec eu neque. Aenean lobortis lorem metus. Nullam eu nibh magna, eget feugiat lacus.
        </div>
        </div>
        */

        YgtQuery = new function() {

            this.loadevents = [];
            this.addLoadEvent = function(fn) {
                YgtQuery.loadevents[YgtQuery.loadevents.length] = fn;
            }

            this.onClick = new CustomEvent("onClick");
            this.acordify = function(container, text, openOnLoad) {
                var divContainer = document.getElementById(container);
                var divText = document.getElementById(text);

                divContainer.onclick = function() {
                    if (divText.style.display == '') {
                        divText.style.display = 'none';
                    } else {
                        divText.style.display = '';
                    }
                    YgtQuery.onClick.fire(null, {
                        id: this.id,
                        clickType: this.tagName
                    });
                }
                divText.onclick = function() {

                    if (false) {
                        if (divText.style.display == '') {
                            divText.style.display = 'none';
                        } else {
                            divText.style.display = '';
                        }
                        YgtQuery.onClick.fire(null, {
                            id: this.id,
                            clickType: this.tagName
                        });
                    }
                }
                divText.style.display = (openOnLoad != undefined && openOnLoad == true) ? '' : 'none';
            }
        }
        
        window.onload = function(){
			for(var i = 0; i < YgtQuery.loadevents.length; i++){
				YgtQuery.loadevents[i]();
			}
		}
        
        
