/*SHORTCUTS FOR COMMON JAVASCRIPT COMMANDS */

//NB Don't use with mootools - mootools has its own (sometimes similar) shortcuts.

//Retrieve select values - text (i.e. HTML visible text), 'value' = is option value, 'index' - number in the select list (start 0)
//'textorvalueorindex' is optional, returns the el if not selected

function getFileExtension(filename) 
{ 
if( filename.length == 0 ) return ""; 
 var dot = filename.lastIndexOf("."); 
 if( dot == -1 ) return ""; 
 var extension = filename.substr(dot,filename.length); 
 return extension; 
} 


function getElementbyClass(classname){
var inc=0
var classcol = new Array();

var alltags=document.all? document.all : document.getElementsByTagName("*")
	for (i=0; i<alltags.length; i++){
	if (alltags[i].className==classname)
	classcol[inc++]=alltags[i]
	}
return classcol;
}

function convertMonth(thismonth) {
	
var month=new Array(12);
	month[0]="January";
	month[1]="February";
	month[2]="March";
	month[3]="April";
	month[4]="May";
	month[5]="June";
	month[6]="July";
	month[7]="August";
	month[8]="September";
	month[9]="October";
	month[10]="November";
	month[11]="December";
	

return month[thismonth];
}


function insertLoading(div) {
var el = $(div);
var newdiv = $$('div');
newdiv.id ='loading_div';
var img = $$('img');
img.src = '../icons/loading.gif';
newdiv.appendChild(img)
el.appendChild(newdiv);
el = null;
}
function removeLoading() {
var div = $('loading_div');
var theparent = div.parentNode;
theparent.removeChild(div);
div = null; theparent = null;
}
function btnDisable(btn) {
	var thebtn = $(btn);
	thebtn.disabled = true;
	thebtn=null;
}
function btnEnable(btn) {
	var thebtn = $(btn);
	thebtn.disabled = '';
	thebtn = null;
}
function getSelect(id,textorvalueorindex) {
	//if (typeof textorvalueorindex == 'undefined' ) textorvalueorindex = 'text';
	var el = document.getElementById(id);
	var index = el.selectedIndex;
	switch (textorvalueorindex) {
		case 'value':
			return el[index].value; 
		case 'index':
			return index; 
		case 'text':
			return el[index].text;
		default:
			return el;		
	}	
}

//Retrieve any element by id, optional 'value' if you want just value of item
function $(element,value) {
if (typeof value == 'undefined' ) value = 'none';
var el = document.getElementById(element);
	switch (value) {
		case 'none':
			return el;
		case 'value':
			if (el.type == "checkbox") {
			var answer = el.checked; return answer;
			} else if (el.type == "text" || el.type == "textarea" || el.type == "hidden") {
			var answer = el.value; return answer;	
			};
		
	};
}

//Create an element
function $$(element) {
var el = document.createElement(element);
return el;
}

//Create a text node
function txt(text) {
var el = document.createTextNode(text);
return el;
}

function clearChildNodes(el) {
		var element = $(el);
		if ( element.hasChildNodes() ) {
			while (element.childNodes.length >=1)  {
			element.removeChild(element.firstChild);
			};
		};
	
}
function saved() {
var div = $$('div');
div.innerHTML = 'Saved';
div.id = 'saved_div';
var theparent = $('DHTMLSuite_paneContentcenter');
theparent.appendChild(div);
window.setTimeout(remove_saved,1200);
	function remove_saved() {
		var thediv = $('saved_div');
		var theparent = thediv.parentNode;
		theparent.removeChild(thediv);
	}

}

function start() {
var w = objWidth('myobj');
var xxx = (pageWidth()-w-20);
var yyy = 10;
var endPos = xxx - 100;
moveit();
setObjVis('myobj','visible');
}
function moveit() {
var x = (posLeft()+xxx) + 'px';
var y = (posTop()+yyy) + 'px';
moveObjTo('myobj',x,y);
}
function mover() {
if (xxx > endPos) {
xxx -=2; moveit(); setTimeout('mover()',50);}
}
//optoins should be an array of arrays, when specific checks are required the array index should be named as for the check below, that index will pass through to the check function + its array of like-values
function validation(options) {
	var answer = true;
	for(var i in options) {
		
		if (i != 'length')answer = checkPipeCarat(options[i]); //length must have own pipe carat since that has 2 deep array
		
		if (answer == false)return false;
		
		if (i == 'email') {  answer = emailValidate(options[i]); }
		if (answer == false) {return false; }
		
		if (i == 'url') {  answer = urlValidate(options[i]); }
		if (answer == false) { return false; }
		
		if (i == 'length') {  answer = lengthValidate(options[i]); } 
		if (answer == false) {   return false; }
		
		if (i == 'integer') { answer = integerValidate(options[i]); }
		if (answer == false) {  return false; }
		
		if (i == 'price') { answer = priceValidate(options[i]); }
		if (answer == false) { return false; }
		
	};
	return answer;

}	
function lengthValidate(array) {
	for (a=0;a<array.length;a++) {
		var maxlength = array[a][0];
		var value = array[a][1];
		if (value.length > maxlength && value != "") { return false; };
		var pipecheck = checkPipeCarat(array[a][1]); 
		if (pipecheck == false) return false;
	
	};
	
	return true;
}
function integerValidate(array) {
	for (b=0;b<array.length;b++) {
		var oldstring = array[b]; 
		var newstring = parseFloat(oldstring).toString(); 
		if (oldstring.length == newstring.length && newstring != "NaN") { 
		} else { alert("A character has been entered in an integer-only field."); return false; }
	};
	return true;
}

	function emailValidate(array) {
		for (c=0;c<array.length;c++) {
			if (array[c] != "") {
				var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
				 var address = array[c];
				 if((reg.test(address) && address != "") == false) {
				alert('There is an invalid email.');
				 return false;
				 } ;
			};
		};
		return true;
	}
	function urlValidate(array) {
		lengthcheck = Array();
		for (d=0;d<array.length;d++) {
			if (array[d] != "") {
				lengthcheck[d] = [255,array[d]];
					var theurl=array[d];
				 var tomatch= /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/
				 if (theurl != "" && tomatch.test(theurl)) {
				 } else {
					 window.alert("There is an invalid website address. Please try again.");
					 return false;
				};
			};
		};
		
		return true;
	}
	function checkPipeCarat(array) {
		for (e=0;e<array.length;e++) {
			var check; var z; var k; var ohdear;
				var checkstr =  "|^";
					for (z=0;z<array[e].length;z++) {
						check = 2;
						for (k=0; k<checkstr.length; k++) {
							if (array[e].charAt(z) == 
								checkstr.charAt(k)) {
								
							 check = 1;	
							};
						};
						if (check == 1) {
						alert('Please do not enter a | or ^ character');
						return false; 
						break;
						};
					};
		};
		return true;
					
}
function priceValidate(array) {
	for (f=0;f<array.length;f++) {
		if (array[f] != "") {
			var check; var z; var k; var ohdear;
				var checkstr =  "0123456789.";
				for (z=0;z<array[f].length;z++) {
						check = 2;
						for (k=0; k<checkstr.length; k++) {
							if (array[f].charAt(z) == 
								checkstr.charAt(k)) {
								 
							 check = 1;	
							};
						};
						if (check == 2) {
						alert('Please only enter a numeral or a period for prices.');
						return false; 
						break;
						};
					};	
		};
	};
		return true;
					
}
function toggleHidden(div_id) {
	var el = $(div_id);
	if (el.style.visibility=='hidden') {
	el.style.visibility = '' 
	} else {
	el.style.visibility = 'hidden';
	el.value = ''; 
	};

	
}
function toggleNone(div_id) {
	var el = $(div_id);
	if (el.style.display=='none') {
	el.style.display = '' 
	} else {
	el.style.display = 'none';
	el.value = ''; 
	};

	
}