dojo.require('dijit.Dialog');
dojo.require('dojo.back');

function backtrap(){
    var state = {
	  back: function() { dojo.back.addToHistory(state) },
	  forward: function() { dojo.back.addToHistory(state) },
	  changeUrl: true
	};
	dojo.back.setInitialState(state); // start state
	dojo.back.addToHistory(state); //
}

function remindme(){
	location.href='/member-home.php';
}

var dlg;
function initDlg(e) {
	if(dojo.byId("DialogContent") != null){
		dlg = dijit.byId("DialogContent");
		dlg.show();

		var btn = dojo.byId("cButton");
		dojo.connect(btn,'onclick',dlg,'hide');

		if(dojo.byId("rButton") != null){
			var btn2 = dojo.byId("rButton");
			dojo.connect(btn2,'onclick','remindme');
		}
		dlg.show();
	}
}
// js functions needed by more than one screen
function isRegExSupported()
{
	var supported = false;
	if (window.RegExp)
	{
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = true;
	}
	return (supported);
}

function isValidEmail(str)
{
	if (isRegExSupported() )
	{
		// double backslashes if this code is placed into PHP heredoc
		// r1 - prevent 2 "@"s, 2 consecutive ".", "@.", leading "."
		// r2 - close to RFC822 specification

		var r1 = /(@.*@)|(\.\.)|(@\.)|(^\.)/;
		var r2 = /^[^()<>@,;: \"\[\]\\]+\@(\[?)[a-z0-9\-\.]+\.([a-z]{2,4}|[0-9]{1,3})(\]?)$/i;
		return (!r1.test(str) && r2.test(str));
	}
	else
	{
		return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
	}
}

function ToggleAll(theForm, theCheckbox, action)
{
	// via waygood on http://www.experts-exchange.com/Web/Web_Languages/PHP/Q_20684589.html?query=checkbox+array+javascript&clearTAFilter=true
	var theElements = document.forms[theForm].elements[theCheckbox];
	// if only one checkbox, then field.length is undefined. Check that first
	if (theElements.length > 0)
		for (var i = 0; i < theElements.length; i++)
			theElements[i].checked = action;
	else
		theElements.checked = action;
	if (action)
	{
		document.getElementById('checkall').style.display = 'none';
		document.getElementById('uncheckall').style.display = 'block';
	}
	else
	{
		document.getElementById('checkall').style.display = 'block';
		document.getElementById('uncheckall').style.display = 'none';
	}
	return false;
}

// Autosave code
dojo.declare("profile.autosave", null, {
	constructor: function(userid,extrafield) {
		// node references to editors
		this.ed = [];
		this.ed['extra'] = tinyMCE.get(extrafield);
		this.ed['customer'] = tinyMCE.get('targetcustomer');
		this.ed['product'] = tinyMCE.get('productline');

		// current text from fields to determine diffrences
		this.update = []
		this.update['extra']  = dojo.byId(extrafield).value;
		this.update['customer']  = dojo.byId('targetcustomer').value;
		this.update['product']  = dojo.byId('productline').value;

		this.userid = userid;

		// set autosave on interval
		this.autointerval = setInterval(dojo.hitch(this, function() {
			this.autosave();
		}), 30000);

	},
	autosave: function(){
		console.log('Autosave Called');
		if(this.ed['extra'].getContent() != this.update['extra'] || this.ed['customer'].getContent() != this.update['customer'] || this.ed['product'].getContent() != this.update['product']){
			this.update['extra']  = this.ed['extra'].getContent();
			this.update['customer']  = this.ed['customer'].getContent();
			this.update['product']  = this.ed['product'].getContent();
			this.submitUpdate();
		}
	},
	submitUpdate: function(evt){
	 var rV = {
	  	url:        'autosave.php',
    	handleAs:   'text',
		error:      function(response,io){console.error('Autosave error'); console.dir(response); console.dir(io)},
		load: 		function(response,io){io.args.obj.ajaxHandler(response,io)},
		content:	{type: 'autosave',userid: this.userid , extra: this.ed['extra'].getContent(), product: this.ed['product'].getContent(), customer: this.ed['customer'].getContent()},
		obj:		this
	  };
	  dojo.xhrPost(rV);
	},
	ajaxHandler: function(response,io){
		if(response == 'good'){
			console.log('Autosave Success');
		}else if(response == 'error'){
			console.error('Server-Side Error');
			// Clear interval
			clearInterval(this.autointerval);
		}else{
			console.log(io);
			// Clear interval
			clearInterval(this.autointerval);
		}
	}
});

function CountCheckboxes()
{
	// test to see if all naics checked
	var theCheckboxes = document.forms['formScreen4'].elements['NAICS[]'];
	var allChecked = true;
	for (var i = 0; i < theCheckboxes.length; i++)
	{
		if (!theCheckboxes[i].checked)
		{
			allChecked = false;
			break;
		}
	}
	if (allChecked)
	{
		document.getElementById('checkall').style.display = 'none';
		document.getElementById('uncheckall').style.display = 'block';
	}
}
function ShowHideReferral(referral_program_id)
{
	var obj = document.getElementById('referreridfield');
	if (document.formScreen1.sourceid.value == referral_program_id)
	{
		obj.style.display = 'inline';
	}
	else
	{
		obj.style.display = 'none';
	}
}
function isPasswordTooSimple(password, fname, lname, email)
{
	var goodPW = true;
	var badPW = new Array('password', 'secret', 'test', fname, lname, email);
	for (var i = 0; i < badPW.length; i++)
		if (password.toLowerCase() == badPW[i].toLowerCase())
			goodPW = false;
	var first = password.substr(0, 1);
	var allsame = true;
	for (i = 0; i < password.length; i++)
		if (first != password.substr(i, 1))
			allsame = false;
	return (!goodPW || allsame);
}
