/* common.js for MMARTCMS developed by www.multimediart.be */
if ((parseInt(navigator.appVersion) >= 4 )) { 
	dwidth = screen.width;dheight = screen.height;}
else {dwidth = 400;dheight = 300;}
/*
#########################################################################
# void MMART_Popup(string pageToLoad, integer width, integer height,
#                  boolean scroll)
#########################################################################
# deze functie laad een popup, de parameters spreken voor zichzelf ...
#########################################################################
*/
function MMART_Popup( pageToLoad, width, height, scroll) {
	center=true;
	if (!width) {width = dwidth - 12;}
	if (!height) {height = dheight - 30;}
	if ((parseInt(navigator.appVersion) >= 4 ) && (center)){
		xposition = (dwidth - width) / 2;
		yposition = (dheight - height) / 2;}
	args =
	  "width=" + width + "," 
	+ "height=" + height + "," 
	+ "location=0," 
	+ "menubar=0,"
	+ "resizable=1,"
	+ "scrollbars=" + (scroll?1:0) + ","
	+ "status=0," 
	+ "titlebar=0,"
	+ "toolbar=0,"
	+ "hotkeys=0,"
	+ "screenx=" + xposition + ","
	+ "screeny=" + yposition + ","
	+ "left=" + xposition + ","
	+ "top=" + yposition;
	popup = window.open( pageToLoad,'MMART_Window'+parseInt(Math.random()*1000),args );
	if (popup.opener == null) popup.opener = self;
	popup.focus();
}
/* begin website specifiek javascript */
function _goto (_url) {
	document.location.href=_url;
}
function subnavon (_obj) {
	_obj.className='subnavon';
}
function subnavoff (_obj) {
	_obj.className='subnavoff';
}
function MMART_FormFocusOn (_id) {
	if(document.getElementById) {	//we don't want to raise any errors in older browsers
		document.getElementById('td_'+_id).style.background='#F4CA7D';
	}
}
function MMART_FormFocusOff (_id) {
	if(document.getElementById) {	//we don't want to raise any errors in older browsers
		document.getElementById('td_'+_id).style.background='#F7BC46';
	}
}
/* einde website specifiek javascript */
/*
#########################################################################
# boolean MMART_Validate(object objFrm)
#########################################################################
# objFrm	:	Het form-object van de form die moet gevalideerd worden
# 				bv: document.frmnaam
#########################################################################
# deze functie valideert een form aan de hand van een array die door
# de XLS stylesheet aangemaakt word, deze array draagt de naam aryFrmReq_<naam_van_de_form>.
# deze array bevat alle verplichte velden en hun informatie, ieder element van de array
# bevat zelf een array, dit is dus een 2-dimentionale array
# de array heeft het volgende formaat:
# array aryFrmReq_<naam_van_de_form>: {
# 	element 0: array {
# 		element 0:	naam van het element
# 		element 1:	formaat van het element, alleen van toepassing op een element met type 'textbox'
#					dit is INTEGER, DECIMAL, EMAIL of STRING
#                   De default waarde is STRING
# 		element 2:	titel van het element
#		element 3:	type van het element (naam van het xml-element) (textbox,textarea,selectbox,checkgroup,radiogroup)
# 	}
# 	element n: ...
#}
*/
function MMART_Validate (objFrm) {
	var aryFrmReq=eval('aryFrmReq_'+objFrm.name);	//array van deze form
	var intMainLoop=0;				//de teller voor de hoofdlus die alle verplichte elementen afloopt
	var strMsg='';			//de foutboodschap
	var objCur;				//het huidige object
	var intGroupLoop=0;				//de teller voor de lus van checkgroup en radiogroup 
	var blnGroupIsChecked=false;	//bij een checkgroup of een radiogroup houd deze variabele bij of er al een van de elementen aangekruist is
	for(intMainLoop=0;intMainLoop<aryFrmReq.length;intMainLoop++) {	//hoofd-lus die alle verplichte elementen afloopt
		/*
		als het huidige element geen checkgroup is plaatsen we het huidige object in objCur,
		omdat bij een checkgroup er [] vierkantje haakjes bij komen zodat er in PHP een array gevormd word
		*/
		if(aryFrmReq[intMainLoop][3]!='checkgroup') {objCur=eval('document.'+objFrm.name+'.'+aryFrmReq[intMainLoop][0]);}	//het huidige veld
		//'switch' het type van het element
		switch (aryFrmReq[intMainLoop][3]) {
			case 'textbox':		//het element is een textbox
				if((isNaN(parseInt(objCur.value)) || (objCur.value.indexOf('.') != -1 || objCur.value.indexOf(',') != -1)) && aryFrmReq[intMainLoop][1]=='INTEGER') {	//is het een nummer en *MOET* het een nummer zijn?
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' must be a integer number\n";
				}
				else if(isNaN(parseFloat(objCur.value)) && aryFrmReq[intMainLoop][1]=='DECIMAL') {	//is het een nummer en *MOET* het een nummer zijn?
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' must be a decimal number\n";
				}
				else if(!MMART_CheckEmail(objCur.value) && aryFrmReq[intMainLoop][1]=='EMAIL') {//is het een email adres en *MOET* het een email adres zijn?
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' must be a valid e-mail address\n";
				}
				else if(objCur.value.length==0) {
					/*
					als het geen van de bovenstaande is en het is een stukje tekst (een string) ...
					PS: we doen de vergelijking "aryFrmReq[i][1]=='STRING'" *NIET* omdat dit ook van toepassing moet zijn op elementen waarvan het 'format' attribuut niet is meegegeven
					*/
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' cannot be empty\n";
				}
				break;
			case 'textarea':	//het element is een textarea
				if(objCur.value.length==0) {	//is het niet leeg?
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' cannot be empty\n";
				}
				break;
			case 'selectbox':	//het element is een selectbox (dropdown menu)
				if(objCur.selectedIndex==0) {	//is er iets geselecteerd?
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' must have a selected value\n";
				}
				break;
			case 'checkgroup':	//het element is een groep van checkboxen
				objCur=eval('document.'+objFrm.name+'.elements[\''+aryFrmReq[intMainLoop][0]+'[]\']');	//het huidige element is de naam in de array + []
				blnGroupIsChecked=false;	//er is initieel geen enkele checkbox aangekruist
				for(intGroupLoop=0;intGroupLoop<objCur.length;intGroupLoop++) {	//overloop alle checkboxen van deze groep
					if(objCur[intGroupLoop].checked) {blnGroupIsChecked=true;}	//als deze checkbox aangekruist is, zet blnIsChecked op true
				}
				if(!blnGroupIsChecked) {	//is er geen enkele checkbox die aangekruist is?
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' must have a checked value\n";
				}
				break;
			case 'radiogroup':	//het element is een groep van radioboxen
				blnGroupIsChecked=false;	//er is initieel geen enkele radiobox aangekruist
				for(intGroupLoop=0;intGroupLoop<objCur.length;intGroupLoop++) {	//overloop alle radioboxen van deze groep
					if(objCur[intGroupLoop].checked) {blnGroupIsChecked=true;}	//als deze radiobox aangekruist is, zet blnIsChecked op true
				}
				if(!blnGroupIsChecked) {	//is er geen enkele radiobox die aangekruist is?
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' must have a checked value\n";
				}
				break;
			case 'colorbox':
				if(!MMART_IsValidColor(objCur.value)) {
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' is nog a valid color\n";
				}
				break;
			case 'align':
				if(objCur.value!='left' && objCur.value!='center' && objCur.value!='right') {
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' is required\n";
				}
				break;
			case 'valign':
				if(objCur.value!='top' && objCur.value!='middle' && objCur.value!='bottom') {
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' is required\n";
				}
				break;
			case 'hyperlink':
				if(objCur.value.length==0) {
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' is required\n";
				}
				break;
			case 'image':
				if(objCur.value.length==0) {
					strMsg=strMsg+'- \''+aryFrmReq[intMainLoop][2]+"\' is required\n";
				}
				break;
			
			// hier kunnen nog meer elementen worden toegevoegd ...
			default:	//elementen die niet herkend worden geven een foutmelding
				alert('This kind of element ('+aryFrmReq[intMainLoop][3]+') is not supported!');
		}
		
	}
	// de lus is beëindigd, het resultaat is gekend, nl:
	if(strMsg.length!=0) {	//als er iets aan de string met foutmeldingen is toegevoegd (de lengte is niet 0), dan is er een fout opgetreden
		alert('The form is not filled out correctly:\n'+strMsg);
		return false;
	}
	else {					//anders niet
		return true;
	}
}

function MMART_CheckEmail (strEmail) {
	if(strEmail.indexOf('@')>0) {return true;}
	else {return false;}
}

function MMART_IsValidColor(_color) {
	_color=_color.toLowerCase();
	var _isvalidhex=false;
	if(_color.length==7) {
		if(_color.substr(0,1)=='#') {
			_isvalidhex=true;
			var ascii=0;
			for(var i=1;i<7;i++) {
				ascii=_color.charCodeAt(i);
				if(!((ascii > 96 && ascii < 103) || (ascii > 47 && ascii < 58))) {_isvalidhex=false;}
			}
		}
	}
	return _isvalidhex;
}