/**********************************************************
	Creating HTML5 Elements for older browsers.
	For discussion and comments, see: http://remysharp.com/2009/01/07/html5-enabling-script/
*/
(function(){if(!/*@cc_on!@*/0)return;var e = "abbr,article,aside,audio,bb,canvas,datagrid,datalist,details,dialog,eventsource,figure,footer,header,hgroup,mark,menu,meter,nav,output,progress,section,time,video".split(',');for(var i=0;i<e.length;i++){document.createElement(e[i])}})()

/*********************** Default */
function copyrightYear( startYear )
{
	d = new Date();

	if ( startYear != d.getFullYear() )
		return startYear + " - " + d.getFullYear();
	else
		return startYear;
}


function CheckAll(bChecked){
	var tg = document.getElementsByTagName("input");
	for(i = 0; i < tg.length; i++){
		if(tg.item(i).name == "action[]"){
			tg.item(i).checked = bChecked;
		}
	}
}
/***************************************** End */


Array.prototype.count = function(){
	return this.length;
};


//var xmlHttp = httpGetObject();

function openWindow(url, w, h){
	var windowprops = "width=" + w + ",height=" + h +",left=10,top=10,scrollbars=no,status=yes,toolbar=no,location=no,directories=no,resizable=yes";
	popup = window.open(url, 'newWin', windowprops);
	popup.focus();
	return popup;
}

function switchClass(obj, strClassName){
	obj.className = strClassName;
}

function gotoURL(strUrl){
	location = strUrl;
}

function fixNum(el){
	el.value = el.value.replace(/\D/g, '');
}

function openWindowScroll(url, w, h){
	var windowprops = "width=" + w + ",height=" + h +",left=10,top=10,scrollbars=yes,status=yes,toolbar=no,location=no,directories=no,resizable=yes";
	popup = window.open(url, 'newWin', windowprops);
	popup.focus();
	return popup;
}


function popup(URL){
	var newPopup = window.open(URL, 'name', 'height=450,width=700');
	if(window.focus) {newPopup.focus()}
	return false;
}

function validZIP(val){
	re = new RegExp(/^\d{5}$/);
	if(val.match(re)){
		return true;
	} else {
		return false;
	}
}
function existingZIP(val){
	
	var hostPrefix = window.location.host == 'cashtodayorg' ? 'http://cashtodayorg/' : 'http://' + window.location.host + '/';
	
	$.ajax({
	   type: 'GET',
	   url: hostPrefix + "application/existingzip.php",
	   data: "zipcode=" + val,
	   async: false,
	   success: function(msg){
	     if (msg <= 0) { valid = 0; }
	     else {	valid = 1; }
	   }
	 });
	 
	 return valid;
}
function validAreaCode(str){
	areacode = str.substring(0,3);
	if(existingAreaCode(areacode)){
		return true;
	} else {
		return false;
	}
}

function existingAreaCode(val){
	
	var hostPrefix = window.location.host == 'cashtodayorg' ? 'http://cashtodayorg/' : 'http://' + window.location.host + '/';
	
	$.ajax({
	   type: 'GET',
	   url: hostPrefix + "application/existingareacode.php",
	   data: "areacode=" + val,
	   async: false,
	   success: function(msg){
	     if (msg <= 0) { valid = 0; }
	     else {	valid = 1; }
	   }
	 });
	 
	 return valid;
}

function zipStateMatch(zip, state){
	
	var hostPrefix = window.location.host == 'cashtodayorg' ? 'http://cashtodayorg/' : 'http://' + window.location.host + '/';
	
	$.ajax({
	   type: 'GET',
	   url: hostPrefix + "application/zipstatematch.php",
	   data: "zipcode=" + zip + '&stateabbr=' + state,
	   async: false,
	   success: function(msg){
	     if (msg <= 0) { valid = 0; }
	     else {	valid = 1; }
	   }
	 });
	 
	 return valid;
}


function urlencode(str){
	// http://kevin.vanzonneveld.net
	// +   original by: Philip Peterson
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +      input by: AJ
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Brett Zamir (http://brett-zamir.me)
	// +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +      input by: travc
	// +      input by: Brett Zamir (http://brett-zamir.me)
	// +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Lars Fischer
	// %          note 1: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
	// *     example 1: urlencode('Kevin van Zonneveld!');
	// *     returns 1: 'Kevin+van+Zonneveld%21'
	// *     example 2: urlencode('http://kevin.vanzonneveld.net/');
	// *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
	// *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
	// *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'

	var histogram = {}, unicodeStr='', hexEscStr='';
	var ret = (str+'').toString();

	var replacer = function(search, replace, str){
		var tmp_arr = [];
		tmp_arr = str.split(search);
		return tmp_arr.join(replace);
	};

	// The histogram is identical to the one in urldecode.
	histogram["'"]   = '%27';
	histogram['(']   = '%28';
	histogram[')']   = '%29';
	histogram['*']   = '%2A';
	histogram['~']   = '%7E';
	histogram['!']   = '%21';
	histogram['%20'] = '+';
	histogram['\u00DC'] = '%DC';
	histogram['\u00FC'] = '%FC';
	histogram['\u00C4'] = '%D4';
	histogram['\u00E4'] = '%E4';
	histogram['\u00D6'] = '%D6';
	histogram['\u00F6'] = '%F6';
	histogram['\u00DF'] = '%DF';
	histogram['\u20AC'] = '%80';
	histogram['\u0081'] = '%81';
	histogram['\u201A'] = '%82';
	histogram['\u0192'] = '%83';
	histogram['\u201E'] = '%84';
	histogram['\u2026'] = '%85';
	histogram['\u2020'] = '%86';
	histogram['\u2021'] = '%87';
	histogram['\u02C6'] = '%88';
	histogram['\u2030'] = '%89';
	histogram['\u0160'] = '%8A';
	histogram['\u2039'] = '%8B';
	histogram['\u0152'] = '%8C';
	histogram['\u008D'] = '%8D';
	histogram['\u017D'] = '%8E';
	histogram['\u008F'] = '%8F';
	histogram['\u0090'] = '%90';
	histogram['\u2018'] = '%91';
	histogram['\u2019'] = '%92';
	histogram['\u201C'] = '%93';
	histogram['\u201D'] = '%94';
	histogram['\u2022'] = '%95';
	histogram['\u2013'] = '%96';
	histogram['\u2014'] = '%97';
	histogram['\u02DC'] = '%98';
	histogram['\u2122'] = '%99';
	histogram['\u0161'] = '%9A';
	histogram['\u203A'] = '%9B';
	histogram['\u0153'] = '%9C';
	histogram['\u009D'] = '%9D';
	histogram['\u017E'] = '%9E';
	histogram['\u0178'] = '%9F';

	// Begin with encodeURIComponent, which most resembles PHP's encoding functions
	ret = encodeURIComponent(ret);

	for(unicodeStr in histogram){
		hexEscStr = histogram[unicodeStr];
		ret = replacer(unicodeStr, hexEscStr, ret); // Custom replace. No regexing
	}

	// Uppercase for full PHP compatibility
	return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2){
		return "%"+m2.toUpperCase();
	});
}


function checkForm(f){

	var fdName = checkElement(f.elements['fd[Name]']),
		fdEmail = checkElement(f.elements['fd[Email]']),
		fdCaptcha = checkCaptcha(f);
		
	if( fdName && fdEmail && fdCaptcha )
	{
		return true;
	}
	
	return false;
}

function checkElement(el)
{
	if(el.value == '')
	{
		//$(el).addClass("req").focus().next(".requiredField").fadeIn('fast');
		$(el).addClass("req").next(".requiredField").html('required').fadeIn('fast');
		return false;
	}
	else
	{
		if ($(el).attr("id") == 'Email') {
			if (!validEmail(el)) {
				return false;
			}
		}
		
		$(el).removeClass("req").next(".requiredField").fadeOut('fast');
		return true;
	}
}

function validEmail(email) {
	
	var validEmail = true;
	if(email != ''){
		if((email.value.length < 3) || (email.value.length > 50) ||
			(email.value.charAt(0) == '@') || (email.value.charAt(email.value.length-1) == '@') ||
			(email.value.charAt(0) == '.') || (email.value.charAt(email.value.length-1) == '.') ||
			(email.value.indexOf('.') == -1) || (email.value.indexOf('@') == -1) ||
			(email.value.indexOf('@') != email.value.lastIndexOf('@')) ||
			(email.value.indexOf(' ') > 0) || (email.value.indexOf('?') > 0) || (email.value.indexOf('..') > 0)
		){
			validEmail = false;
		}
	}
	if(!validEmail){
		$(email).addClass("req").next(".requiredField").html('invalid email').fadeIn('fast');		
		return false;
	}
	
	return true;
}

function checkCaptcha(f)
{
	var valid = false;
	var hostPrefix = window.location.host == 'cashtodayorg' ? 'http://cashtodayorg/' : 'http://' + window.location.host + '/';
	
	var captcha = f.recaptcha_response_field;
	if(captcha.value == '')
	{
		$(captcha).addClass("req");
		$(".requiredCaptcha").html('required').fadeIn('fast');
		return false;
	}
	else {
		 $.ajax({
		   type: 'GET',
		   url: hostPrefix + "validatecaptcha.php",
		   data: "recaptcha_response_field=" + urlencode(captcha.value) + "&recaptcha_challenge_field=" + urlencode(f.recaptcha_challenge_field.value),
		   async: false,
		   success: function(msg){
		     if (msg == 1) { valid = true; }
		     else {	valid = false; }
		   }
		 });
		 
		 if (valid) {
		 	$(captcha).removeClass("req");
			$(".requiredCaptcha").fadeOut('fast');
			return true;
		 }	
		 else {
			Recaptcha.reload ();
			$(captcha).addClass("req");
			$(".requiredCaptcha").html("invalid code").fadeIn('fast');
			return false;
		 }
	}
}




/**********************************************************
	Selectbox
*/
$(function(){
	
	var m = false;
	$("#selectedOpt").click(function(){
		
		if(m)
		{
			closeSelectbox( $(this) );
			m = false;
		}
		else
		{
			openSelectbox( $(this) );
			m = true;
		}
		
	});
	
	$("#selectbox li").click(function(){
		
		$("#qbAmount").val( $(this).attr("title") );
		$("#selectedOpt").text( $(this).text() );
		closeSelectbox( "#selectedOpt" );
		m = false;
		
	});
	
	$(document).bind("click", function(e){
		//console.log(e.target.nodeName);
		if( e.target.id !== "selectedOpt" && e.target.nodeName !== "LI" )
			closeSelectbox( $("#selectedOpt") );
	});
	
});

function openSelectbox( el )
{
	$(el).css({backgroundPosition:"0 -36px"})
	$(el).next("ul").slideDown();
}

function closeSelectbox( el )
{
	$(el).next("ul").slideUp("fast", function(){
		$(el).css({backgroundPosition:"0 0"})
	});
}



/*
	hideEmptyAction() is used to hide status bar 
	message when hover over input type submit elements.
*/
window.onload = hideEmptyAction;

function hideEmptyAction()
{
	var inputs = document.getElementsByTagName("input");
	for( var i = 0; i < inputs.length; i++ )
	{
		if( inputs[i].type == "submit" )
		{
			inputs[i].onmouseover = statusMsg;
		}
	}
}

function statusMsg()
{
	window.status = "";
	return true;
}
