
//
// Validation definitions
//

var valFrm = new Array();

// CMS

valFrm['device_cat'] =		[['txt','s']];	
	
valFrm['devices'] =			[['txt','s'],
							['coverWidth','n'],
							['coverHeight','n'],
							['catId','d']];

valFrm['cover_cat'] =		[['txt','s']];

valFrm['cover_sub_cat'] =	[['txt','s'],
							['catId','d']];

valFrm['covers'] =			[['txt','s'],
							['deviceId','d'],
							['catId','d'],
							['price','n'],
							['code','s']];
							
valFrm['add_key'] =			[['keyword','s']];

valFrm['modify_key'] =		[['da','s']];							
							
valFrm['voucher'] = 		[['voucher_txt','s'],
							['voucher_numCodes','n'],
							['voucher_discount','n'],
							['voucher_countryId','d']];
							
valFrm['campaign'] = 		[['campaign_txt','s'],
							['campaign_code','s'],
							['campaign_discount','n']];

valFrm['newsletter'] = 		[['subject','s'],
							['countryId','d'],
							['txt','s']];
							
valFrm['newsletter_send'] = [''];

valFrm['stat'] = 			[['startDate','y'],
							['endDate','y']];

valFrm['users'] = 			[''];
							
valFrm['order'] = 			[''];
							
// SITE

valFrm['login'] =			[['email','e'],
				   			['password','s']];

valFrm['new_user'] =		[['name','s'],
							['adr','s'],
							['zip','n'],
							['city','s'],
							['countryId','d'],
							['email','e'],
							['email2','e'],
							['passwrd','s'],
							['code','s'],
							['accept','c']];
							
valFrm['edit_user'] =		[['name','s'],
							['adr','s'],
							['zip','n'],
							['city','s'],
							['countryId','d'],
							['email','e'],
							['passwrd','s']];
							
valFrm['new_reseller'] =	[['name','s'],
							['youRef','s'],
							['ourRef','d'],
							['cellphone','s'],
							['telephone','s'],
							['email','e'],
							['passwrd','s'],
							['accept','c']];
							
valFrm['get_password'] =	[['email','e']];	

valFrm['resend_activation']=[['email','e']];	
							
valFrm['contact'] =			[['name','s'],
							['email','e'],
							['subject','s'],
							['msg','s'],
							['code','s']];
							
valFrm['upload_cover'] =	[['catId','d'],
							['deviceId','d'],
							['uploadCoverURL','s']];
							
valFrm['distributor'] =		[['name','s'],
							['adr','s'],
							['zip','n'],
							['city','s'],
							['att','s'],
							['num_cover','n'],
							['distributor_payment','d'],
							['distributor_att','s']];
							
// SHOP							
							
valFrm['voucher_code'] =	[['voucherCode','s']];							

valFrm['payment'] =			[['CardNumber','n'],
							['ExpireMonth','d'],
							['ExpireYear','d'],
							['CardCVC','n'],
							['accept','c']];
														
							
//
// Validate function
//

function validateFrm(frmObj,fid) {
	var frmElm;
	var errorMsg = '';
	var valArr = valFrm[fid];	
	if (valArr==undefined) return true;

	for (var eCnt=0; eCnt<valArr.length&&errorMsg==''; eCnt++) {
		eval('frmElm = frmObj.'+valArr[eCnt][0]);
		if (frmElm==undefined) continue;
		if (frmElm.disabled) continue;
		// Check pending on type
		switch(valArr[eCnt][1]) {
		case "s": // String
			errorMsg = chkStr(frmElm.value);		
			break;	
		case "u": // Upload
			errorMsg = chkUpload(frmElm.value);		
			break;
		case "n": // Number
			errorMsg = chkNumber(frmElm.value);
			break;
		case "e": // Email
			errorMsg = chkEmail(frmElm.value);
			break;															
		case "d": // Dropdown
			errorMsg = chkSelect(frmElm);		
			break;	
		case "l": // Listbox
			errorMsg = chkListbox(frmElm);		
			break;			
		case "r": // Radio Group
			errorMsg = chkRadio(frmElm);		
			break;		
		case "c": // Checkbox
			errorMsg = chkCheckbox(frmElm);		
			break;	
		case "y": // Date
			errorMsg = chkDate(frmElm.value);		
			break;		
		case "t": // Time
			errorMsg = chkTime(frmElm.value);		
			break;															
		}
	}

	if (errorMsg!='') {
		alert(errorMsg);
		if (frmElm.type!=undefined) frmElm.focus();
		return false;	
	}
	
	// Return if form is from the website
	if (fid=='login'||fid=='new_user'||fid=='edit_user'||fid=='get_password'||fid=='contact'||fid=='upload_cover'||fid=='voucher_code'||fid=='payment') {
		// Enable all elements, but disable all buttons
		enableElements(frmObj);
		disableButtons(frmObj);
		return true;
	}	
	
	// Confirm update
	if (!confirmUpdate()) return false;
	
	// Enable all elements, but disable all buttons
	enableElements(frmObj);
	disableButtons(frmObj);
	
	return true;
}

//
// Element check functions
//

function chkStr(str) {
	if (str.length>0) return '';
	else return 'Udfyld venligst dette felt.';
	//else return (lang=='da') ? 'Udfyld venligst dette felt.' : 'Please fill in this field.';
}

function chkUpload(str) {
	if (str.length>0) return '';
	else return 'Upload venligst en fil fra dette felt.';
	//else return (lang=='da') ? 'Upload venligst en fil fra dette felt.' : 'Please upload a file from this field.';
}

function chkNumber(str) {
	if (!isNaN(str) && str != '') return '';
	else return 'Udfyld venligst dette felt med et tal.\nBrug punktum som eventuel decimal seperator!';
	//else return (lang=='da') ? 'Udfyld venligst dette felt med et tal.\nBrug punktum som eventuel decimal seperator!' : 'Please fill out this field with a number.\nUse (.) as seperator!';
}

function chkEmail(str) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,5})$/;
   if(reg.test(str)) return '';
   else return 'Indtast venligst en gyldig e-mail adresse.';
   //else return (lang=='da') ? 'Indtast venligst en gyldig email adresse.' : 'Please fill in a valid e-mail address.';
}

function chkSelect(elm) {
	var selIndex = elm.selectedIndex;
	var val = (selIndex>0) ? elm.options[selIndex].value : '';
	if (val.length>0) return '';
	else return 'Vælg venligst en mulighed fra denne dropdown.';
	//else return (lang=='da') ? 'Vælg venligst en mulighed fra denne dropdown.' : 'Please choose an option from this dropdown.';
}

function chkListbox(elm) {
	if (elm.options.length>0) return '';
	else return 'Tilføj venligst en mulighed til denne listbox.';
	//else return (lang=='da') ? 'Tilføj venligst en mulighed til denne listbox.' : 'Please add an option from this listbox.';
}

function chkRadio(radioGrp) {
	var selRadio = false;
	for (var rgCnt=0; rgCnt<radioGrp.length; rgCnt++) {
		if (radioGrp[rgCnt].checked) 
			selRadio = true;
	}
	if (selRadio) return '';
	else return 'Vælg venligst en mulighed fra radio knapperne.';
	//else return (lang=='da') ? 'Vælg venligst en mulighed fra radio knapperne.' : 'Please choose an option from this group.';
}

function chkCheckbox(elm) {
	if (elm.checked) return '';
	else return 'Sæt flueben i boxen.';
	//else return (lang=='da') ? 'Sæt flueben i boxen.' : 'Please check this box.';	
}

function chkDate(str) {
	var error = '';
	var dateArr = str.split('-');
	if (str.length == 0) return '';
	else if (str.length<10) error = 'forkert format';
	else if (str.charAt(4)!='-'||str.charAt(7)!='-') error = 'bindestreg (-) mangler';
	else if (isNaN(dateArr[0])) error = 'bogstav fundet i året';	
	else if (isNaN(dateArr[1])) error = 'bogstav fundet i måneden';
	else if (isNaN(dateArr[2])) error = 'bogstav fundet i dagen';
	if (error) return 'Brug venligst følgende format: ÅÅÅÅ-MM-DD (' + error + ')';
	else return '';	
	/*
	if (str.length == 0) return '';
	else if (str.length<10) error = 'forkert format';
	else if (str.charAt(4)!='-'||str.charAt(7)!='-') error = 'bindestreg (-) mangler';
	else if (isNaN(dateArr[0])) error = 'bogstav fundet i året';	
	else if (isNaN(dateArr[1])) error = 'bogstav fundet i måneden';
	else if (isNaN(dateArr[2])) error = 'bogstav fundet i dagen';
	if (error) return 'Brug venligst følgende format: ÅÅÅÅ-MM-DD (' + error + ')';
	else return '';
	*/
}

function chkTime(str) {
	var error = '';
	var timeArr = str.split(':');
	if (str.length==0) return '';
	else if (str.length<5) error = 'forkert format';
	else if (str.charAt(2)!=':') error = 'kolon (:) mangler';
	else if (isNaN(timeArr[0])) error = 'bogstav fundet i timen';
	else if (isNaN(timeArr[1])) error = 'bogstav fundet i minutterne';	
	if (error) return 'Brug venligst følgende format: hh:mm (' + error + ')';	
	else return '';
	/*
	if (str.length==0) return '';
	else if (str.length<5) error = 'forkert format';
	else if (str.charAt(2)!=':') error = 'kolon (:) mangler';
	else if (isNaN(timeArr[0])) error = 'bogstav fundet i timen';
	else if (isNaN(timeArr[1])) error = 'bogstav fundet i minutterne';	
	if (error) return 'Brug venligst følgende format: hh:mm (' + error + ')';	
	else return '';
	*/
}

//
// Set date format (helper)
//

function setDateFormat(elmObj) {
	var dateStr = elmObj.value;
	if (chkDate(dateStr)!='') {
		dateStr = dateStr.split('-').join('');
		var d = new Date();
		var day = dateStr.substr(0,2);
		var month = dateStr.substr(2,2);		 
		var year = d.getFullYear();		
		if (dateStr.substr(4,2).length == 2) year = '20' + dateStr.substr(4,2);
		if (dateStr.substr(4,4).length == 4) year = dateStr.substr(4,4);
		if (day.length>0&&month.length>0) elmObj.value = day + '-' + month + '-' + year;
	}
}

//
// Confirm update
//

function confirmUpdate() {
	var urlStr = window.location.href;
	if (urlStr.indexOf('com=new') == -1) {
		if (confirm('Bekræft?')) return true
		else return false;		
		/*
		if (confirm('Bekræft?')) return true
		else return false;
		*/
	}
	return true;
}

//
// Enable elements
//

function enableElements(frmObj) {
	for (var i=0;i<frmObj.length;i++) {
		var frmElm = frmObj.elements[i];
		frmElm.disabled = false;
	}		
}

//
// Disable buttons
//

function disableButtons(frmObj) {
	for (var i=0;i<frmObj.length;i++) {
		var frmElm = frmObj.elements[i];
		if (frmElm.type == 'submit' || frmElm.type == 'button') {
			frmElm.value = 'Vent venligst';
			//frmElm.value = 'Vent venligst';
			frmElm.disabled = true;
		}
	}	
}

//
// Server error checking
//

function catchError() {
	var queryStr = window.location.search.substring(1);
	var errorPos = queryStr.indexOf('error');
	if (errorPos != -1) {
		var errorStr = queryStr.substr(errorPos+6);
		alert(decodeURIComponent(errorStr));
	}
}
