﻿$(document).ready(function(){	
	//Tabs
	$('.tabs li:last-child').addClass('last');
	$('.tabs li a').each(function(){
		$($(this).attr('href')).hide();
	});
	if ($('.tabs .active').size() == 0) {                    
		$('.tabs li:first-child a').addClass('active').each(function(){
			$($(this).attr('href')).show();
		}); 
	}       
	$('.tabs li a').click(function(e) {
		if ($($(this).attr('href')).size() > 0) {                                            
			  e.preventDefault();                          
			  $(this).parents('.tabs').children('li').children('a').each(function(){
				$($(this).attr('href')).hide();
			  }).removeClass('active');                      
			  
			  $(this).addClass('active');
			  $($(this).attr('href')).show(); 
		}                         
	}); 
	
	if(typeof jScrollPane == 'function') {
		$('#river-contents').jScrollPane({ scrollbarWidth: 14, scrollbarMargin: 10, dragMaxHeight: 54, dragMinHeight: 54 });
	}
	/* Lightbox */
	$('#register-login-dialog').load('/light_registration_form/');
	$('div#closeMe').addClass('clickable').click(function() {
		lightbox.formFadeOut();	
		$('#addCommentSubmit').show();
	});
	var hostName = location.hostname;
	var pubName1 = parseInt(hostName.indexOf('.com'));
	var pubName2 = hostName.substr(pubName1-5,5);
	
	if (pubName2 == 'pcmag') {
		$('a.forgot').attr('href','http://www.pcmag.com/forgot_password/0,1892,,00.asp');		
	} else {
		$('a.forgot').attr('href','http://www.extremetech.com/forgot_password/0,1710,,00.asp');
	}
	$('#seeUsernameRules').addClass('clickable').hover(
		function() {$('div#usernameRules').show();},
		function() {$('div#usernameRules').hide();});
	$('#seePasswordRules').addClass('clickable').hover(
		function() {$('div#passwordRules').show();},
		function() {$('div#passwordRules').hide();});
	$('form#fm_login input').focus(function() {
		$('form#fm_login').removeClass('inactive');
		$('form#fm_register label.error').empty();
		$('form#fm_register input.inputText');
		$('#msgRegister').empty().removeClass('messageerror');
		$('form#fm_register').addClass('inactive');		
	});
	$('form#fm_register input').focus(function() {
		$('form#fm_register').removeClass('inactive');
		$('form#fm_login input.inputText');
		$('form#fm_login label.error').empty();
		$('#msgLogin').empty().removeClass('messageerror');;
		$('form#fm_login').addClass('inactive');
	 });
		 
/* =========================================
		VALIDATION
   ======================================== */
	
	// MEMBERS AREA	
	
	var separator = '<option value="" disabled="disabled" class="option-group-heading">-----------------------------------------------------</option>'
	var country = [1,39,138];
	var range = [
		["1","62"],
		["63","75"],
		["76","107"]
	];	
	
	// Country setup
	for ( i=country.length; i>=0; i--)
	{
		$("#country_id option[value!='"+country[i]+"']").appendTo("#country_id");
	}
	$("#country_id option[value='']").prependTo("#country_id");
	$("#country_id option:eq("+country.length+")").after(separator);
	
	//Clone state dropdowns
	for (var i in country) {
		$('<select style="display:none" id="opt'+i+'"></select>').appendTo("body");		
		$("#state_id option").each(function(){					
			if(
				parseInt($(this).attr("value")) >= range[i][0]
				&&
				parseInt($(this).attr("value")) <= range[i][1]
			) { 
				$('#opt'+i).append(this);				
			}
		});			
	}
	
	function stateField(field) {
		var n = field.val();
		for (var i in country) {			
			if(n == country[i]) {
				$("#state_id option").remove();
				$('<option value="">Select one</option>').appendTo($("#state_id"));
				$("#opt"+i+" option").clone().appendTo($("#state_id"));
				$("#state_id")		.parent().show();			
				$("#state_other")	.parent().hide();
				var found = true;
			} 
		}
		if (!found) {
			if (n == "") { // others
				$("#state_id")		.parent().hide();
				$("#state_id option").remove();
				$("#state_other")		.parent().hide();
			} else { // others
				$("#state_id")		.parent().hide();
				$("#state_id option").remove();
				$("#state_other")		.parent().show();
			}
		}
	}
	$("#country_id").val("1");
	stateField($("#country_id"));
	$("#country_id").change(function() {
		stateField($(this));
		$("#state_id").val("");
		$("#state_other").val("");
	});
	try {
		$("#register").validate({
			rules: {
				login_name: {required: true},
				password: {required: true},
				password_confirm: {
					required: true, 
					equalTo: "#password"
				},
				email_address: {
					required: true, 
					email: true
				},
				preferred_email_format_id: {required: true},
				first_name: {required: true},
				last_name: {required: true},
				address1: {required: true},
				city: {required: true},
				country_id: {required: true},
				state_id: {
					required: function(element) {
						return (
						parseInt($("#country_id").val()) == country[0]
						||
						parseInt($("#country_id").val()) == country[1]
						||
						parseInt($("#country_id").val()) == country[2]
						);
					}
				},
				state_other: {
					required: function(element) {
						return (
						parseInt($("#country_id").val()) != country[0]
						&&
						parseInt($("#country_id").val()) != country[1]
						&&
						parseInt($("#country_id").val()) != country[2]
						);
					}
				},			
				postal_code: {required: true},
				company_size_group_id: {required: true},
				job_function_id: {required: true},
				industry_id: {required: true},
				job_title_id: {required: true}
				
			}
		});
		
		$("#fm_login").validate({
			rules: {
				zdu: { required: true },
				zdp: { required: true }	
			},
			messages: {
				zdu: { required: "A username is required" },
				zdp: { required: "a password is required" }
			},
			
			submitHandler: function() { 
				//$('#msgArea').empty();
				$("#msgLogin").removeClass().addClass('messagebox').text('Logging in....').fadeIn(1000);
				var zdu = $('#zdu').attr('value');
				var zdp = $('#zdp').attr('value');
				var params = 'do=login&zdu='+zdu+'&zdp='+zdp+'&p=true';
				var url = '/async_login/0,,,00.asp';
				var callback = zdLogin.checkLoginResponse;
				var type = 'POST';
				var dataType = 'text';
				tbState.currentMemberAction = 'login';
				zdjson.jsonRequest(url,params,type,dataType,callback);
				return false;
			}
		});	
		
		$("#fm_register").validate({
			rules: {
				zde: {
					required: true,
					email: true
				},
				zduNew: {
					required: true,
					minlength: 3,
					maxlength: 25
					// alphanumeric
				},
				zdpNew: {
					required: true,
					minlength: 6,
					maxlength: 24
					// aphanumeric
				},
				confirmPassword: {
					required: true,
					equalTo: '#zdpNew'
				}
			},
			messages: {
				zde: {
					required: "An email address is required",
					email: "Invalid email format"
				},
				zduNew: {
					required: "A username is required",
					minlength: "Your username must be between 3 and 25 characters",
					maxlength: "Your username must be between 3 and 25 characters"
				},
				zdpNew: {
					required: "A password is required",
					minlength: "Your password must be between 6 and 24 characters",
					maxlength: "Your password must be between 6 and 24 characters"
				},
				confirmPassword: {
					required: "Please reconfirm your password",
					equalTo: "The two passwords are not identical"
				}			
			},
			submitHandler: function() { 
				$("#msgRegister").removeClass().addClass('messagebox').text('Contacting Server ....').fadeIn(1000);
				var zdu = $('#zduNew').attr('value');
				var zdp = $('#zdpNew').attr('value');
				var zde = $('#zde').attr('value');
				var params = 'do=register&zdu='+zdu+'&zdp='+zdp+'&zde='+zde+'&p=true';
				var url = '/async_login/0,,,00.asp';
				var callback = zdLogin.checkLoginResponse;
				tbState.currentMemberAction = 'register';
				var datatype = 'text';
				var type = 'POST';
				zdjson.jsonRequest(url,params,type,datatype,callback);
				return false;
			}
		});
	} catch(err) {}
});

