/* General functions */
function trim(string) {
	return(string.replace(/^\s+|\s+$/g, ''));
}

function trimcomma(str) {
	for (var i=str.length - 1; str.charAt(i)=="," || str.charAt(i)==" "; i--) {
		str = str.substring(0,i);
	}
	return str;
}

function isempty(string) {
	if (string == null) return false;
	string = trim(string);
	return string.length == 0;
}

function isovermaxlength(string, maxLength) {
	string = trim(string);
	return string.length > maxLength;
}

function isunderminlength(string, minLength) {
	string = trim(string);
	return string.length < minLength;
}

function isdecimal(string, onempty) {
	if (!onempty) onempty = false;
	if (onempty == true && isempty(string)) return onempty;
	string = trim(string);
	var ok;
	if (DECIMALSEPARATOR == ',') {
		ok = (/^\d+\,\d+$/.test(string)) || (/^\d+$/.test(string));
	}
	else {
		ok = (/^\d+\.\d+$/.test(string)) || (/^\d+$/.test(string));
	}
	return ok;
}

function isinteger(string, onempty) {
	if (!onempty) onempty = false;
	if (onempty == true && isempty(string)) return onempty;
	string = trim(string);
	if (string.substring(0,1) == "-") {
		string=string.substring(1);}
	return /^\d+$/.test(string);
}

function isemail(string, onempty) {
	if (!onempty) onempty = false;
	if (onempty == false && isempty(string)) return false;
	if (!string) return true;
	string = trim(string);
	return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(string));
}

function passwordstrength(pwd) {
	var strongregex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
	var mediumregex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
	var enoughregex = new RegExp("(?=.{6,}).*", "g");
	if (pwd.length==0) {
		return 0
	} else if (false == enoughregex.test(pwd)) {
		return 1
	} else if (strongregex.test(pwd)) {
		return 4
	} else if (mediumregex.test(pwd)) {
		return 3
	} else {
		return 2
	}
}

function isdate(fld, onempty, dateformat) {
	if (!onempty) onempty = false;
	if (onempty == true && isempty(fld)) return onempty;
	var blankpos = fld.indexOf(' ');
	if (blankpos > 0) {
		try {
			var tmstr = fld.substring(blankpos + 1);
			var dtstr = fld.substring(0, blankpos);
			var timeparts = tmstr.split(':');
			if (timeparts.length < 2) {
				return false;
			}
			var h = parseInt(timeparts[0]);
			var m = parseInt(timeparts[1]);
			if (!timeparts[2]) timeparts[2] = '00';
			var s = parseInt(timeparts[2]);
			if (h >24 || m > 60 || s > 60) {
				return false;
			}
		} catch(e) {
			return false;
		}
	} else {
		var dtstr = fld;
	}
	if (dtstr.indexOf('-') >= 0) var dtch= "-";
	else if (dtstr.indexOf('/') >= 0) var dtch= "/";
	else {
		return false;
	}
	var pos1=dtstr.indexOf(dtch);
	var pos2=dtstr.indexOf(dtch, pos1 + 1);
	var str1=dtstr.substring(0, pos1);
	var str2=dtstr.substring(pos1 + 1, pos2);
	var str3=dtstr.substring(pos2 + 1);
	if (dateformat == 'el') {
		var strday = str1;
		var strmonth = str2;
		var stryear = str3;
	} else {
		var strday = str2;
		var strmonth = str1;
		var stryear = str3;
	}
	dtstr = strmonth + dtch + strday + dtch + stryear;
	var regexpattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
	if ((dtstr.match(regexpattern)) && (dtstr!='')) {
		return true;
	} else {
		return false;
	}
}

function starts(st, wi) {
	if (st == '') {
		return wi == ''
	}
	return st.substring(wi.length, 0) == wi;
}

function ends(st, wi) {
	if (st == '') {
		return wi == ''
	}
	return st.substring(st.length - wi.length) == wi;
}

function lstrip(st, wi) {
	if (starts(st, wi)) {
		return st.substring(wi.length);
	} else {
		return st;
	}
}

function rstrip(st, wi) {
	if (ends(st, wi)) {
		return st.substring(0, st.length - wi.length);
	} else {
		return st;
	}
}

/* Classes */
function AjaxCall() {
	this.xmlhttp = null;
	try {
		this.xmlhttp = new XMLHttpRequest();
		if (this.xmlhttp.overrideMimeType) {
			this.xmlhttp.overrideMimeType('text/html');
		}
	} catch(e) {
		try {
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(error) {
			this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	this.openurl = function(url, async) {
		if (async == undefined) {
			async = true;
		}
		url = encodeURI(url);
		this.xmlhttp.open("GET", url, async);
		this.xmlhttp.setRequestHeader("Content-type", "text/html");
		this.xmlhttp.setRequestHeader("Cache-Control", "no-cache");
		this.xmlhttp.setRequestHeader("If-Modified-Since", "Thu, 31 Jul 2008 01:20:57 GMT");
		this.xmlhttp.send(null);
	};

	this.posturl = function(form, url, async) {
		if (!async) {
			async = true;
		}
		if (typeof(form) != 'object') {
			form = document.getElementById(form);
		}
		url = encodeURI(url);
		var parameters = '';
		for (var i = 0; i < form.elements.length; i++) {
			if (parameters != '') {
				parameters += '&';
			}
			parameters += form.elements[i].name;
			parameters += '=';
			parameters += encodeURIComponent(form.elements[i].value);
		}
		this.xmlhttp.open("POST", url, async);
		this.xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8");
		this.xmlhttp.setRequestHeader("Content-length", parameters.length);
		this.xmlhttp.setRequestHeader("Connection", "close");
		this.xmlhttp.setRequestHeader("Cache-Control", "no-cache");
		this.xmlhttp.setRequestHeader("If-Modified-Since", "Thu, 31 Jul 2008 01:20:57 GMT");
		this.xmlhttp.send(parameters);
	};

	this.oncomplete = function(s) {
		this.xmlhttp.onreadystatechange = function () {
			if (this.readyState == 4) {
				eval(s);
			}
		};
	};
}

function MenuRow() {
	this.items = [];

	this.item = function(linkid, blockid) {
		this.linkid = linkid;
		this.blockid = blockid;
	}

	this.additem = function(linkid, blockid) {
		this.items[this.items.length] = new this.item(linkid, blockid);
	}

	this.getitembylinkid = function(linkid) {
		for (var i = 0; i < this.items.length; i++) {
			if (this.items[i].linkid == linkid) {
				return this.items[i];
			}
		}
		return null;
	}

	this.blockisvisible = function(linkid) {
		var item = this.getitembylinkid(linkid);
		var obj = document.getElementById(item.blockid);
		if (obj.style.visibility == '' || obj.style.visibility == 'hidden') {
			return false;
		}
		return true;
	}

	this.hideitemblock = function(linkid) {
		var item = this.getitembylinkid(linkid);
		var obj = document.getElementById(item.blockid);
		if (obj.style.visibility == 'visible') {
			obj.style.visibility = 'hidden';
			var linkobj = document.getElementById(linkid);
			linkobj.innerHTML = linkobj.innerHTML.replace('▲', '▼');
		}
	}

	this.showitemblock = function(linkid) {
		var item = this.getitembylinkid(linkid);
		var obj = document.getElementById(item.blockid);
		if (obj.style.visibility == '' || obj.style.visibility == 'hidden') {
			obj.style.visibility = 'visible';
			var linkobj = document.getElementById(linkid);
			linkobj.innerHTML = linkobj.innerHTML.replace('▼', '▲');
		}
	}

	this.toggleitemblock = function(linkid) {
		var item = this.getitembylinkid(linkid);
		var linkobj = document.getElementById(linkid);
		var obj = document.getElementById(item.blockid);
		if (obj.style.visibility == '' || obj.style.visibility == 'hidden') {
			obj.style.visibility = 'visible';
			linkobj.innerHTML = linkobj.innerHTML.replace('▼', '▲');
		} else {
			obj.style.visibility = 'hidden';
			linkobj.innerHTML = linkobj.innerHTML.replace('▲', '▼');
		}
	}

	this.hideallblocks = function() {
		for (var i = 0; i < this.items.length; i++) {
			this.hideitemblock(this.items[i].blockid);
		}
	}

	this.clickonblock = function(obj) {
		for (var i = 0; i < this.items.length; i++) {
			var pe = document.getElementById(this.items[i].blockid).getElementsByTagName('*');
			for (var j = 0; j < pe.length; j++) {
				if (pe[j] == obj) return true;
			}
		}
		return false;
	}
}

/* Special functions */
function pagenav(page) {
	document.sform.reset();
	document.sform.page.value = page;
	document.sform.action = 'index.py?act=search';
	document.sform.submit();
}


function autoiframe(frame) {
	try {
		innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
		objToResize = (frame.style) ? frame.style : frame;
		objToResize.height = innerDoc.body.scrollHeight + 20 + 'px';
	}
	catch(err) {
	}
}

function highlight(obj) {
	obj.style['borderColor'] = '#000000';
}

function normallight(obj) {
	obj.style['borderColor'] = '#BABABA';
}


function mousedownhandler(e) {
	var targ;
	if (!e) {
		e = window.event;
	}
	if (e.target) {
		targ = e.target;
	} else if (e.srcElement) {
		targ = e.srcElement;
	}
	if (targ.nodeType == 3) {
		/* defeat Safari bug */
		targ = targ.parentNode;
	} else {
		/*targ = targ.offsetParent;*/
	}
	if (!targ) {
		topmenu.hideallblocks();
		return;
	}
	if (topmenu.clickonblock(targ)) {
		return;
	}
	for (var i = 0; i < topmenu.items.length; i++) {
		if (topmenu.items[i].linkid != targ.id) {
			topmenu.hideitemblock(topmenu.items[i].linkid);
		} else {
			topmenu.toggleitemblock(topmenu.items[i].linkid);
		}
	}

	if (targ.id == 'alertlink' && topmenu.blockisvisible(targ.id)) {
		var af = document.getElementById('alertframe');
		af.alertform.vimg.src = 'index.py?act=verifyimage&rnd=' + Math.random();
		af.alertform.keywords.value = document.sform.keywords.value;
		af.alertform.submit.disabled = false;
	}
}

function alertformverify(form) {
	var msg = '';
	if (isemail(form.email.value) == false) {
		msg += "Λάθος e-mail.\n";
	}
	if (isempty(form.keywords.value) == true) {
		msg += "Λάθος κλειδιά αναζήτησης.\n";
	}
	if (isempty(form.vimgnum.value) == true) {
		msg += "Λάθος αριθμός εικόνας.\n";
	} else {
		var a = new AjaxCall();
		a.openurl('index.py?act=getvimgnum', false);
		if (a.xmlhttp.responseText != form.vimgnum.value) {
			msg += "Λάθος αριθμός εικόνας.\n";
		}
	}

	if (msg != '') {
		alert(msg);
		return false;
	}
	return true;
}

function toggletopten(parentlink) {
	var obj = document.getElementById('topten');
	if (obj.style.visibility == 'visible') {
		obj.style.visibility = 'hidden';
		parentlink.innerHTML = parentlink.innerHTML.replace('▲', '▼');
	} else {
		obj.style.visibility = 'visible';
		parentlink.innerHTML = parentlink.innerHTML.replace('▼', '▲');
	}
}

/* Public vars */
var topmenu = new MenuRow();
topmenu.additem('toptenlink', 'topten');
topmenu.additem('medialistlink', 'medialist');
window.document.onmousedown = mousedownhandler;






