function multi_select(id, all) {
	var target = document.getElementById("selected_"+id);
	var source = document.getElementById("avail_"+id);	
	
	var tpos = target.options.length;
	
	
	for(i=0;i<source.options.length;) {
		if(source.options[i].selected || all) {
			target.options[tpos] = new Option(source.options[i].text,source.options[i].value);
			target.options[tpos].selected = true;
			
			tpos++;
		    
			source.options[i] = null;
			i=0;
		} else {
			i++;
		}
	}
	updateMultiSelectHidden(id);
}

function updateMultiSelectHidden(id) {

	var target = document.getElementById("selected_"+id);
	var hidden = document.getElementById(id);
	
	hidden.value = "";
	for(i=0;i<target.options.length;i++) {
		hidden.value = hidden.value + "," +target.options[i].value;
	}

}

function multi_unselect(id, all) {
	var source = document.getElementById("selected_"+id);
	var target = document.getElementById("avail_"+id);	
	
	var tpos = target.options.length;
	
	for(i=0;i<source.options.length;) {
		if(source.options[i].selected || all) {
			target.options[tpos++] = new Option(source.options[i].text,source.options[i].value);
			source.options[i] = null;
			i=0;
		} else {
			i++;
		}
	}
	updateMultiSelectHidden(id);
}

function deselectCheckBox(checkBoxId)
{
	document.getElementById(checkBoxId).checked = false;
}

function checkUncheckAll(theElement) {
     var theForm = theElement.form, z = 0;
	 for(z=0; z<theForm.length;z++){
      if(theForm[z].type == 'checkbox' && theForm[z].name != 'checkall'){
	  theForm[z].checked = theElement.checked;
	  }
     }
    }


function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	
	/*
	if the expires variable is set, make the correct 
	expires time, the current script below will set 
	it for x number of days, to make it for hours, 
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
	( ( path ) ? ";path=" + path : "" ) + 
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

function Get_Cookie( name ) {
		
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) &&
	( name != document.cookie.substring( 0, name.length ) ) )
	{
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function changeLanguage(src) {
	var lang = src.value;
	Set_Cookie("OD_language",lang,300,"","","");
	document.getElementById("changeLanguage").submit();
}

function changeCurrency(src) {
	var currency = src.value;
	Set_Cookie("OD_currency",currency,300,"","","");
	document.getElementById("changeCurrency").submit();
}


function isInt(x) {
	var y=parseInt(x);
	if (isNaN(y)) return false;
	return x==y && x.toString()==y.toString();
} 

function showForm(ref) {
	var nonEdit = document.getElementById("pNonEdit_"+ref);
	var edit = document.getElementById("pEdit_"+ref);
	nonEdit.style.display = "none";
	edit.style.display = "inline";
}

function validatePercentage(ref) {
	var val = document.getElementById("percentage_"+ref).value;
	var ok = isInt(val);
	if (!ok || (val>100 || val<0) ) {
		alert("Please enter a number between 0 and 100");
		return false;
	}
	return true;
}

function submitForm(action,formName) { 
	var actionField = document.getElementById("action_"+formName);
	actionField.value = action;

	actionField.form.submit();
}

function check_email() {
	var elem = document.getElementById('email');
	
	if(elem.value.length == 0){
		elem.focus();
		document.getElementById('email_error').innerHTML = "Please enter your email address";
		return false;
	}
	
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	if (!filter.test(elem.value)) {
		elem.focus();
		document.getElementById('email_error').innerHTML = "Please enter correct email format";
		return false;
	}
	return true;
}

function check_passwords() {
	var password = document.getElementById('password');
	var re_password = document.getElementById('re_password');
	if(password.value.length == 0){
		password.focus();
		document.getElementById('pass_error').innerHTML = "Please enter a password";
		return false;
	}
	
	if(re_password.value.length == 0){
		re_password.focus();
		document.getElementById('re_pass_error').innerHTML = "Please enter a password";
		return false;
	}
	
	if(re_password.value == password.value) {
		document.getElementById('registerButton').style.display = "none";
		document.getElementById('registering').style.display = "inline";
		return true;
	}
	
	password.focus();
	document.getElementById('pass_error').innerHTML = "The password you have entered must be identical in both boxes";
	return false;

}

function check_register_data() {
	var email = document.getElementById('email');
	if(email.value.length == 0){
		email.focus();
		document.getElementById('email_error').innerHTML = "Please enter your email address";
		return false;
	}
	
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	if (!filter.test(email.value)) {
		email.focus();
		document.getElementById('email_error').innerHTML = "Please enter correct email format";
		return false;
	}
	
	var re_email = document.getElementById('re_email');
	if(re_email.value != email.value) {
		re_email.focus();
		document.getElementById('re_email_error').innerHTML = "The email address you have entered must be identical in both boxes. Please re-enter. ";
		return false;
	}
	
	return check_passwords();
}

function validate_email_pass_data() {
	var email = document.getElementById('email');
	if(email.value.length == 0){
		email.focus();
		document.getElementById('email_error').innerHTML = "Please enter your email address";
		return false;
	}
	
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	if (!filter.test(email.value)) {
		email.focus();
		document.getElementById('email_error').innerHTML = "Please enter correct email format";
		return false;
	}
	
	var re_email = document.getElementById('re_email');
	if(re_email.value != email.value) {
		re_email.focus();
		document.getElementById('re_email_error').innerHTML = "The email address you have entered must be identical in both boxes. Please re-enter. ";
		return false;
	}
	
	var password = document.getElementById('password');
	if(password.value.length == 0) {
		return true;
	}
	return check_passwords();
}

function validate_address_change() {
	var result = true; 
	var elem = false;
	
	elem = document.getElementById('building');
	if(elem.value.length == 0) {
		document.getElementById('building_error').innerHTML = "Please enter your House No/Name";
		result = false; 
	}
	
	elem = document.getElementById('street');
	if(elem.value.length == 0) {
		document.getElementById('street_error').innerHTML = "Please enter your street";
		result = false; 
	}
	
	elem = document.getElementById('town');
	if(elem.value.length == 0) {
		document.getElementById('town_error').innerHTML = "Please enter your town";
		result = false; 
	}
	
	elem = document.getElementById('postcode');
	if(elem.value.length == 0) {
		document.getElementById('postcode_error').innerHTML = "Please enter your postcode";
		result = false; 
	}
	
	return result;
}
function simpleSubmitForm(formName) {
	document.getElementById(formName).submit();
}
function changeActionAndSubmitForm (formName,url) {
    var form = document.getElementById(formName);
    form.action=url;
    form.submit();
}

function ToDoNoteEdit(){
	var actions=document.getElementById("actionType");
	var users=document.getElementById("actionFor");
	var actionText=document.getElementById("actionDetails");

	if(actions.value==0) {
		users.disabled=true;
		actionText.disabled=true;
	}else{
		users.disabled=false;
		actionText.disabled=false;
	}
}

function reloadToDoWidget (widgetId,href) {
	dijit.byId(widgetId).setHref(href);
}

var todoNoteDisplayType = false;

function deleteToDoNote (ref,task,type) {
	todoNoteDisplayType = type;
	onedesk.request("getData.php",task,"ajaxDelete",{ref: ref },dojo.hitch(this,"deleteToDoNoteDone"));
	return false;
}

function deleteToDoNoteDone (response) {
	//console.log(response);
	if(response.redirect) {
		window.location = response.redirect;
		return;
	}
	if(!response.result) {
		alert(response.errMsg);
	} else {
		reloadToDoWidget("wTopLeft","getContent.php?task=actionFrame&type="+todoNoteDisplayType);
	}
}

function isInteger (s) {
	var i;

	if (isEmpty(s))
	if (isInteger.arguments.length == 1) return 0;
	else return (isInteger.arguments[1] == true);

	for (i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if (!isDigit(c)) return false;
	}
	return true;
}

function isEmpty(s) {
	return ((s == null) || (s.length == 0))
}

function isDigit (c) {
	return ((c >= "0") && (c <= "9"))
}

function getElementsByClassName(classname, node) {
	if(!node) node = document.getElementsByTagName("body")[0];
	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName("*");
	for(var i=0,j=els.length; i<j; i++)
	if(re.test(els[i].className))a.push(els[i]);
	return a;
}

/*
 * tableruler()
 * written by Chris Heilmann for alistapart.
 * enables a rollover of rows for each table with the classname "hlrows"
 * */
function tableruler() {
if (document.getElementById && document.createTextNode)
{
	var tables=document.getElementsByTagName('table');
	for (var i=0;i<tables.length;i++)
	{
		/* if(tables[i].className == 'ruler')
 * 		 added flexibility by S.
 * 		 		 */
		if(tables[i].className.match('ruler') != null )
		{
			var trs=tables[i].getElementsByTagName('tr');
			for(var j=0;j<trs.length;j++)
			{
				if(trs[j].parentNode.nodeName=='TBODY')
				{
					trs[j].onmouseover=function(){this.className='ruled';return false}
					trs[j].onmouseout=function(){this.className='';return false}
				}
			}
		}
	}
}
}

