var DOMAIN_TITLE_DEFAULT="Credit Mail";

var qs = location.search;
var email="";
extractEmail(qs);
function pop( url, winName, options ) {

	window.open( url, winName, options );
}
function oW(url,h,w) {
         window.open(url,"name","height="+h+",width="+w+",resizeable=yes,scrollbars=yes,menubar=no,toolbar=no,directories=no,location=no,status=no");
}
function oWPU(url,name,h,w) {
	var newwin;
        newwin=window.open(url,name,"height="+h+",width="+w+",resizeable=yes,scrollbars=yes,menubar=no,toolbar=no,directories=no,location=no,status=no");
	return newwin;
}
function openTinyWindow(url) {
	 var newwin;
         //newwin=window.open(url,"tiny","height=1,width=1,resizable=no,scrollbars=no,menubar=no,toolbar=no,directories=no,location=no,status=no,left=1,top=1");
         newwin=window.open(url,"tiny","height=1,width=1,resizable=yes,scrollbars=yes,menubar=no,toolbar=no,directories=no,location=no,status=no");
	 return newwin;
}
function openDefaultWindow(url) {
	 var newwin;
         //newwin=window.open(url,"tiny","height=1,width=1,resizable=no,scrollbars=no,menubar=no,toolbar=no,directories=no,location=no,status=no,left=1,top=1");
         newwin=window.open(url,"def","resizable=yes,scrollbars=yes,menubar=yes,toolbar=yes,directories=no,location=yes,status=no");
	 return newwin;
}
function openNamedDefaultWindow(url,nom) {
	 var newwin;
         //newwin=window.open(url,"tiny","height=1,width=1,resizable=no,scrollbars=no,menubar=no,toolbar=no,directories=no,location=no,status=no,left=1,top=1");
         newwin=window.open(url,nom,"resizable=yes,scrollbars=yes,menubar=yes,toolbar=yes,directories=no,location=yes,status=no");
	 return newwin;
}

function checkForm() {

	var form  = document.formUnsub;
	var email = form.email.value;

	if( email == null ) {
	  alert( "Please enter an email address." );
	  return false;
	}

	if( email.indexOf("@") < 0 ) {
	  alert( "Please enter a valid email address." );
	  return false;
	}

	form.submit();
	return true;
}
function extractEmail(str) {
	if (str.charAt(0)=="?") {
		str=str.substring(1,str.length);
		//alert(str);
		var StrArray = str.split("&");
		var A2;
		for (var i=0;i<StrArray.length;i++) {
			A2 = StrArray[i].split("=");
			//alert (A2[0]);
			if (A2[0]=="email") {
				email=A2[1];
				//alert (email);
			}
		}
	}
}
function doLoad() {
	//alert(email);
	if ((email)&&(email!="")) {
		document.formUnsub.elements["email"].value=email;
	}
}
function getEmailPart() {
	var h = new String(window.location.host);
	var ind = h.indexOf(".");
	var hsub=h.substring(ind+1,h.length);
	var emailpart="";
	if (hsub=="jumpstartfinance.net") {
		emailpart="financecounselor";
	} else if (hsub=="credit-helpers.net") {
		emailpart="teamfinance";
	} else if (hsub=="finance-mail.net") {
		emailpart="creditdaily";
	} else if (hsub=="credit-experts.net") {
		emailpart="furtherfinance";
	} else {
		emailpart="newsletter";
	}
	return emailpart;
}
function extractDomain() {
	var h = new String(window.location.host);
	var ind = h.indexOf(".");
	var hsub=h.substring(ind+1,h.length);
	return hsub;
}
var PrettyDomains = new Array();
PrettyDomains["creditmailings.com"]="Credit Mailings";
PrettyDomains["card-finders.net"]="Card Finders";
PrettyDomains["cardtime.net"]="Card Time";
PrettyDomains["teamfinance.net"]="Team Finance";
PrettyDomains["credit-finders.net"]="Credit Finders";
PrettyDomains["credit-time.net"]="Credit Time";
PrettyDomains["creditdaily.net"]="Credit Daily";
PrettyDomains["creditgain.net"]="Credit Gain";
PrettyDomains["creditmail.net"]="Credit Mail";
PrettyDomains["creditmonthly.net"]="Credit Monthly";
PrettyDomains["creditstrength.net"]="Credit Strength";
PrettyDomains["creditweekly.net"]="Credit Weekly";
PrettyDomains["dailyoffer.net"]="Daily Offer";
PrettyDomains["dailycredit.net"]="Daily Credit";
//PrettyDomains["finance-mail.net"]="Finance Mail";
PrettyDomains["finance-mail.net"]="Credit Daily";
PrettyDomains["finance-counselor.net"]="Finance Counselor";
PrettyDomains["furtherfinance.net"]="Further Finance";
//PrettyDomains["jumpstartfinance.net"]="Jump Start Finance";
PrettyDomains["jumpstartfinance.net"]="Finance Counselor";
PrettyDomains["upstartfinance.net"]="Upstart Finance";
PrettyDomains["lowratessource.net"]="Low Rates Source";
PrettyDomains["credit-email.com"]="Credit Email";
PrettyDomains["cardsfinder.com"]="Cards Finder";
PrettyDomains["financialtipstoday.com"]="Financial Tips Today";
PrettyDomains["credit-times.com"]="Credit Times";
PrettyDomains["credit-worlds.com"]="Credit Worlds";
PrettyDomains["credit-saver.com"]="Credit Saver";
PrettyDomains["credits-resources.com"]="Credit Resources";
PrettyDomains["optin-credit.com"]="Opt In Credit";
PrettyDomains["team-credit.com"]="Team Credit";
PrettyDomains["weeklycreditnews.com"]="Weekly Credit News";
PrettyDomains["dailycreditnews.com"]="Daily Credit News";
PrettyDomains["dailycreditinfo.com"]="Daily Credit Info";
PrettyDomains["lender-gateway.com"]="Lender Gateway";
//PrettyDomains["credit-experts.net"]="Credit Experts";
PrettyDomains["credit-experts.net"]="Further Finance";
//PrettyDomains["credit-helpers.net"]="Credit Helpers";
PrettyDomains["credit-helpers.net"]="Team Finance";
PrettyDomains["home-savings.net"]="Home Savings";
PrettyDomains["finance-pros.net"]="Finance Pros";
PrettyDomains["credit-times.net"]="Credit Times";
PrettyDomains["creditsmonthly.net"]="Credit Monthly";
PrettyDomains["financehelpers.net"]="Finance Helpers";
PrettyDomains["cash-reward.net"]="Cash Reward";
PrettyDomains["cash-weekly.net"]="Cash Weekly";
PrettyDomains["debt-helpers.net"]="Debt Helpers";
PrettyDomains["extrapayday.net"]="Extra Payday";
PrettyDomains["credit-depot.net"]="Credit Depot";

function getPrettyDomainName() {
	var dom = extractDomain();

	if (dom && PrettyDomains[dom]) {
		return PrettyDomains[dom];
	} else {
		return DOMAIN_TITLE_DEFAULT;
	}
}
function checkEmail(em) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(em)){
		return true;
	} else {
		return false;
	}
}
function hello() {
	alert("hello");
}
function Validator(theForm) {
	this.form;
	this.ok=true;
	this.wrongval;
	this.errormsg=null;
	this.RadioArray=null;
	if (theForm!=null) {
		this.form=theForm;
	}
	this.validateForm=validateForm;
	this.validateSelect=validateSelect;
	this.validateText=validateText;
	this.validateRadio=validateRadio;
	this.validateEmail=validateEmail;
	this.validateDob=validateDob;
	this.validatePhone=validatePhone;
	this.validatePhoneUK=validatePhoneUK;
	this.validateZip=validateZip;
	this.validateUkZip=validateUkZip;
	this.isOk = isOk;

}
function isOk(){
	return this.ok;
}
function validateEmail(em) {
	return checkEmail(em);
}
function validateDob(d) {
	var ind = d.lastIndexOf("/");
	if (ind<0) {
        	this.errormsg="Please Use MM/DD/YYYY format for Date of Birth";
		return false;
	}
	var yearstring=d.substring(ind+1,d.length);
	//alert (yearstring);
	if (yearstring.length!=4) {
        	this.errormsg="Please Use MM/DD/YYYY format for Date of Birth";
		return false;
	}
	if (isNaN(yearstring)) {
        	this.errormsg="Please Use MM/DD/YYYY format for Date of Birth";
		return false;
	}
	
	var yearsinmillis=1000 * 3600 * 24 * 365;
	var thisdate = Date.parse(new Date());
	var userdate = Date.parse(d);
	var eighteen = Date.parse("01/01/1988");
	
	if ((thisdate-userdate)<eighteen) {
		return false;
	} else {
		return true;
	}

}
function validatePhone(ph) {
	if (ph==null) {return false;}
        var str="";
        for (var i=0;i<ph.length;i++) {
                if (!isNaN(ph.charAt(i))) {
                        str+=ph.charAt(i);
                }
        }
	return /^[2-9]\d{2}[2-9]\d{6}$/.test(str);
}
function validatePhoneUK(ph) {
	if (ph==null) {return false;}
        var str="";
        for (var i=0;i<ph.length;i++) {
                if (!isNaN(ph.charAt(i))) {
                        str+=ph.charAt(i);
                }
        }
	//if (ph.length>11) {return false;}
	return /^[0]\d{10,11}$/.test(str);
}
function validateZip(zip) {
	if (zip==null) {return false};
	return /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(zip);
}
function validateUkZip(toCheck) {
  // Permitted letters depend upon their position in the postcode.
  var alpha1 = "[abcdefghijklmnoprstuwyz]";                       // Character 1
  var alpha2 = "[abcdefghklmnopqrstuvwxy]";                       // Character 2
  var alpha3 = "[abcdefghjkstuw]";                                // Character 3
  var alpha4 = "[abehmnprvwxy]";                                  // Character 4
  var alpha5 = "[abdefghjlnpqrstuwxyz]";                          // Character 5

  // Array holds the regular expressions for the valid postcodes
  var pcexp = new Array ();

  // Expression for postcodes: AN NAA, ANN NAA, AAN NAA, and AANN NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  // Expression for postcodes: ANA NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  // Expression for postcodes: AANA  NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  // Exception for the special postcode GIR 0AA
  pcexp.push (/^(GIR)(\s*)(0AA)$/i);
  // Standard BFPO numbers
  pcexp.push (/^(bfpo)(\s*)([0-9]{1,4})$/i);
  // c/o BFPO numbers
  pcexp.push (/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/i);
  // Overseas Territories
  pcexp.push (/^([A-Z]{4})(\s*)(1ZZ)$/i);

  var postCode = toCheck;
  // Assume we're not going to find a valid postcode
  var valid = false;

  // Check the string against the types of post codes
  for ( var i=0; i<pcexp.length; i++) {
    if (pcexp[i].test(postCode)) {
      // The post code is valid - split the post code into component parts
      pcexp[i].exec(postCode);
      // Copy it back into the original string, converting it to uppercase and
      // inserting a space between the inward and outward codes
      postCode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
      // If it is a BFPO c/o type postcode, tidy up the "c/o" part
      postCode = postCode.replace (/C\/O\s*/,"c/o ");
      // Load new postcode back into the form element
      valid = true;
      // Remember that we have found that the code is valid and break from loop
      break;
    }
  }
  // Return with either the reformatted valid postcode or the original invalid
  // postcode
  if (valid) { return true } else { return false; }

}

function validateText(textElement) {
	    if (textElement.name=="email") {
                    if (this.ok) {
                            this.ok=this.validateEmail(textElement.value);
                            if (!this.ok) {
                                this.wrongval = textElement.name;
                                this.errormsg="Email is invalid";
                            }
                    }
            } else if (textElement.name=="dob") {
                    if (this.ok) {
                            this.ok=this.validateDob(textElement.value);
                            if (!this.ok) {
                                this.wrongval = textElement.name;
                                if (this.errormsg==null) {
                                        this.errormsg="You must be over 18 years of age";
                                }
                            }
                    }
            } else if (textElement.name.indexOf("phoneuk")>-1) {
                    if (this.ok) {
                            this.ok=this.validatePhoneUK(textElement.value);
                            if (!this.ok) {
                                this.wrongval = textElement.name;
                                this.errormsg="Please enter a valid UK telephone number without the country code, containing 10 or 11 digits and starting with 0";
                            }
                    }
            } else if (textElement.name.indexOf("phone")>-1) {
                    if (this.ok) {
                            this.ok=this.validatePhone(textElement.value);
                            if (!this.ok) {
                                this.wrongval = textElement.name;
                                this.errormsg="Please enter a valid phone number with area code";
                            }
                    }
            } else if (textElement.name.indexOf("ukzip")>-1 || textElement.name.indexOf("pcode")>-1) {
                    if (this.ok) {
                            this.ok=this.validateUkZip(textElement.value);
                            if (!this.ok) {
                                this.wrongval = textElement.name;
                                if (this.errormsg==null) {
                                        this.errormsg="Please enter a valid postal code";
                                }
                            }
                    }
            } else if (textElement.name.indexOf("zip")>-1) {
                    if (this.ok) {
                            this.ok=this.validateZip(textElement.value);
                            if (!this.ok) {
                                this.wrongval = textElement.name;
                                if (this.errormsg==null) {
                                        this.errormsg="Please enter a valid zip code";
                                }
                            }
                    }
            }else if ((textElement.value==null)||(textElement.value=="")){
                    this.wrongval = textElement.name;
                    this.ok=false;
            }
}
function validateSelect(selectElement) {
            if ((!selectElement.value)||(selectElement.value=="-Select-")) {
                    this.wrongval = selectElement.name;
                    this.ok=false;
            }

}
function validateRadio(radioElement) {
	if (!this.RadioArray) {
		this.RadioArray = new Array();
	}
	if (radioElement.checked==true) {
		this.RadioArray[radioElement.name]=true;
	} else if (this.RadioArray[radioElement.name]!=null && this.RadioArray[radioElement.name]==true) {
		// do nothing
	} else {
		this.RadioArray[radioElement.name]=false;
	}
}
function validateForm() {

		if (!this.form) {
			alert("no validation necessary");
			return true;
		}

                var iLen = this.form.elements.length;
                for (x=0; x<iLen;x++) {
                        if ((this.form.elements[x].type !== "undefined") && ((this.form.elements[x].type == "text") || (this.form.elements[x].type == "Text"))) {                                
				this.validateText(this.form.elements[x]);

                        } else if ((this.form.elements[x].type !== "undefined") && ((this.form.elements[x].type == "select-one") || (this.form.elements[x].type == "Select-one"))) {
				this.validateSelect(this.form.elements[x]);

                        } else if ((this.form.elements[x].type !== "undefined") && ((this.form.elements[x].type == "radio") || (this.form.elements[x].type == "Radio"))) {
                                //alert(this.form.elements[x].name+"::"+this.form.elements[x].value +"::"+this.form.elements[x].checked);
				this.validateRadio(this.form.elements[x]);
                        }
                }
		for (s in this.RadioArray) {
			if (this.RadioArray[s]==false) {
				this.ok=false;
				this.wrongval=s;
			}
		}
		return this.ok;
}
var FormArray=new Array();
function stripButNumbers(s) {
	return s.replace(/\D/g,'');
}
function stripButLetters(s) {
	return s.replace(/[^A-Za-z]/g,'');
}
function stripButLettersOrNumbers(s) {
	return s.replace(/\W/g,'');
}
function init() {
	var qs=this.location.search;
        var qsa=null;
        var pair;
       	if (qs) {
		qs=qs.substring(1,qs.length);
		qsa=qs.split("&");
        }
	if (qsa) {
		for (var i=0;i<qsa.length;i++) {
			pair=qsa[i].split("=");
			FormArray[pair[0]]=pair[1];
		}
	}
}
function getFormVal(name) {
      if (FormArray[name]) {
              return FormArray[name];
      } else {
              return "";
      }
}
function getRadioValue(radioelem) {
	if (radioelem==null || (radioelem[0].type!="radio" && radioelem[0].type!="Radio")) {
		return null;
	}
	var radioval=null;
	for (var i=0; i < radioelem.length; i++) {
		if (radioelem[i].checked) {
			radioval = radioelem[i].value;
			break;
		}
	}
	return radioval;
}
function getElement(id) {

	var element;

    	if( document.getElementById ) // this is the way the standards work
        	element = document.getElementById( id );
    	else if( document.all ) // this is the way old msie versions work
        	element = document.all[id];
    	else if( document.layers ) // this is the way nn4 works
        	element = document.layers[id];

	return element;
}
