var ajaxOvg2 = ajaxOvg;

function ajaxOvg(str, clz){
	if(str.indexOf("sallie_ovg") == -1)return ajaxOvg2(str, clz);
	if(root_path == null) root_path = "/";
	var rpTgt = root_path+"sallie_ovg?callback=?";
	var data = str.substring(11);
	try{
	    jQuery.ajax({
	            url: rpTgt,
	            type: 'GET',
	            dataType: 'json',
				data: data,
	            cache: false,
	            timeout: 20000,
				error: function(a){}, 
				success:function(xml){
					ovg(xml.sallie.body);
				}
	    });
	}catch(err){
		stFailure("stAjax:"+tgt+":"+err);
	}

}


function partnerBud(data){
	try{
		callJSON({
			url: "widget_bud?callback=?",
			data: data,
			error: partnerBudError,
			success: partnerBudCallback
		});
	}catch(err){
		stFailure("stAjax:"+tgt+":"+err);
	}
}

function partnerBudError(XMLHttpRequest, textStatus, errorThrown){
	ovgLyt("Your session has timed out. Please search again. <a href='/student_loans_home'>New Search<a/>", "Continue");
	jQuery("#bud").fadeTo('slow', 1);
}

function partnerBudCallback(data, text){
	if(data.results.status == "NO_SEARCH_PARAMS"){
		partnerBudError(data, text);
	}
	jQuery("#bud").html(data.results.bud);
	//fixToolTips();
}

// user hit a sort links
function budSort(col, asc, anchor){
	log_search_mode = "sort";
	partnerBud("sort="+col+asc);
	gaResultsSort(col);
}



function set_tab_to(form, tab){
    document.forms[form].tab.value = tab;
}

var vnf2OK = false;

jQuery(document).ready(function(){
	try{setupDate("gradDate");}catch(e){consoleLog(e);}
	try {setupDate("initialDisbursement");}catch(e){consoleLog(e);}
	setupFieldEvents();
});

function setupFieldEvents(){
	jQuery("fieldset.formFS input").each(function(){
		var type = jQuery(this).attr('type');
		if (type=="text")
			jQuery(this).keyup(function(){ 
				if (jQuery(this).val()!="") removeErrorClass(jQuery(this).attr('name')); 
			});
		else if (type=="radio") 
			jQuery(this).change(function() { 
				removeErrorClass(jQuery(this).attr('name')); 
			});
	});
	jQuery("fieldset.formFS select").each(function(){
		jQuery(this).change(function() { removeErrorClass(jQuery(this).attr('name')); });
	});
}

function removeErrorClass(name) { 
	jQuery("fieldset#"+name+"FS").removeClass("error");
}

function setupDate(list) { 
	// list refers to the name of the selectlist
	var today = new Date();
	var mth = today.getMonth();
	var mth_ctr = 0;
	// grab select list options with class selectors A,D
	mthSelect = "select[name="+list+"].A option";
	jQuery(mthSelect).each(function(){
		if (mth==mth_ctr) jQuery(this).attr("selected", "selected");
		mth_ctr++;
	});
	var yr = today.getFullYear();
	yrSelect = "select[name="+list+"].D option";
	jQuery(yrSelect).each(function(){
		if (yr == jQuery(this).val()) jQuery(this).attr("selected", "selected");
	});
};

function validate_newloan_form2(form, flds){
	try{
		var cgi = jQuery('#'+form.id).formSerialize() + "&flds=" + flds;
		//consoleLog("CGI:"+cgi);
		if(st_site != null)cgi += "&brnd="+st_site;
		callJSON({
			url: "lp_validation?callback=?",
			data: cgi,
			async: false,
			success: vnf2Callback,
			error: vnf2Error
		});
		return vnf2OK==true;
	}catch(err){
		stFailure("landing_validation err:"+err);
		return true;
	}
}
function validate_newloan_form3(form, flds){
	try{
		var cgi = jQuery('#'+form.id).formSerialize() + "&flds=" + flds;
		if(st_site != null)cgi += "&brnd="+st_site;
		//consoleLog("CGI:"+cgi);
		callJSON({
			url: "lp_validation_submit?callback=?",
			data: cgi,
			async: false,
			success: vnf2Callback,
			error: vnf2Error
		});
		return vnf2OK==true;
	}catch(err){
		stFailure("landing_validation err:"+err);
		return true;
	}
}

function vnf2Callback(data, text){
	if(data.form.status == "valid"){
		vnf2OK = true;
	}else{
		vnf2OK = "invalid";
		jQuery(".formFS").removeClass("error");
		var errors = data.form.errors;
		//set specified errors
		var ovgErrors = ""
		for(err in errors){
			jQuery("#"+errors[err].field+"FS").addClass("error");
			if(ovgErrors != "")ovgErrors += "<br /><br />";
			ovgErrors += errors[err].error;
		}
		showOVG(errors);
	}
}

function vnf2Error(){
	consoleLog("ERROR");
}

function showOVG(errors){
	var msg = "Some required information is missing or not valid.<br /><br />";
	var fa = flds.split(",");
	if(getError("school", errors) != "")msg += "Enter your school name.<br />";
	for(var i = 0; i < fa.length; ++i){
		var er = getError(fa[i], errors);
		if(er != "")msg += er+"<br />";
	}

	ovgLyt(msg);
}

function getError(field, errors){
	for(var i = 0; i < errors.length; ++i){
		var error = errors[i];
		if(error.field == field)return error.error;
	}
	return "";
}


///////////////////////////////////////////////////////////////////////////////
function validate_newloan_form()
{
//try{
    valid = true;
    msg = ""
    if (document.newloan_form.amt.value == "")
    {
        msg += "Please fill in the loan amount.\n"
        valid = false;
    }else{
    	var tmpAmt = document.newloan_form.amt.value.replace(/^\s+|\s+$/g, ''); 
    	tmpAmt = removeCommas(tmpAmt);
   		document.newloan_form.amt.value = tmpAmt;
    	tmpAmt = tmpAmt+0;
    	if(isNaN(tmpAmt)){
	        msg += "Please enter a valid numeric loan amount.\n";
	        valid = false;
    	}
    	else if(tmpAmt <= 0){
	        msg += "Please enter a loan amount greater than.\n";
	        valid = false;
    	}
	}
    if(document.newloan_form.borrowerType != null){
    	if(isArray(document.newloan_form.borrowerType)){
    		var ok = false
			for(i = 0; i < document.newloan_form.borrowerType.length; ++i){
				try{
					if(document.newloan_form.borrowerType[i].checked)ok = true;
				}catch(err1){}
				try{
					if(document.newloan_form.borrowerType[i].selected && 
					document.newloan_form.borrowerType[i].value != "")ok = true;
				}catch(err2){}
			}
			if(!ok){
			    msg += "Please select a borrower type.\n"
			    valid = false;
			}
    	}else{
			if (document.newloan_form.borrowerType.value == "")
			{
			    msg += "Please select a borrower type.\n"
			    valid = false;
			}
    	}
    }
    if(document.newloan_form.loanType != null){
    	var ltChecked = false;
    	if(isArray(document.newloan_form.loanType)){
    		for(var i = 0; i < document.newloan_form.loanType.length; ++i){
    			if(document.newloan_form.loanType[i].checked)ltChecked = true;
    		}
    	}else{
			if (document.newloan_form.loanType.value != "")
			{
				ltChecked = true;
			}
    	}
    	if(!ltChecked){
		    msg += "Please select a loan type.\n"
		    valid = false;
    	}
    }
    if(document.newloan_form.liveState != null){
		if (document.newloan_form.liveState.value == "")
		{
		    msg += "Please select your state of residence.\n"
		    valid = false;
		}
    }
    
    if (!isEmailValid(document.newloan_form.email.value)){
        msg += "Please enter a valid email address.\n"
        valid = false;
    }
    if (document.newloan_form.school.value == "")
    {
        msg += "Please select a school.\n"
        valid = false;
    }
    if (!valid){
        alert(msg)
    }
    return valid;
//}catch(err){alert(err);return false;}
}

function validate_consol_form()
{
    valid = true;
    msg = ""
    if (document.consol_form.amt.value == "")
    {
        msg += "Please fill in the loan amount.\n"
        valid = false;
    }
    if (!isEmailValid(document.consol_form.email.value)){
        msg += "Please enter a valid email address.\n"
        valid = false;
    }
    if (!valid){
        alert(msg)
    }
    return valid;
}

function isEmailValid(str) {

    var at="@"
    var dot="."
    var lat=str.indexOf(at)
    var lstr=str.length
    var ldot=str.indexOf(dot)
    if (str.indexOf(at)==-1){
        return false
    }

    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
        return false
    }

    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
        return false
    }

        if (str.indexOf(at,(lat+1))!=-1){
        return false
        }

        if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
        return false
        }

        if (str.indexOf(dot,(lat+2))==-1){
        return false
        }
    
        if (str.indexOf(" ")!=-1){
        return false
        }

        return true                 
}

function removeCommas(nStr){
	nStr += '';
	var oStr = '';
	var sa = nStr.split(',');
	for(var i=0;i<sa.length;++i){
		var tmp = ''+sa[i];
		oStr = oStr + tmp;
	}
	return oStr;
}

//copped from http://www.mattkruse.com/javascript/validations/source.html
function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}


var frmintrv;

function waitSub(){
	if(vnf2OK==true){
		clearInterval(frmintrv);
		document.newloan_form.submit();
	}else if(vnf2OK=="invalid"){
		clearInterval(frmintrv);
	}
}

function syncVNF(){
	vnf2OK = false;
	validate_newloan_form2(document.newloan_form,flds);
	if(vnf2OK==false){
		clearInterval(frmintrv);
		frmintrv=setInterval(waitSub,500);
	}
	else if(vnf2OK==true){
		document.newloan_form.submit();
	}
}

var partnerConflicts = [".cappex.", ".meritaid."];

try{
	var host = window.location.host;
	for(p in partnerConflicts){
		var partner = partnerConflicts[p];
		if(host.indexOf(partner)>-1){
			jQuery.noConflict(); break;
		}
	}
} catch (err) {stFailure("ERROR INITING JQUERY NO CONFLICT FOR " + window.location.host);}
