var onlogin_reload = 0;

function objRofoPopUps(){
	this.popUpBoxId = "#popBox";
	this.ajaxUrl = "/ajax/process_logging.ajax.php";
	this.headerType = headerType || '';
}

/*** START: Modal signin/signup ***/
objRofoPopUps.prototype.modalSignIn = function(email){
	var userEmail = email || '';
	var html = '<form name="frmPopupSignIn" id="frmPopupSignIn" onsubmit="_rofoPopUps.processSignin(\'popup\', \'#frmPopupSignIn\', \'#signin_msg_box\'); return false;">';
	html += '<div id="signin_msg_box" class="msg" style="display:none; margin-bottom:10px;"></div>';
	html += '<div class="form_row">';
	html += '<label class="left" style="width:63px;" for="login_email">Email:</label>';
	html += '<input type="text" id="login_email" name="username" style="width:250px;" value="' + userEmail + '" />';
	html += '<br class="clear" /></div>';
	html += '<div class="form_row">';
	html += '<label class="left" style="width:63px;" for="login_password">Password:</label>';
	html += '<input type="password" id="login_password" name="password" style="width:250px;" />';
	html += '<br class="clear" /></div>';
	html += '<input id="keepmelogged" name="keeplogged" type="checkbox" value="1" style="margin-left:68px;" checked> <label for="keepmelogged" class="checkbox" style="font-size:12px;">Remember me</label>';
	html += '<input type="submit" id="btn_submit" class="button roundedRed" style="float:right;" value="Sign in" />';
	html += '<br class="clear" />';
	html += '</form>';
	$jQuery(this.popUpBoxId).html(html).dialog({modal:true, width:350, resizable:false, title:"Sign in to your Rofo account:"});
	if(userEmail != '') $jQuery("#frmPopupSignIn #login_password").focus();
}

objRofoPopUps.prototype.modalSignUp = function(getCompany){
	var getCompany = getCompany || false;
	var html = '<div style="position:relative; width:390px; margin:0px auto;">';
	html += '<span class="ten_px" style="float:right;"><span class="req">*</span> Required Fields</span>';
	html += '<br class="clear" />';
	html += '<form name="frmPopupSignUp" id="frmPopupSignUp" onsubmit="_rofoPopUps.processSignup(\'popup\', \'#frmPopupSignUp\', \'#signup_msg_box\'); return false;">';
	html += '<div id="signup_msg_box" class="msg" style="display:none; margin-bottom:10px;"></div>';
	html += '<div class="form_row">';
	html += '<div class="form_cell"><label for="signup_firstname"><span class="req">*</span> First name</label><input type="text" id="signup_firstname" name="name" maxlength="30" style="width:180px;" /></div>';
	html += '<div class="form_cell"><label for="signup_lastname"><span class="req">*</span> Last name</label><input type="text" id="signup_lastname" name="lastname" maxlength="30" style="width:180px;" /></div>';
	html += '<br class="clear" /></div>';
	html += '<div class="form_row">';
	html += '<div class="form_cell"><label for="signup_email"><span class="req">*</span> Email</label><input type="text" id="signup_email" name="email" maxlength="100" style="width:180px;" /></div>';
	html += '<div class="form_cell"><label for="signup_phone1"><span class="req">*</span> Phone</label><input type="text" id="signup_phone1" name="phone_area_code" maxlength="3" style="width:35px;" autocomplete="off" />';
	html += ' - <input type="text" id="signup_phone2" name="phone_number_prefix" maxlength="3" style="width:35px;" autocomplete="off" />';
	html += ' - <input type="text" id="signup_phone3" name="phone_number" maxlength="4" style="width:50px;" autocomplete="off" /></div>';
	html += '<br class="clear" /></div>';
	html += '<div><span class="ten_px">An email will be sent to this address to verify your account. <a href="javascript:void(0);" onclick="window.open(\'/pages/privacy-policy.html\',\'window_term\',\'directories=no,width=1000,height=580,location=no,resizable=yes,scrollbars=yes,screenx=15,screeny=15,toolbar=no\');">Privacy Policy</a></span></div>';
	html += '<div class="form_row">';
	if(getCompany) html += '<div class="form_cell"><label for="signup_company">Company</label><input type="text" id="signup_company" name="bh_name" style="width:180px;" /></div>';
	html += '<div class="form_cell"><label for="signup_password"><span class="req">*</span> Password</label><input type="password" id="signup_password" name="password" maxlength="32" style="width:180px;" /><br /><span class="ten_px">6 to 32 characters</span></div>';
	html += '<br class="clear" /></div>';
	html += '<input type="submit" id="btn_submit" class="button roundedRed" value="Sign up" />';
	html += '&nbsp;&nbsp;<span class="ten_px">Click on Sign up if you agree to our <a href="javascript:void(0);" onclick="window.open(\'/pages/terms-of-use.html\',\'window_term\',\'directories=no,width=1000,height=580,location=no,resizable=yes,scrollbars=yes,screenx=15,screeny=15,toolbar=no\');">Terms of Use</a></span>';
	html += '</form></div>';
	$jQuery(this.popUpBoxId).html(html).dialog({modal:true, width:410, resizable:false, title:"Sign up for a Rofo account:"});
	autoTab(['#signup_phone1', '#signup_phone2', '#signup_phone3']);
	$jQuery("#frmPopupSignUp #signup_firstname").focus();
	if(getCompany){
		$jQuery("#frmPopupSignUp #signup_company").autocomplete({
			source: function(req, add){
				$jQuery.ajax({
					type: "POST",
					cache: false,
					url: "/ajax/broker_house_suggest.php",
					data: "search=" + req.term,
					dataType: "json"
				}).done(function(result){
					if(parseInt(result.code) > 0) add(result.data);
					$jQuery(".ui-autocomplete").css("z-index", 10000);
				});
			},
			minLength: 3,
			focus: function(event, ui){
				$jQuery("#frmPopupSignUp #signup_company").val(ui.item.label);
				return false;
			},
			select: function(event, ui){
				$jQuery("#frmPopupSignUp #signup_company").val(ui.item.label);
				return false;
			}
		});
	}
}
/*** END: Modal signin/signup ***/

/*** START: Header signin/signup ***/
objRofoPopUps.prototype.resetHeaderPopups = function(){
	$jQuery("#forgotpasswordlink").removeClass("selected");
	$jQuery("#signinlink").removeClass("selected");
	$jQuery("#signuplink").removeClass("selected");
	$jQuery("#forgotpassword").remove();
	$jQuery("#signin").remove();
	$jQuery("#signup").remove();
}

objRofoPopUps.prototype.signInStart = function(){
	this.resetHeaderPopups();
	var html = '<div id="signin" class="popdown">';
	if(!cookiesEnabled()) html += '<b>Please enable cookies for login!<br /></b>';
	html += '<a class="skip" href="javascript:void(0);" onclick="_rofoPopUps.resetHeaderPopups();">Close</a>';
	if(cookiesEnabled()){
		html += '<form name="frmPopdownSignIn" id="frmPopdownSignIn" onsubmit="_rofoPopUps.processSignin(\'popdown\', \'#frmPopdownSignIn\', \'#signin_msg_box\'); return false;">';
		html += '<div id="signin_msg_box" class="msg" style="display:none; margin-bottom:10px;"></div>';
		html += '<div><label for="login_email">Email or username</label><input type="text" id="login_email" name="username" style="width:140px;" /></div>';
		html += '<div><label for="login_password">Password</label><input type="password" id="login_password" name="password" style="width:140px;" /></div>';
		html += '<div>&nbsp;<br /><input type="submit" class="but" style="width:50px;" value="Log in" /></div>';
		html += '<br class="clear" />';
		html += '<span style="float:right; padding-top:2px;"><a href="javascript:void(0);" class="forgotpasswordlink" id="forgotpasswordlink" onclick="_rofoPopUps.forgotPassword(); return false;">Forgot password?</a></span>';
		html += '<input id="keepmelogged" name="keeplogged" type="checkbox" value="1" checked> <label for="keepmelogged" class="checkbox" style="font-size:12px;">Remember me</label>';
		html += '<br class="clear" />';
		html += '</form>';
	}
	html += '</div>';
	$jQuery("#signinlink").addClass("selected");
	$jQuery("#signinlink").after(html);
	$jQuery("#login_email").focus();
}

objRofoPopUps.prototype.forgotPassword = function(){
	var html = '<div id="forgotpassword" class="popdown">';
	html += '<a class="skip" href="javascript:void(0);" onclick="_rofoPopUps.forgotPasswordClose();">Close</a>';
	html += '<div id="forgot_msg_box" class="msg" style="display:none; margin-bottom:10px;"></div><br class="clear" />';
	html += '<p>Please provide your email address so we can send you your password</p>';
	html += '<div><label for="forgot_email">Email</label><input id="forgot_email" type="text" style="width:290px;" /></div>';
	html += '<div>&nbsp;<br /><input type="button" class="but" style="width:50px;" value="Send" onclick="_rofoPopUps.sendPassword();" /></div>';
	html += '<br class="clear" /><span class="ten_px"><a href="javascript:void(0);" onclick="window.open(\'/pages/privacy-policy.html\',\'window_term\',\'directories=no,width=1000,height=580,location=no,resizable=yes,scrollbars=yes,screenx=15,screeny=15,toolbar=no\');">Privacy Policy</a></span>';
	html += '</div>';
	$jQuery("#signin").after(html);
	$jQuery("#forgotpasswordlink").addClass("selected");
	$jQuery("#forgotpassword").css('top', $jQuery("#signin").outerHeight() + 22);
	$jQuery("#forgot_email").focus();
}

objRofoPopUps.prototype.signUpStart = function(){
	this.resetHeaderPopups();
	var html = '<div id="signup" class="popdown">';
	if(!cookiesEnabled()) html += '<b>Please enable cookies for signup!<br /></b>';
	html += '<a class="skip" href="javascript:void(0);" onclick="_rofoPopUps.resetHeaderPopups();">Close</a>';
	if(cookiesEnabled()){
		html += '<form name="frmPopdownSignUp" id="frmPopdownSignUp" onsubmit="_rofoPopUps.processSignup(\'popdown\', \'#frmPopdownSignUp\', \'#signup_msg_box\'); return false;">';
		html += '<div id="signup_msg_box" class="msg" style="display:none; margin-bottom:10px;"></div>';
		html += '<div><label for="signup_firstname">First name</label><input type="text" id="signup_firstname" name="name" maxlength="30" /></div>';
		html += '<div><label for="signup_lastname">Last name</label><input type="text" id="signup_lastname" name="lastname" maxlength="30" /></div>';
		html += '<br class="clear" />';
		html += '<div><label for="signup_email">Email</label><input type="text" id="signup_email" name="email" maxlength="100" /></div>';
		html += '<div><label for="signup_phone1">Phone</label><input type="text" id="signup_phone1" name="phone_area_code" maxlength="3" style="width:35px;" autocomplete="off" />';
		html += ' - <input type="text" id="signup_phone2" name="phone_number_prefix" maxlength="3" style="width:35px;" autocomplete="off" />';
		html += ' - <input type="text" id="signup_phone3" name="phone_number" maxlength="4" style="width:50px;" autocomplete="off" /></div>';
		html += '<br class="clear" />';
		html += '<div><span class="ten_px">An email will be sent to this address to verify your account. <a href="javascript:void(0);" onclick="window.open(\'/pages/privacy-policy.html\',\'window_term\',\'directories=no,width=1000,height=580,location=no,resizable=yes,scrollbars=yes,screenx=15,screeny=15,toolbar=no\');">Privacy Policy</a></span></div>';
		html += '<br /><br class="clear" />';
		html += '<div><label for="signup_password">Password</label><input type="password" id="signup_password" name="password" maxlength="32" /><br /><span class="ten_px">6 to 32 characters</span></div>';
		html += '<div>&nbsp;<br /><input type="submit" class="but" value="Sign up" /></div>';
		html += '<br class="clear" />';
		html += '<span class="ten_px">Click on Sign up, you agree to our <a href="javascript:void(0);" onclick="window.open(\'/pages/terms-of-use.html\',\'window_term\',\'directories=no,width=1000,height=580,location=no,resizable=yes,scrollbars=yes,screenx=15,screeny=15,toolbar=no\');">Terms of Use</a></span>';
		html += '</form>';
	}
	html += '</div>';
	$jQuery("#signuplink").addClass("selected");
	$jQuery("#signuplink").after(html);
	autoTab(['#signup_phone1', '#signup_phone2', '#signup_phone3']);
	$jQuery("#signup_firstname").focus();
}

objRofoPopUps.prototype.sendPassword = function(){
	var email = $jQuery("#forgotpassword #forgot_email").val();
	if(jsIsEmpty(email)) $jQuery("#forgotpassword #forgot_msg_box").html("Please enter your email address.").addClass("error").show();
	else {
		$jQuery("#forgotpassword #forgot_msg_box").html("").removeClass("error").hide();
		var ref = this;
		var data = "&event=forgotPassword&email=" + email;
		$jQuery.ajax({
			type: "GET",
			url: this.ajaxUrl,
			data: data,
			dataType: "json"
		}).done(function(data){
			if(data.success) $jQuery("#forgotpassword #forgot_msg_box").html(data.message).addClass("success").show();
			else $jQuery("#forgotpassword #forgot_msg_box").html(data.message).addClass("error").show();
		});
	}
}

objRofoPopUps.prototype.forgotPasswordClose = function(){
	$jQuery("#forgotpasswordlink").removeClass("selected");
	$jQuery("#forgotpassword").remove();
}

objRofoPopUps.prototype.logout = function(){
	var ref = this;
	data = "event=logout&headertype=" + this.headerType;
	$jQuery.ajax({
		type: "GET",
		cache: false,
		url: this.ajaxUrl,
		data: data,
		dataType: "json"
	}).done(function(data){
		if(!jsIsEmpty(data.header_authorize)) $jQuery("#site_header").html(data.header_authorize);
		window.location.reload();
	});
}
/*** END: Header signin/signup ***/

/*** START: Process signin/signup ***/
objRofoPopUps.prototype.processSignin = function(frmType, frm, msgBox){
	var formType = frmType || '';
	var formId = frm || '';
	var msgBoxId = msgBox || '';
	var signinData = {"username":"", "password":"", "keeplogged":""};
	if(formType == 'popdown') this.forgotPasswordClose();
	var tmpArray = $jQuery(formId).serializeArray();
	for(i = 0; i < tmpArray.length; i++) signinData[tmpArray[i]["name"]] = tmpArray[i]["value"];
	// validate form
	var required = new Array();
	if(signinData.username == "") required.push("Email");
	if(signinData.password == "") required.push("Password");
	if(required.length > 0){
		errMsg = required.length + " required field" + (required.length > 1 ? "s" : "") + " are missing: ";
		for(i = 0; i < required.length; i++){if(i > 0) errMsg += ", "; errMsg += required[i];}
		$jQuery(formId + " " + msgBoxId).html(errMsg).addClass("error").show();
	} else {
		$jQuery(formId + " " + msgBoxId).html("").removeClass("error").hide();
		var ref = this;
		var tmpData = new Object();
		tmpData['event'] = "signIn";
		tmpData['data'] = new Object();
		tmpData['data']['headertype'] = this.headerType;
		for(x in signinData) tmpData['data'][x] = signinData[x];
		var data = $jQuery.param(tmpData);
		$jQuery.ajax({
			type: "POST",
			cache: false,
			url: this.ajaxUrl,
			data: data,
			dataType: "json"
		}).done(function(data){
			if(data.success){
				if(formType == 'popdown') ref.resetHeaderPopups();
				if(formType == 'popup') $jQuery(ref.popUpBoxId).dialog('destroy');
				if(!jsIsEmpty(data.header_welcome)) $jQuery("#site_header").html(data.header_welcome);
				ref.postSignin(data);
			} else $jQuery(formId + " " + msgBoxId).html(data.error).addClass("error").show();
		});
	}
}

// override this function to handle additional post sign in processes
objRofoPopUps.prototype.postSignin = function(args){
	if(parseInt(onlogin_reload) == 1) window.location.reload();
}

objRofoPopUps.prototype.processSignup = function(frmType, frm, msgBox){
	var formType = frmType || '';
	var formId = frm || '';
	var msgBoxId = msgBox || '';
	var signupData = {"name":"", "lastname":"", "email":"", "phone_area_code":"", "phone_number_prefix":"", "phone_number":"", "bh_name":"", "password":""};
	var tmpArray = $jQuery(formId).serializeArray();
	for(i = 0; i < tmpArray.length; i++) signupData[tmpArray[i]["name"]] = tmpArray[i]["value"];
	// validate form
	var errors = new Array();
	var required = new Array();
	// check for missing required fields
	if(signupData.name == "") required.push("First name");
	if(signupData.lastname == "") required.push("Last name");
	if(signupData.email == "") required.push("Email");
	if(signupData.phone_area_code == "" || signupData.phone_number_prefix == "" || signupData.phone_number == "") required.push("Phone");
	if(signupData.password == "") required.push("Password");
	if(required.length > 0){
		errMsg = required.length + " required field" + (required.length > 1 ? "s" : "") + " are missing: ";
		for(i = 0; i < required.length; i++){if(i > 0) errMsg += ", "; errMsg += required[i];}
		errors.push(errMsg);
	}
	// check for valid phone number
	if($jQuery("#signup_phone1").val() != "" && $jQuery("#signup_phone2").val() != "" && $jQuery("#signup_phone3").val() != ""){
		tmpAreaCode = $jQuery("#signup_phone1").val().replace(/[^\d]/g, "");
		tmpPrefix = $jQuery("#signup_phone2").val().replace(/[^\d]/g, "");
		tmpSuffix = $jQuery("#signup_phone3").val().replace(/[^\d]/g, "");
		tmpNumber = tmpPrefix + '' + tmpSuffix;
		if(tmpAreaCode.length < 3) errors.push("Area code needs to be 3 digits");
		if(tmpNumber.length < 7) errors.push("Phone number needs to be 7 digits");
		$jQuery("#signup_phone1").val(tmpAreaCode);
		$jQuery("#signup_phone2").val(tmpPrefix);
		$jQuery("#signup_phone3").val(tmpSuffix);
	}
	// check for valid email
	if(signupData.email != ""){
		tmpEmail = signupData.email;
		var email_patt = /^\S+@\S+\.\S+$/;
		if(!email_patt.test(tmpEmail)) errors.push("Enter a valid email");
	}
	// check for valid password
	if(signupData.password != "" && (signupData.password.length < 6 || signupData.password.length > 32)) errors.push("Password needs to be between 6 to 32 characters");

	if(errors.length > 0){
		errMsg = "";
		for(i = 0; i < errors.length; i++) errMsg += "&bull; " + errors[i] + "<br />";
		$jQuery(formId + " " + msgBoxId).html(errMsg).addClass("error").show();
	} else {
		$jQuery(formId + " " + msgBoxId).html("").removeClass("error").hide();
		var ref = this;
		var tmpData = new Object();
		tmpData['event'] = "signUp";
		tmpData['data'] = new Object();
		tmpData['data']['headertype'] = this.headerType;
		for(x in signupData) tmpData['data'][x] = signupData[x];
		var data = $jQuery.param(tmpData);
		$jQuery.ajax({
			type: "POST",
			url: this.ajaxUrl,
			data: data,
			dataType: "json"
		}).done(function(data){
			if(data.success){
				if(formType == 'popdown') ref.resetHeaderPopups();
				if(formType == 'popup') $jQuery(ref.popUpBoxId).dialog('destroy');
				if(!jsIsEmpty(data.header_welcome)) $jQuery("#site_header").html(data.header_welcome);
				_gaq.push(['_trackPageview', '/registration-ajax-confirmation']);
				ref.postSignup(data);
			} else {
				errMsg = "";
				for(i = 0; i < data.errors.length; i++) errMsg += (data.errors.length > 1 ? "&bull; " : "") + data.errors[i] + "<br />";
				$jQuery(formId + " " + msgBoxId).html(errMsg).addClass("error").show();
			}
		});
	}
}

// override this function to handle additional post sign up processes
objRofoPopUps.prototype.postSignup = function(args){
	if(parseInt(onlogin_reload) == 1) window.location.reload();
}
/*** END: Process signin/signup ***/

var _rofoPopUps = new Object();
$jQuery(document).ready(function(){_rofoPopUps = new objRofoPopUps();});
