﻿function nospam(user, domain, name) {
 // duplicated here (from /common/header.asp as otherwise not available in Iris Ajax scripts
document.write('<a href=\"mailto:' + user + '@' + domain + '\">');
document.write(name + '</a>');

}
function ClearDate(d,m,y) {
    d.selectedIndex=0;
	m.selectedIndex=0;
	y.selectedIndex=0;
	}
	
function TodayDate(d,m,y) {
    var dd = new Date();
    d.selectedIndex=dd.getDate();
    m.selectedIndex=dd.getMonth()+1; // January is 0, so December is 11, obviously. I do so LOVE JavaScript.
	//years aren't 0, 1, 2, etc. and aren't necessarily in ascending order, so we loop until the value matched or we reach the end:
	y.selectedIndex=0;
	while ((y.options[y.selectedIndex].value!=dd.getFullYear()) && (y.selectedIndex+1<y.options.length)) {
        y.selectedIndex += 1; //add 1 to y.selectedIndex	
	    }   
	}
	
	function ClearForm(frm) {

	if (frm.sp) {
		frm.sp.selectedIndex=0;
		}
	if (frm.sp2) {
		frm.sp2.selectedIndex=0;
		}
	if (frm.rty) {
		frm.rty.selectedIndex=0;
		}
	if (frm.s) {
		frm.s.selectedIndex=0;
		}
	if (frm.a) {
		frm.a.selectedIndex=0;
		}
	if (frm.r) {
		frm.r.selectedIndex=0;
		}
	if (frm.c) {
		frm.c.selectedIndex=0;
		}
	if (frm.l) {
		frm.l.selectedIndex=0;
		}
	if (frm.startDay) {
		frm.startDay.selectedIndex=0;
		}
	if (frm.startMonth) {
		frm.startMonth.selectedIndex=0;
		}
	if (frm.startYear) {
		frm.startYear.selectedIndex=0;
		}
	if (frm.endDay) {
		frm.endDay.selectedIndex=0;
		}
	if (frm.endMonth) {
		frm.endMonth.selectedIndex=0;
		}
	if (frm.endYear) {
		frm.endYear.selectedIndex=0;
		}
	if (frm.notes) {
		frm.notes.value='';
		}
	if (frm.cont) {
		frm.cont.value='';
		}
	}

function searchclicked(frm) {
	// clear offset and lastoffset as search has changed
	if (frm) {
		if (frm.off) {
			frm.off.value='';
			}
		if (frm.loff) {
			frm.loff.value='';
			}
		// submit form
		frm.submit();
		}
	}	

function trimstring(str) {
	//trim trailing spaces
	while(''+str.value.charAt(str.value.length-1)==' ')
		str.value=str.value.substring(0,str.value.length-1);
    //trim leading spaces
	while(''+str.value.charAt(0)==' ')
	    str.value=str.value.substring(1,str.value.length);
    return str;
    }

function emptyField(obj) {

	switch(obj.type){
		case "hidden" :
		    if (obj.value.length == 0) return true;
			for (var j=0; j<obj.value.length; ++j) {
				var ch = obj.value.charAt(j);
				if (ch != ' ' && ch != '\t' && ch != '\r' && ch != '\n') return false;
			}
			return true;
			break;
		case "text" :
			if (obj.value.length == 0) return true;
			for (var j=0; j<obj.value.length; ++j) {
				var ch = obj.value.charAt(j);
				if (ch != ' ' && ch != '\t' && ch != '\r' && ch != '\n') return false;
			}
			return true;
			break;
		case "textarea" :
			if (obj.value.length == 0) return true;
			for (var j=0; j<obj.value.length; ++j) {
				var ch = obj.value.charAt(j);
				if (ch != ' ' && ch != '\t' && ch != '\r' && ch != '\n') return false;
			}
			return true;
			break;
		case "select-one" :
		    if (obj[obj.selectedIndex].value.length == 0) return true;
			break;
		default : 
			return true;
	}
}

function validDate(inform) {
	
	// check date is valid
	var sdate = new Date(inform.photoYear.value, parseInt(inform.photoMonth[inform.photoMonth.selectedIndex].value)-1,inform.photoDay[inform.photoDay.selectedIndex].value);

	// put today's date in variable currentDate
	var currentDate=new Date();
	
	// check that start date is a valid date (e.g. 30th February 2001 is invalid)
	if (sdate.getMonth()!=parseInt(inform.photoMonth[inform.photoMonth.selectedIndex].value)-1) {
		alert("Error in record: Date is invalid.")
	}
	// check that start date is before today's date
	else if (currentDate.getTime()<=sdate.getTime()) {
		alert("Error in record: Date cannot be in the future.")
	}
	else {
	// if all the above checks are false, then date is valid
		return true;
	}
	return false;
}

function ValidateForm(frm) {

	// check date
	if(!validDate(frm)) {
		return;
	}

	// check species
	if (emptyField(frm.species)) {
		alert("Please enter a species.");
		return false;
		} 
	
	// check county
	if (emptyField(frm.areaid)) {
		alert("Please select a county.");
		return false;
		} 
	
	// check site
	if (trimstring(frm.sitename).value == "")
	    {
	    if (frm.siteid)
	        {
	        if (frm.siteid.selectedIndex == 0)
	            {
            	alert("Please supply a site (or type \'undisclosed site\' or similar if you prefer not to say where your picture was taken).");
        		return false;
        		}
            }
        else                        	
            {
            alert("Please supply a site (or type \'undisclosed site\' or similar if you prefer not to say where your picture was taken).");
    		}
        }    		

	// check file
	if (trimstring(frm.filename).value == "")
		alert("Please click on Browse... to select a file first!");
	else
		frm.submit();
		
}

function ValidateWorldForm(frm) {

	// check date
	if(!validDate(frm)) {
		return;
	}

	// check species
	if (emptyField(frm.species)) {
		alert("Please enter a species.");
		return false;
		} 
	
	// check continent
	if (emptyField(frm.cont)) {
		alert("Please select a continent.");
		return false;
		} 
	
	// check site
	if (trimstring(frm.sitename).value == "")
	    {
	    if (frm.siteid)
	        {
	        if (frm.siteid.selectedIndex == 0)
	            {
            	alert("Please supply a site (or type \'undisclosed site\' or similar if you prefer not to say where your picture was taken).");
        		return false;
        		}
            }
        else                        	
            {
            alert("Please supply a site (or type \'undisclosed site\' or similar if you prefer not to say where your picture was taken).");
    		}
        }    		

	// check file
	if (trimstring(frm.filename).value == "")
		alert("Please click on Browse... to select a file first!");
	else
		frm.submit();
		
}

function quizcomment(mode,album,file,userid,dest,comment)
{
    var d = new Date();
    new Ajax.Updater(dest, '/iris/ajax/quizcomment.asp', { 
        method: 'get',
        parameters: { mode: mode, a: album, f: file, u: userid, dest: dest, comment: comment, timestamp: d.getTime() }
        });
}

function vote(file,user,owner,votes,revoke,dest)
{
    var d = new Date();
    new Ajax.Updater(dest, '/iris/ajax/vote.asp', { 
        method: 'get',
        parameters: { f: file, u: user, o: owner, v: votes, r: revoke, dest: dest, timestamp: d.getTime() }
        });
}

function unsuitableforquiz(reason,file,i,idest,adest)
{
    var d = new Date();
    if (reason=='cancel') {
        // just clear idest
        new Ajax.Updater(idest, '/common/ajax/null.asp', {method: 'get'});
    } else {
        // clear pic (adest) and send emails etc.
        new Ajax.Updater(adest, '/iris/ajax/unsuitableforquiz.asp', { 
        method: 'get',
        parameters: {reason: reason, f: file, i: i, idest: idest, adest: adest, timestamp: d.getTime() }
        });
    
    }
}

function unsuitablemenu(file,i,idest,adest)
{
    //pop up menu, whose options call unsuitableforquiz
    var d = new Date();
    new Ajax.Updater(idest, '/iris/ajax/unsuitablemenu.asp', { 
        method: 'get',
        parameters: { f: file, i: i, idest: idest, adest: adest, timestamp: d.getTime() }
        });
}

function defaultpicturesettings(userid,frm,dest) 
{
    var d = new Date();
    new Ajax.Updater(dest, '/iris/ajax/defaultpicturesettings.asp', { 
        method: 'get',
        parameters: { u: userid, r: frm.r.value, rty: frm.rty.value, v: frm.v.value, st: frm.st.value, timestamp: d.getTime() }
        });
}

function showdefaultbutton(userid,dest) 
{
    var d = new Date();
    new Ajax.Updater(dest, '/iris/ajax/showdefaultbutton.asp', { 
        method: 'get',
        parameters: { u: userid, timestamp: d.getTime() }
        });
}

function photosearch(dest,searchtype,range,subscriber,filterid,searchid,searcherror,quiz,albumid,view,speciesid,rarity,siteid,areaid,startday,startmonth,startyear,endday,endmonth,endyear,notes,contname,commented,countryid,sitename)
{
    document.body.style.cursor = 'wait'; // doesn't seem to work
    var d = new Date();
    new Ajax.Updater(dest, '/iris/ajax/searchform.asp', { 
        method: 'get',
        parameters: { dest: dest, st: searchtype, r: range, sub: subscriber, f: filterid, searchid: searchid, q: quiz, album: albumid, v: view, sp: speciesid, rty: rarity, s: siteid, a: areaid, startday: startday, startmonth: startmonth, startyear: startyear, endday: endday, endmonth: endmonth, endyear: endyear, notes: notes, contname: contname, commented: commented, c: countryid, sn: sitename, timestamp: d.getTime() }
        });
    document.body.style.cursor = 'default';
}

function albumicon(mode, albumid, fileid, com, idest, adest, tb, range, view, quiz, searchtype, defaultalbumid, showcomments, issubscriber, isadmin, selectedcontributor, link)
{
    var d = new Date();
    new Ajax.Updater(idest, '/iris/ajax/albumicon.asp', { 
        method: 'get',
        parameters: {mode: mode, a: albumid, f: fileid, comment: com, idest: idest, adest: adest, tb: tb, r: range, v: view, q: quiz, st: searchtype, comments: showcomments, def: defaultalbumid, sub: issubscriber, admin: isadmin, sel: selectedcontributor, link: link, timestamp: d.getTime() }
        });
    if (adest!='') {
        albums(mode, albumid, fileid, idest, adest, tb, range, view, quiz, searchtype, defaultalbumid, showcomments, issubscriber, isadmin, selectedcontributor, link);
    }        
}

function thumbicon(show, mode, id, idest, adest)
{
    var d = new Date();
    thumblinks(show, mode,id,idest,adest);
    new Ajax.Updater(idest, '/iris/ajax/thumbicon.asp', { 
        method: 'get',
        parameters: {show: show, mode: mode, id: id, idest: idest, adest: adest, timestamp: d.getTime() }
        });
}

function thumblinks(show, mode, id, idest, adest)
{
    var d = new Date();
    new Ajax.Updater(adest, '/iris/ajax/thumblinks.asp', { 
        method: 'get',
        parameters: {show: show, mode: mode, id: id, idest: idest, adest: adest, timestamp: d.getTime() }
        });
}

function albums(mode, albumid, fileid, idest, adest, tb, range, view, quiz, searchtype, defaultalbumid, showcomments, issubscriber, isadmin, selectedcontributor, link)
{
    var d = new Date();
    new Ajax.Updater(adest, '/iris/ajax/albums.asp', { 
        method: 'get',
        parameters: {mode: mode, a: albumid, f: fileid, idest: idest, adest: adest, tb: tb, r: range, v: view, q: quiz, st: searchtype, comments: showcomments, def: defaultalbumid, sub: issubscriber, admin: isadmin, sel: selectedcontributor, link: link, timestamp: d.getTime() }
        });
}

function albumbutton(albumid, dest)
{
    var d = new Date();
    new Ajax.Updater(dest, '/iris/ajax/albumbutton.asp', { 
        method: 'get',
        parameters: {a: albumid, timestamp: d.getTime() }
        });
}

function browse(cat, mode, initial, lang, idest, adest)
{
    top.window.document.body.style.cursor = 'wait'; 
    var d = new Date();
    browseicon(cat, mode, initial, lang, idest, adest);        
    new Ajax.Updater(adest, '/iris/ajax/pictures.asp', { 
        method: 'get',
        parameters: {cat: cat, mode: mode, i: initial, lang: lang, idest: idest, adest: adest, timestamp: d.getTime() }
        });
    top.window.document.body.style.cursor = 'default';
}

function browseicon(cat, mode, initial, lang, idest, adest)
{
    var d = new Date();
    new Ajax.Updater(idest, '/iris/ajax/browseicon.asp', { 
        method: 'get',
        parameters: {cat: cat, mode: mode, i: initial, lang: lang, idest: idest, adest: adest, timestamp: d.getTime() }
        });
}

function albumlist(offset, lastoffset, category, userid, sub, dest, firstalbumid, max, alt)
{
    var d = new Date();
    new Ajax.Updater(dest, '/iris/ajax/albumlist.asp', { 
        method: 'get',
        parameters: {cat: category, u: userid, sub: sub, off: offset, loff: lastoffset, first: firstalbumid, max: max, alt: alt, timestamp: d.getTime() }
        });
}

function albumdelete(albumid, dest, userid, sub, alt)
{
    var d = new Date();
    // the same album may appear several times
     var ftemp = $$('.'+dest); //debug code
     new Ajax.Request('/iris/ajax/albumdelete.asp', {
        method: 'get',
        parameters: {a: albumid, dest: dest, u: userid, sub: sub, alt: alt, timestamp: d.getTime() },
        onSuccess: function(transport) {
            var f = $$('.'+dest); //CSS rule to match all elements whose class is dest
	        for(var i=0; i<f.length; i++) { //loop and update
		        f[i].update(transport.responseText)
	        }
        }
    });
}

function changerange(frm,dest)
{
    var d = new Date();
    new Ajax.Updater(dest, '/iris/ajax/changerange.asp', { 
        method: 'get',
        parameters: {temp: frm.name, r: frm.r.value, sp: frm.sp.value, rty: frm.rty.value, s: frm.s.value, a: frm.a.value, c: frm.c.value, sn: frm.sn.value, d: dest, timestamp: d.getTime() }
    });
}

function additionalspecies(i,r,idest,adest)
{
    var d = new Date();
    clearajax(idest);
    new Ajax.Updater(adest, '/iris/ajax/additionalspecies.asp', { 
        method: 'get',
        parameters: {i: i, r: r, timestamp: d.getTime() }
    });
}

function clearajax(dest)
{
    new Ajax.Updater(dest,'/common/ajax/null.asp', {});
}

function clearspecies(frm)
{
    if (frm.album.selectedIndex!=0) {
        for (var i = 0; i<frm.elements.length; i++) {
            if ((frm.elements[i].name=='sp')) {
                frm.elements[i].value = ''
            }
        }            
    }
}

function quizoptions(mode,userid, subscriber, albumid, species, lang, details, pics, adest)
{
    var d = new Date();
    new Ajax.Updater(adest, '/iris/ajax/quizoptions.asp', { 
        method: 'get',
        parameters: {mode: mode, u: userid, sub: subscriber, a: albumid, sp: species, lang: lang, details: details, pics: pics, adest: adest, timestamp: d.getTime() }
    });
}

function singlepic(id, adest, mode, subscriber)
{
    var d = new Date();
    new Ajax.Updater(adest, '/iris/ajax/singlepic.asp', { 
        method: 'get',
        parameters: {id: id, adest: adest, mode: mode, sub: subscriber, timestamp: d.getTime() }
    });
}

function showpic(id,mode,range,view,quiz,searchtype,albumid,defaultalbumid,showcomments,issubscriber,isadmin,selectedcontributor,link,adest)
{
    var d = new Date();
    new Ajax.Updater(adest, '/iris/ajax/showpic.asp', { 
        method: 'get',
        parameters: {id: id, adest: adest, mode: mode, r: range, v: view, q: quiz, st: searchtype, comments: showcomments, a: albumid, def: defaultalbumid, sub: issubscriber, admin: isadmin, sel: selectedcontributor, link: link, timestamp: d.getTime() }
    });
}

function rejectpic(id,adest)
{
    var d = new Date();
    new Ajax.Updater(adest, '/iris/ajax/reject.asp', { 
        method: 'get',
        parameters: {id: id, adest: adest, timestamp: d.getTime() }
    });
}

function exificon(mode, id, idest, adest)
{
    exif(mode,id,idest,adest);
    var d = new Date();
    new Ajax.Updater(idest, '/iris/ajax/exificon.asp', { 
        method: 'get',
        parameters: {mode: mode, id: id, idest: idest, adest: adest, timestamp: d.getTime() }
        });
}

function exif(mode, id, idest, adest)
{
    var d = new Date();
    new Ajax.Updater(adest, '/iris/ajax/exif.asp', { 
        method: 'get',
        parameters: {mode: mode, id: id, idest: idest, adest: adest, timestamp: d.getTime() }
        });
}
