function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

function Is_Email(email){
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
	if (!(!reg1.test(email) && reg2.test(email))) return false;
	else return true;
}

function Is_Blank(obj, chk_val, msg){
	if(trim(obj.value) == chk_val){
		alert(msg);
		obj.focus();
		return true;
	}
	else return false;
}

function Check_Blank(obj, chk_val, msg){
	if(trim(obj.value) == chk_val){
		msg = "\n - " + msg;
	}
	else msg = '';
	return msg;
}

function Show_Hide(id){
	id = document.getElementById(id);
	if(id.style.display == "none") id.style.display = '';
	else if(id.style.display == "") id.style.display = 'none';
}

function Show(id){
	id = document.getElementById(id);
	if(id.style.display == "none") id.style.display = '';
}

function Hide(id){
	id = document.getElementById(id);
	if(id.style.display == "") id.style.display = 'none';
}

function isValidUsername(obj){
	uname = obj.value;
	var arr = new Array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_');
	if(uname.length < 4){
		alert("Username should be minimum 6 characters long.");
		obj.focus();
		return false;
	}
	for(u=0; u < uname.length; u++){
		char = uname[u];
		for(c=0; c < arr.length; c++){
			if(arr[c] != char){
				alert("Username can contain only a-z, 0-9, or underscore(_).");
				obj.focus();
				return false;
			}
		}
	}
}

function Validate_Register(frm){
	var err = '';
	err = err + Check_Blank(frm.plan_id, '', 'Please select a Subscription Plan.');
	
	err = err + Check_Blank(frm.user_username, '', 'Username');
	
	if(frm.user_username.value != ""){
		var username = frm.user_username.value;
		if(username.length < 4) err = err + "\n - Username - use at least 4 characters.";
		else{
			var scrn_arr = new Array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_');
			var flg_scrn = 0;
			for(s=0; s < username.length; s++){
				scrn_char = username.substr(s, 1);
				for(t=0; t < scrn_arr.length; t++){
					if(scrn_char == scrn_arr[t]) flg_scrn = 1;
				}
				if(flg_scrn == 0) break;
			}
			if(flg_scrn == 0) err = err + "\n - Username must contain only a-z, 0-9 and underscore (_).";
		}
	}
	
	err = err + Check_Blank(frm.user_password, '', 'Password');
	if(frm.user_password.value != ""){
		var password = frm.user_password.value;
		if(password.length < 4) err = err + "\n - Password - use at least 4 characters.";
		else{
			err = err + Check_Blank(frm.re_pwd, '', 'Re-type Password');
			if(frm.user_password.value != "" && frm.re_pwd.value != "" && frm.re_pwd.value != frm.user_password.value){
				err = err + "\n - Confirm Password.";
			}
		}
	}
	
	err = err + Check_Blank(frm.user_email, '', 'E-mail Address');
	if(frm.user_email.value != "" && !Is_Email(frm.user_email.value)) err = err + "\n - E-mail Address is invalid.";
	
	err = err + Check_Blank(frm.user_firstname, '', 'First Name');
	err = err + Check_Blank(frm.user_lastname, '', 'Last Name');
	/*err = err + Check_Blank(frm.user_address, '', 'Address');
	err = err + Check_Blank(frm.user_city, '', 'City');
	err = err + Check_Blank(frm.user_state, '', 'State');
	err = err + Check_Blank(frm.user_zip, '', 'Zip');*/
	err = err + Check_Blank(frm.user_country, '', 'Country');
	//err = err + Check_Blank(frm.user_phone, '', 'Phone');
	
	
	if(frm.mthd_id[1].checked == true){
		err = err + Check_Blank(frm.card_no, '', 'Card No.');
		cur_date = new Date();
		var month = Number(frm.exp_month.value);
		var year = Number(frm.exp_year.value);
		if(month == "" && year == "") err = err + "\n - Expiration date is invalid.";
		else if(month <= (cur_date.getMonth()  + 1) && year == cur_date.getYear()) err = err + "\n - Expiration date is invalid.";
		//err = err + Check_Blank(frm.card_security_code, '', ' Card Security Code');
	}
	
	if(trim(err) != ""){
		err = 'One or more of the following fields contain missing or invalid data:\n' + err;
		alert(err);
		return false;
	}
	return true;
}

function Validate_Login(frm){
	if(Is_Blank(frm.mem_email, '', 'Please enter E-mail Id.')) return false;
	if(!Is_Email(trim(frm.mem_email.value))){ alert("Please enter valid E-mail Id."); frm.mem_email.focus(); return false; }
	if(Is_Blank(frm.mem_password, '', 'Please enter Password.')) return false;
	return true;
}

function Select_Plan(frm, plan_id){
	frm.plan_id.value = plan_id;
	for(pp=1; pp <= 3; pp++){
		if(pp == plan_id){
			//document.getElementById('div_plan' + pp).className = 'subsix selected';
			frm.optplan[pp - 1].checked = true;
		}
		else{
			//document.getElementById('div_plan' + pp).className = 'subsix';
			frm.optplan[pp - 1].checked = false;
		}
	}
}

function Validate_Password(frm){
	var err = '';
	err = err + Check_Blank(frm.user_password, '', 'Password');
	err = err + Check_Blank(frm.new_pwd, '', 'New Password');
	err = err + Check_Blank(frm.user_password, '', 'Re-type New Password');
	if(frm.new_pwd.value != ""){
		var password = frm.new_pwd.value;
		if(password.length < 4) err = err + "\n - New Password - use at least 4 characters.";
		else{
			if(frm.new_pwd.value != "" && frm.re_pwd.value != "" && frm.re_pwd.value != frm.new_pwd.value){
				err = err + "\n - Confirm New Password.";
			}
		}
	}
	if(trim(err) != ""){
		err = 'One or more of the following fields contain missing or invalid data:\n' + err;
		alert(err);
		return false;
	}
	return true;
}

function Validate_Profile(frm){
	var err = '';
	err = err + Check_Blank(frm.user_firstname, '', 'First Name');
	err = err + Check_Blank(frm.user_lastname, '', 'Last Name');
	/*err = err + Check_Blank(frm.user_address, '', 'Address');
	err = err + Check_Blank(frm.user_city, '', 'City');
	err = err + Check_Blank(frm.user_state, '', 'State');
	err = err + Check_Blank(frm.user_zip, '', 'Zip');*/
	err = err + Check_Blank(frm.user_country, '', 'Country');
	//err = err + Check_Blank(frm.user_phone, '', 'Phone');
	
	err = err + Check_Blank(frm.user_email, '', 'E-mail Address');
	if(frm.user_email.value != "" && !Is_Email(frm.user_email.value)) err = err + "\n - E-mail Address is invalid.";
	
	
	if(trim(err) != ""){
		err = 'One or more of the following fields contain missing or invalid data:\n' + err;
		alert(err);
		return false;
	}
	return true;
}

function New_Window(url, width, height){
	window.open(url, "win1", "width=" + width + ", height=" + height + ", scrollbars=1, menubar=0, statusbar=1");
}

function Redirect_To(url){
	window.location.href = url;
}

function Cancel_Account(url){
	if(confirm("Are your sure you want to cancel your account?"))Redirect_To(url);
	else return false;
		
}

function Validate_Subscribe(frm){
	var err = '';
	err = err + Check_Blank(frm.plan_id, '', 'Please select a Subscription Plan.');
	
	err = err + Check_Blank(frm.user_email, '', 'E-mail Address');
	if(frm.user_email.value != "" && !Is_Email(frm.user_email.value)) err = err + "\n - E-mail Address is invalid.";
	
	err = err + Check_Blank(frm.user_firstname, '', 'First Name');
	err = err + Check_Blank(frm.user_lastname, '', 'Last Name');
	err = err + Check_Blank(frm.user_country, '', 'Country');
	
	
	if(frm.mthd_id[1].checked == true){
		err = err + Check_Blank(frm.card_no, '', 'Card No.');
		cur_date = new Date();
		var month = Number(frm.exp_month.value);
		var year = Number(frm.exp_year.value);
		if(month == "" && year == "") err = err + "\n - Expiration date is invalid.";
		else if(month <= (cur_date.getMonth()  + 1) && year == cur_date.getYear()) err = err + "\n - Expiration date is invalid.";
		//err = err + Check_Blank(frm.card_security_code, '', ' Card Security Code');
	}
	
	if(trim(err) != ""){
		err = 'One or more of the following fields contain missing or invalid data:\n' + err;
		alert(err);
		return false;
	}
	return true;
}

function Validate_Week_Trial(frm){
	var err = '';
	
	err = err + Check_Blank(frm.user_username, '', 'Username');
	
	if(frm.user_username.value != ""){
		var username = frm.user_username.value;
		if(username.length < 4) err = err + "\n - Username - use at least 4 characters.";
		else{
			var scrn_arr = new Array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_');
			var flg_scrn = 0;
			for(s=0; s < username.length; s++){
				scrn_char = username.substr(s, 1);
				for(t=0; t < scrn_arr.length; t++){
					if(scrn_char == scrn_arr[t]) flg_scrn = 1;
				}
				if(flg_scrn == 0) break;
			}
			if(flg_scrn == 0) err = err + "\n - Username must contain only a-z, 0-9 and underscore (_).";
		}
	}
	
	err = err + Check_Blank(frm.user_password, '', 'Password');
	if(frm.user_password.value != ""){
		var password = frm.user_password.value;
		if(password.length < 4) err = err + "\n - Password - use at least 4 characters.";
		else{
			err = err + Check_Blank(frm.re_pwd, '', 'Re-type Password');
			if(frm.user_password.value != "" && frm.re_pwd.value != "" && frm.re_pwd.value != frm.user_password.value){
				err = err + "\n - Confirm Password.";
			}
		}
	}
	
	err = err + Check_Blank(frm.user_email, '', 'E-mail Address');
	if(frm.user_email.value != "" && !Is_Email(frm.user_email.value)) err = err + "\n - E-mail Address is invalid.";
	
	err = err + Check_Blank(frm.user_firstname, '', 'First Name');
	err = err + Check_Blank(frm.user_lastname, '', 'Last Name');
	/*err = err + Check_Blank(frm.user_address, '', 'Address');
	err = err + Check_Blank(frm.user_city, '', 'City');
	err = err + Check_Blank(frm.user_state, '', 'State');
	err = err + Check_Blank(frm.user_zip, '', 'Zip');*/
	err = err + Check_Blank(frm.user_country, '', 'Country');
	//err = err + Check_Blank(frm.user_phone, '', 'Phone');
	
	
	
	if(trim(err) != ""){
		err = 'One or more of the following fields contain missing or invalid data:\n' + err;
		alert(err);
		return false;
	}
	return true;
}