


function initForms(tip,disable){
	initModalForms(tip);
	$tip = $(tip);
	$('form.ajax',$tip).submit( function(e){ return ajaxSubmit(this);	});
	$('#frm_filterForm legend',$tip)
			.each(function(){
				if(!$(this).hasClass('expandable')){
					$(this).addClass("expandable").data("expanded",true).text("-"+$(this).text()).css({'cursor':'pointer'});
				}					   
			}).bind("click.expand",function(e){
			//alert('clicked');
				if($(this).data("expanded")){
					$(this).data("expanded",false)
						.text($(this).text().replace("-","+"))
						.parent().css({'height':'20px'}).end()
						.siblings().hide();
					if(!$(this).parent().siblings().find("legend").data("expanded"))
						$(this).parents("form:first").find(":submit").hide();
				} else {
					$(this).data("expanded",true)
						.text($(this).text().replace("+","-"))
						.parent().css({'height':'auto'}).end()
						.siblings().show().parents("form:first").find(":submit").show();
				}
			});
	$("form:not(.ajax,.modal)",$tip)
		.addClass("inline")
		.validate({ 
			messages: {
				ccexpmo: "",
				ccexpyr: ""
				},
			
			})
	
	//alert("initForms called \n"+$tip.attr("class"));
	//$("#frm_usr_signupForm").find("input[type=submit]").click(function(){ dump($(this).parent().submit().toString()); return false; });
	//$("#frm_usr_signupForm").bind("submit.inline",function(){ $(this).find("input").each(function(){ $(this).after($(this).attr("class")) }); return false; });
	$.validator.setDefaults({
			invalidHandler: function(){
				var $first= $(this).find(":focused");
					if($(document).scrollTop(y) > $first.offset().top){
						var y= $first.offset().top -50;
						if(y<0) y=0;
						$(document).scrollTop(y);
					}
				
				}			
			});
	
	$.validator.addClassRules({
		"pnumber": {
			phone: true
			},
		"zip": {
			zipcode: true
			},
		"remote": {
			remote: "ajax.php"
			},
		"keyword": {
				minlength: 5
			},
		"keyword_confirm": {
				minlength: 5,
				equalTo: ".keyword.confirmed"
			},
		"email_confirm": {
				equalTo: ".email.confirmed"
			},
		"captcha": {
				required: true,
				remote: "ajax.php"
			},
		"dtp_cur": {
				price: true
			},
		"nonzero": {
				nonzero: true
			},
		"cvv2Number": {
				digits: true,
				minlength: function() { 
					if($("#creditCardType").val()=="Amex") return 4;
					return 3;
				},
				maxlength: function() { 
					if($("#creditCardType").val()=="Amex") return 4;
					return 3;
				}
			},
		"creditCardNumber": {
				creditcard2: function() { return $("#creditCardType").val(); }
			}
		});
		
	
		/*
		messages: {
			captcha: "Correct captcha is required. Click the captcha to generate a new one"	
		},
		
		submitHandler: function() {
			alert("Correct captcha!");
		},
		
		success: function(label) {
			label.addClass("valid").text("Valid captcha!")
		},
		*/
		$("form.ajax:not(.filterForm)",$tip).validate();
		

}

function initModalForms(tip){
	//alert(tip[0].id+' initing '+ tip.attr("class"));
	if($(tip).is("div.modalForm")) initModalForm(tip);
	$("div.modalForm",tip).each(function(){ initModalForm(this); });
}

function initModalForm(dia){	
	$(dia).dialog({
		modal: true,
		autoOpen: false,
		width: 600,
		dialogClass: 'dia_frm',
		open: function(event, ui) { mfOpen(this); },
		beforeclose: function(event, ui) { mfClose(this); }
	});
	var frmid = $(dia).attr("id").replace("dia_frm_","frm_");
	//alert(frmid+' inited');
}



function mfButtons_(dia,which){
	dia = $(dia);
	
	switch(which){
		case "SC":
			dia.dialog("option","buttons", {
				"Save": function(e) { mfSaveClick(e,this); }, 
				"Cancel": function(e) { mfCancelClick(e,this); }
			});
		break;
		case "SCD":
			dia.dialog("option","buttons", {
				"Save": function(e) { mfSaveClick(e,this); }, 
				"Cancel": function(e) { mfCancelClick(e,this); },
				"Delete": function(e) { mfDeleteClick(e,this); }
			});
		break;
		case "Login":
			dia.dialog("option","buttons", {
				"Login": function(e) { mfSaveClick(e,this); }
			});
		break;
		case "Done":
			dia.dialog("option","buttons", {
				"Done": function(e) { $(this).dialog("close"); }
			});
		break;
		case "TC":
			dia.dialog("option","buttons", {
				"Send Test": function(e) { mfSaveClick(e,this); }, 
				"Cancel": function(e) { mfCancelClick(e,this); }
			});
		break;
	}
}

function mfSaveClick(e,dia){
	var frm = _dia(dia,"frm");
	var handler = _handler(frm);
	//alert("form="+frm.attr("id")+"\n"+frm.attr("class"));
	//alert('dia='+dia);
	//frm.validate();
	//dump($.validator,"validator");
	if(frm.validate().form()){
		
		frm.find(":input[name=del]").val(0);
		if(frm.hasClass("inline")) {
			//alert("got here: inline form");
			switch(handler){
				case "paginator":
					presubmitPaginator(frm);
				break;
			}
			frm.submit();
			return true;
		} else {
			switch(handler){
				case "ixmap":
					mfSubmit(frm);
				case "xblok":
					//alert("xblok");
					xblokSave(frm);
				break;
				case "xbukket":
					xbukketSave(frm);
				break;
				default:
					mfSubmit(frm);
				break;
			}
		}
	} else {
		//alert("not valid!");
	}
}


function mfDeleteClick(e,dia){
	var x = confirm("Are you sure you want to delete this?");
	if(x){
		var frm = _dia(dia,"frm");
		frm.find(":input[name=del]").val(1);
		frmSave(frm);
	}
}

function mfCancelClick(e,dia){
	var frm = _dia(dia,"frm");
	dom(frm).reset();
	$(dia).dialog("close");
	$(dia).children("button").removeAttr("disabled");
}

function _dia(dia,what){
	dia = $(dia);
	switch(what){
		case "frm":
			return dia.children('form[id^=frm_]');
		break;
		case "btns":
			return dia.children('button');
		break;
		case "tar":
			var tar= dia.find(":input[name=tar]");
			if(tar.size()==0) return false;
			return tar.val();
		break;
		
	}
	return false;
}

function mfOpen(dia){
	dia = $(dia);
	frm = _dia(dia,"frm");
	//alert(dia.attr("class"));
	if(dia.find("form.mxForm").size()){
		init(dia);
	} else {
		initInputTypes(dia);
	}
	dia.addClass("dia_open");
	var tar = _dia(dia,"tar");
	//frm.validate();
	//alert(tar);
	if(tar) xbktStatus(tar,"","ok");
}

function mfClose(dia){
	dia = $(dia);
	removeMCEs(dia);
	dia.removeClass("dia_open");
	return false;
}

function mfSubmit(frm,debug,func){
	//alert("submitting="+frm.attr('id')+' '+debug);
	//debug=true;
	if(!func) func = frmSubmitted;
	var done = removeMCEs(frm);
	var data = $(frm).serializeArray();
	if(debug){
		$.post("ajax.php?debug=1", data, func,null);
	} else {
		$.post("ajax.php", data, func,'json');
	}	
	return false;
}

function frmSubmitted(response){
	dump(response);
	//alert(response);
	//alert("submitted");
	var dia = $("#"+response.dia);
	var frm = _dia(dia,"frm");
	frm.removeClass("saving");
	if(response.success){
		dia.dialog("close");
		var handler = _handler(frm);
		//alert("handler: "+handler);
		switch(handler){
			case "loginModal":
				document.location=thishref;
			break;
			case "ixmap":
				//alert("saved ixmap");
			break;
			default:
				dump(handler,"frmSubmitted:");
			break;
		}
		
		
	} else {
		//alert(response.msg);
		diaMsg_(dia,response.msg,"failure");
	}
}


var frmSaving,to_frmSaving=false;
function frmSave(frm){
	//alert("saving="+frm.attr("id"));
	
	if(!frm) frm = frmSaving;
	
	var handler = _handler(frm);
	if(frmUploading(frm)){
		alert("Please wait for upload to complete before submitting.");
		frmValidate(frm);
		return false;
	}
	if(!frmValidate(frm)){
		frmSaving = frm;
		to_frmSaving = setTimeout("frmSave()",100);
		return false;
	}
	clearTimeout(to_frmSaving);
	frmSaving = false;
	if(_frmValid(frm)){
		if(!frm.hasClass("saving")){
			frm.addClass("saving");
			//frm.closest("dia").children("button").attr("disabled","disabled");
			//alert("number of buttons="+ frm.closest("dia").children("button").size());
			if(frm.hasClass("inline")) {
				//alert("got here: inline form");
				switch(handler){
					case "paginator":
						presubmitPaginator(frm);
					break;
				}
				frm[0].submit();
				return true;
			} else {
				switch(handler){
					case "ixmap":
						mfSubmit(frm);
					case "xblok":
						xblokSave(frm);
					break;
					case "xbukket":
						xbukketSave(frm);
					break;
					default:
						mfSubmit(frm);
					break;
				}
			}
		}
	} else {
		alert("Please complete all required fields.");
		var first = frm.find(".validated.invalid.checkMe:first");
		first.focus();
	}
	
	return false;
}



function diaMsg_(dia,msg,cls,title){
	dia = $(dia);
	var span = "<span class=\"dMsg "+cls+"\">&nbsp;"+msg+"</span>";
	var dmsg = dia.find(".dMsg");
	if(dmsg.size()==0){
		dia.prepend(span);
	} else {
		dmsg.replaceWith(span);
	}
	if(title) dia.dialog('option', 'title', title);
}

function frmUploading(frm){
	if(frm.find("*.uploading").size()>0) return true;
	return false;
}

function frmValidate(frm){
	frm = $(frm);
	frm.find(".checkMe").filter(":not(.validated,.validating)").each(function(){ inputValidate(this); });
	return _frmValidated(frm);
}

function _frmValidated(frm){
	frm = $(frm);
	//frm.find(".artist").each(function(e){ alert(this.id+"\n"+ $(this).attr("class")); });
	if(frm.find(".checkMe").filter(":not(.validated)").size()>0) return false;
	return true;
}

function _frmValid(frm){
	frm = $(frm);
	//frm.find(".artist").each(function(e){ alert(this.id+"\n"+ $(this).attr("class")); });
	if(frm.find(".validated.invalid.checkMe").size()>0) return false;
	return true;
}

function frm_ixmapReset(loc){
	loc = $(loc);
	var loc = loc.val();
	//alert("resetting ixmap: loc="+loc);
	//alert("val of loc: "+loc);
	//var loc = $(loc).val();
	var siteid = $('#frm_ixmap :input[name=siteid]').val();
	//alert('loctag='+loctag+'siteid='+siteid);
	if(loc!=undefined){
		//$.get("ajax.php?debug=1", { loc:loc, siteid:siteid, pls:'ixmap' } , function(response){ frm_ixmapLoad(response); } ,null);
		$.get("ajax.php", { loc:loc, siteid:siteid, pls:'ixmap' } , function(response){ frm_ixmapLoad(response); } ,'json');
	}
	return false;
}

function frm_ixmapLoad(data){
	//alert("ixmapLoad data returned");
	//dump(data,"frm_ixmapLoad");
	$('#frm_ixmap [name*=__optionidROW]').val(0);
	$('#frm_ixmap [name*=__settingidROW]').val(0);
	$('#frm_ixmap [name*=__blokidROW]').val(0);
	if(!data) return false;
	//$('#frm_ixmap [name*=ROW]').val(0);
	//$('#frm_ixmap [name*=__loctag]').val('0-0-0-0')
	
	var fobj,frmfield;
	var i=0;
	for (var paramid in data) {    
		fobj = data[paramid];
		if(typeof fobj=="object"){
			for( var field in fobj){
				frmfield = $('#frm_ixmap [name$='+field+'ROW'+paramid+']');
				//if(i<8) alert('before: '+field);
				if($(frmfield).attr("id")!=undefined){
					//if(i<8) alert('found: '+field);
					$(frmfield).val(fobj[field]);
					i++;
				} 
			}
		}
	}  
	return false;
}
