function populate(){
	var tag = document.getElementById('tag').value;
	document.getElementById('photos').innerHTML = getFlickr.html[tag].replace(/_m\.jpg/g,'_s.jpg');
	document.getElementById('tags').innerHTML = getFlickr.tags[tag];
	return false;
}

// Function to submit a form with onclick or onchangle
function submitForm(frmID)
{
	document.getElementById(frmID).submit();
}

		
function comments_page(cid, page) {
	// Construct URL
    url = 'scripts/comments.php?cid=' + cid + '&page=' + page;       			
        
    ajax_get (url, 'comments');
}
        
function submit_form() {
	
	function getValue(radioGroupName) {
        radios = document.getElementsByName(radioGroupName);
        for (i = 0; i < radios.length; i++) {
            if (radios[i].checked) return radios[i].value;
        }
    }
    
	// Get form values   
    var id = document.getElementById('id').value;
    var name = document.getElementById('name').value;
    var country = document.getElementById('country').value;
    var email = document.getElementById('email').value;
    var rate = getValue('rate');
    var comment = document.getElementById('comment').value; 
    var secure = document.getElementById('secure').value;
               
    // Construct URL
    url = 'scripts/handle_form.php?id=' + escape(id) + '&name=' + escape(name) + '&country=' + escape(country) + '&email=' + escape(email) + '&rate=' + escape(rate) + '&comment=' + escape(comment) + '&secure=' + escape(secure);

    ajax_get (url, 'result');
}     

function GetResults(sSearch) {

	var arrCountryCodePairs = new countryCodes(),
		i, arrResults = new Array(arrCountryCodePairs.length), arrBits, objResult, iCount = 0;

	for (i=0; i < arrCountryCodePairs.length; i++) {
		arrBits = arrCountryCodePairs[i].split('=');

		if (arrBits.length > 1){
			if (arrBits[1].toLowerCase().indexOf(sSearch.toLowerCase()) != -1) {
				objResult = {};
				objResult.id = arrBits[0];
				objResult.text = arrBits[1];

				arrResults[iCount] = objResult;
				iCount++;
			}
		}
	}

	return arrResults;
}

function HandleChoice(sID, sText, arrExtra) {
	//return alert(sID +' : '+ sText);
	showMarker(sID);
	comments_page(sID, '1');
}    

/*  
	Title : Auto Suggest Box
	Author : Tom Coote
	Wedsite : http://www.tomcoote.co.uk
*/

 /**
	* @argument SearchInputID - The id of the text input for the loop up.
	* @argument MultiSelectID - The id of the select tag for the results to be placed.
	* @argument fnSearch - The JavaScript function to call to get results, 
	*						this function will get passed a string value of the requested search text and
	*						must return an array of objects with the following members; id, text
	* @argument fnFound - The JavaScript function to call when a result is selected,
	*						this function will get passed the id and text of the selected object plus any extra arguments passed in
	*						when the results were created.
	*/
function AutoSuggestBox(SearchInputID, MultiSelectID, fnSearch, fnFound) {
    
	var that = {}; // Must use 'that' so not to confuse with 'this' which is the global object.

	/* Private Variables 
	*
	* These variables can only be accessed by functions inside the scope of this object.
	*/
	var eSearchInput, eMultiSelect;
	var iMaxListHeight = 280;
	var arrArgs; 
	var iSelectTextHeight = 22; // You may need to change this depending on your CSS.

    /* Private Functions 
	*
	* These functions can only be accessed by functions inside the scope of this object.
	*/

	function Initiate() {
		eSearchInput = document.getElementById(SearchInputID);
		eMultiSelect = document.getElementById(MultiSelectID);

		// Position the results area directly underneath the input box ready for deployment
		PositionElement();
		eMultiSelect.style.visibility = 'hidden';

		// Add events
		eMultiSelect.onclick = GetResultClickHandler;
		eMultiSelect.onkeypress = GetResultKeyPressHandler;
	}

	function GetResultClickHandler() {
		var id = eMultiSelect.options[eMultiSelect.selectedIndex].id,
			text = eMultiSelect.options[eMultiSelect.selectedIndex].innerHTML;

		eSearchInput.value = text;
		eMultiSelect.style.visibility = 'hidden';

		fnFound(id,text,arrArgs);
	}
	function GetResultKeyPressHandler(e) {
		if (GetKeyCode(e) == 13) {
			GetResultClickHandler();
		}
	}

	function GetKeyCode(e)
	{
		if (e) {
			return e.charCode ? e.charCode : e.keyCode;
		}
		else {
			return window.event.charCode ? window.event.charCode : window.event.keyCode;
		}
	}

	function PositionElement() {
		eMultiSelect.style.position = 'absolute';
		eMultiSelect.style.width = eSearchInput.offsetWidth + 'px';
	}

	/* Public Variables 
	*
	* These variables are available from the returning object that this constructor creates,
	* new public variables can be added to the returning object at any time.
	*/
	var undefined;

	/* Public Functions 
	*
	* These functions are available from the returning object that this constructor creates,
	* new public functions can be added to the returning object at any time.
	*/

	that.CreateResults = function(e) {

		// Check for additional arguments
		if (arguments != undefined) {
			arrArgs = arguments;
		}

		// Check for up/down key press
		var unicode = GetKeyCode(e);

		if (unicode == 40) {
			if (eMultiSelect.style.visibility == 'visible') {
				eMultiSelect.options.selectedIndex = 0;
				eMultiSelect.focus();
				return;
			}
		}
		if (unicode == 38) {
			if (eMultiSelect.style.visibility == 'visible') {
				eMultiSelect.options.selectedIndex = eMultiSelect.options.length-1;
				eMultiSelect.focus();
				return;
			}
		}

		// Check for valid search criteria
		if (eSearchInput.value.length < 1) {
			eMultiSelect.style.visibility = 'hidden';
			return;
		}

		// Get results
		var arrResults = fnSearch(eSearchInput.value), i, eOption, iCount = 0;
		
		if (arrResults == undefined) {
			eMultiSelect.style.visibility = 'hidden';
			return;
		}

		eMultiSelect.innerHTML = ''; 

		for (i=0; i < arrResults.length; i++) {
			if (arrResults[i] != undefined) {

				eOption = document.createElement('option');
				eOption.setAttribute('id',arrResults[i].id);
				eOption.innerHTML = arrResults[i].text;

				eMultiSelect.appendChild(eOption);

				iCount++;
			}
		}

		if (iCount < 1) {
			eMultiSelect.style.visibility = 'hidden';
			return; // No results found.
		}

		PositionElement();
		var iHeight = iCount*iSelectTextHeight; 
	
		if (iCount > 2) {
			if (iHeight > iMaxListHeight) { // Don't want it to tall on the page
				eMultiSelect.style.height = iMaxListHeight+'px';
			}
			else {
				eMultiSelect.style.height = iHeight+'px';
			}
		}

		eMultiSelect.style.visibility = 'visible';
	}

	Initiate(); // Do all setup when the object is created.

	/* 
	* This (or that) is the object returned with all public members and
	* functions included above when the contructor is instantiated.
	*/
    return that;
}

/* flickr API */

getFlickr={
	html:[],
	tags:[],
	triggerClass:'getflickrphotos',
	loadingMessage:'loading...',
	viewerID:'flickrgetviewer',
	closeMessage:'close',
	closePhotoMessage:'click to close',
	leech:function(tag, func){
		getFlickr.func = func;
		getFlickr.tag = tag;
		
		var s = document.createElement('script');
		s.src = 'http://flickr.com/services/feeds/photos_public.gne?tags=' + tag + '&format=json';
		document.getElementsByTagName('head')[0].appendChild(s);
	},	
	getLinks:function(){
		var links = document.getElementsByTagName('a');
		for(var i=0,j=links.length;i<j;i++){
			if(links[i].className.indexOf(getFlickr.triggerClass)!=-1){
				getFlickr.addEvent(links[i],'click',getFlickr.getData);
				// friggin fix this now Apple!
				if((/Safari|Konqueror|KHTML/gi).test(navigator.userAgent)){
					links[i].onclick=function(){return false;}
				}
			}
		}
	},
	getData:function(e){
		var x = getFlickr.getTarget(e);
		if(x.nodeName.toLowerCase() != 'a'){x = x.parentNode}
		var tag = x.href.match(/([\w|\+]+)?\/?$/);
		getFlickr.currentLink = x;
		getFlickr.currentText = x.innerHTML;
		x.innerHTML = getFlickr.loadingMessage;
		getFlickr.leech(tag,'getFlickr.feedLink');
		getFlickr.cancelClick(e);
		},
	feedLink:function(){
		getFlickr.currentLink.innerHTML = getFlickr.currentText;
		var viewer = document.getElementById(getFlickr.viewerID);
		if(viewer === null){
			var viewer = document.createElement('div');
			viewer.id = getFlickr.viewerID;
			document.body.appendChild(viewer);
		} else {
			viewer.innerHTML = '';
		}
		var closer = document.createElement('a');
		closer.href = '#';
		closer.innerHTML = getFlickr.closeMessage;
		closer.onclick = function(){
			this.parentNode.parentNode.removeChild(this.parentNode);
			return false;
		}
		viewer.appendChild(closer);
		var ul = document.createElement('ul');
		ul.innerHTML = getFlickr.html[getFlickr.tag].replace(/_m/g,'_s');
		viewer.appendChild(ul);
		 var y=0;
		if(self.pageYOffset){
			y=self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop){
			y=document.documentElement.scrollTop;
		} else if(document.body){
			y=document.body.scrollTop;
		}
		viewer.style.top = y+'px'; 
		getFlickr.addEvent(ul, 'click', getFlickr.showPic);
	},
	showPic:function(e){
		var t = getFlickr.getTarget(e);
		if(t.nodeName.toLowerCase()==='img'){
			var p = document.getElementById('flickrgetviewer');
			var s = t.src.replace('_s','_m');
			var x = t.parentNode.cloneNode(false);
			var cont = document.createElement('div');
			x.innerHTML = '<img src="'+s+'" title="+getFlickr.closePhotoMessage+" />';
			cont.appendChild(x);
			if(p.getElementsByTagName('div').length>0){
				p.replaceChild(cont,p.getElementsByTagName('div')[0]);				
			} else {
				p.appendChild(cont);				
			}
			cont.onclick = function(){
				this.parentNode.removeChild(this);
				return false;
			}
		}
		getFlickr.cancelClick(e);
	},
	returnList:function(feed){
		var x = feed.items;
		var t;
		getFlickr.html[getFlickr.tag] = '';
		getFlickr.tags[getFlickr.tag] = '';
		 for(var i=0,j=x.length;i<j;i++){
		 	getFlickr.html[getFlickr.tag]+='<li><a href="'+x[i].link+'"><img src="'+x[i].media.m+'" alt="'+x[i].title+'" /></a></li>';
			t+= x[i].tags + ' ';
		 }
			t=t.replace(/\s$/,'');
		var x = t.split(' ');
		x=x.sort();
		 for(var i=0,j=x.length;i<j;i++){
		 	if(i>0 && x[i-1]!=x[i]){
			  getFlickr.tags[getFlickr.tag]+=x[i]+' ';
			}
		 }
		 if(getFlickr.func !== undefined){
 			 eval(getFlickr.func+'()');
		}
	},	
	getTarget:function(e){
		var target = window.event ? window.event.srcElement : e ? e.target : null;
		if (!target){return false;}
		while(target.nodeType!=1 && target.nodeName.toLowerCase()!='body'){
			target=target.parentNode;
		}
		return target;
	},
	 cancelClick:function(e){
			if (window.event){
				window.event.cancelBubble = true;
				window.event.returnValue = false;
			}
			if (e && e.stopPropagation && e.preventDefault){
				e.stopPropagation();
				e.preventDefault();
			}
	},
	addEvent: function(elm, evType, fn, useCapture){
		if (elm.addEventListener){
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
		}
	}
}
function jsonFlickrFeed(feed){
	getFlickr.returnList(feed);
}
getFlickr.addEvent(window, 'load', getFlickr.getLinks);	