// browser functions
function icms_redirect(url) {
	location.href=url;	
}

function icms_reload() {
	location.reload();	
}

// number functions
function icms_getRandomNumber(number) {
	day = new Date();
	seed = day.getTime();
	return parseInt(((seed - (parseInt(seed/1000,10) * 1000)) /10) /100 * number + 1,10);
}

// date functions
function get_validdateutc(year, month, day, hour, minute) {
	if(check_date(year, month, day) === true) {
		var date = new Date(year-0,month-1,day-0,hour-0,minute-0);
		return Date.UTC(check_y2k(date.getYear()),date.getMonth(),date.getDate(),hour,minute,0);
	} else {
		return 0;
	}
}

// url functions
function get_urlparameter(name) {
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec(window.location.href);
	if(results == null) return "";
	else return results[1];
}

// string functions
function trimString(string) {
	return string.replace(/^\s|\s$/g, "");
}

// check functions
function check_username(username, key) {
	var error = true;
	if(!/^[a-zA-Z0-9\_]+$/.test(username)) error = key+': '+lang.getLang('check_errors_username');
	return error;
}

function check_password(npassword, cpassword, strength, length, key) {
	var error = true;
	if(npassword != "" && cpassword != "") {
		if(npassword === cpassword) {
			error = check_passwordcomplexity(npassword, strength, length, key);
		} else {
			error = key+': '+lang.getLang('check_errors_passwordsnotmatch');
		}
	} else {
		error = key+': '+lang.getLang('check_errors_password');
	}
	return error;
}

function check_passwordcomplexity(password, strength, length, key) {
	var error = true;
	if(password.length >= length) {
		switch(strength) {
			case 1:
			if(!/^[A-Za-z0-9]+$/.test(password) || !/[A-Z]+/.test(password)) error = lang.getLang('check_errors_passwordstrengthstrong');
			break;
			
			case 2:
			if(!/^[A-Za-z0-9]+$/.test(password) || !/[A-Z]+/.test(password) || !/[a-z]+/.test(password) || !/[0-9]+/.test(password)) error = lang.getLang('check_errors_passwordstrengthverystrong');
			break;
			
			default:
			if(!/^[A-Za-z0-9]+$/.test(password)) error = lang.getLang('check_errors_passwordstrengthnormal');
			break;
		}
	} else {
		error = key+': '+lang.getLang('check_errors_passwordlength').replace('{0}', length);
	}
	return error;
}

function check_email(email, key) {
	var error = true;
	if(!/^[a-zA-Z0-9]+([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/.test(trimString(email))) error = key+': '+lang.getLang('check_errors_email');
	return error;
}

function check_number(number, key, notzero) {
	var error = true;
	if(notzero != null && notzero) {
		if(!/^[\d]+$/.test(number) || number == 0) error = key+': '+lang.getLang('check_errors_zero');
	} else {
		if(!/^[\d]+$/.test(number)) error = key+': '+lang.getLang('check_errors_number');
	}
	return error;
}

function check_percentage(number, key) {
	var error = true;
	if(number < 1 || number > 100) {
		error = key+': '+lang.getLang('check_errors_percentage');
	}
	return error;
}

function check_y2k(number) {
	return (number < 1000) ? number + 1900 : number; 
}

function check_date(year, month, day, key) {
	var error = true;
	var invaliddate = day + '/' + month + '/' + year;
	var date = new Date(year-0,month-1,day-0);
	var validdate = date.getDate() + '/' + (date.getMonth()+1) + '/' + check_y2k(date.getYear());
	if(invaliddate != validdate) {
		error = key+': '+lang.getLang('check_errors_date');
	}
	return error;
}

function check_dateandtimerange(startdate, enddate, key) {
	var error = true;
	if(startdate >= enddate) {
		error = key+': '+lang.getLang('check_errors_dateandtimerange');
	}
	return error;
}

function check_daterange(startdate, enddate, key) {
	var error = true;
	if(startdate > enddate) {
		error = key+': '+lang.getLang('check_errors_daterange');
	}
	return error;
}

function check_timerange(starttime, endtime, key) {
	var error = true;
	if(starttime >= endtime) {
		error = key+': '+lang.getLang('check_errors_timerange');
	}
	return error;
}

function check_filetype(name, key) {
	var error = true;
	var extension = name.split('.').pop().toLowerCase();;
	var extensions = /^(bmp|doc|docx|flv|gif|jpg|htm|html|mp3|pdf|png|ppt|pptx|txt|wma|wmv|xls|xlsx|zip)$/;
	if(!extensions.test(extension)) error = key+': '+lang.getLang('check_errors_filetype');
	return error;
}

function check_imagetype(name, key) {
	var error = true;
	if(!is_image(name)) {
		error = key+': '+lang.getLang('check_errors_imagetype');
	}
	return error;
}

function check_videotype(name, key) {
	var error = true;
	var extension = name.split('.').pop();
	var extensions = /^(flv|wmv)$/;
	if(!extensions.test(extension)) error = key+': '+lang.getLang('check_errors_videotype');
	return error;
}

function check_domain(domain) {
	return /^(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/.test(domain);
}

function icms_chkurl(url) {
	if(!(url.match(/^https?:\/\/([\w\.]+)+(:\d+)?(\/(\w\/_\.]*(\?\S+)?)?)?$/))) return false;
	return true;
}

// is functions
function is_number(number) {
	return /^[\d]+$/.test(number);
}

function is_image(name) {
	return /\.(jpg|gif|png|bmp)$/.test(name.toLowerCase());
}

// formatting functions
function icms_to2Decimalplaces(n) {
	var s = "" + Math.round(n * 100) / 100
	var i = s.indexOf('.')
	if (i < 0) return s + ".00"
	var t = s.substring(0, i + 1) + s.substring(i + 1, i + 3)
	if (i + 2 == s.length) t += "0"
	return t
}

function icms_reformatPhoneNumber(obj) {
	// extract all numbers
	var number = '';
	for(var i=0; i<obj.value.length; i++) {
		if(obj.value.charAt(i).match(/[\d]/) != null) {
			number += obj.value.charAt(i);
		}
	}
	
	if(number.length == 7) {
		obj.value = number.substr(0,3) + '-' + number.substr(3,4);	
	} else if(number.length == 10) {
		obj.value = '(' + number.substr(0,3) + ') ' + number.substr(3,3) + '-' + number.substr(6,4);	
	} else {
		obj.value = number;
	}
}

// display functions
function dspRequired(required) {
	var count = 0;
	var message = lang.getLang('errors_fieldsrequired') + "\n";
	for(var i=0; i<required.length; i++) {
		if(required[i] != "" || required[i] != null) {
			message = message + " - " + required[i] + "\n";
			count += 1;
		}
	}
	
	if(count > 0) {
		alert(message);
		return false;
	} else {
		return true;
	}
}


function dspErrors(errors) {
	var count = 0;
	var message = lang.getLang('errors_errorsoccured') + "\n";
	for(var i=0; i<errors.length; i++) {
		if(errors[i] != "" || errors[i] != null) {
			message = message + " - " + errors[i] + "\n";
			count += 1;
		}
	}
	
	if(count > 0) {
		alert(message);
		return false;
	} else {
		return true;
	}
}
