function sn_getAjax(formName,customParams,resultElementName,userData,url){params=new Hash({f:formName,ajax:1});params=params.merge(customParams);new Ajax.Request(url,{method:'POST',parameters:params,onSuccess:function(transport){result=transport.responseText;if(result.length>0){result=result.evalJSON(true);}else{result='';}
sn_gotAjax(formName,result,resultElementName,userData);},onComplete:function(transport){sn_completedAjax(formName,resultElementName,userData);},onFailure:function(transport){sn_failedAjax(formName,resultElementName,userData);}});}
function sn_getAjaxByQuery(formName,query,resultElementName,userData){params=new Hash({f:formName,ajax:1});params=params.toQueryString()+'&'+query;new Ajax.Request('index.php',{method:'POST',parameters:params,onSuccess:function(transport){result=transport.responseText;if(result.length>0){result=result.evalJSON(true);}else{result='';}
sn_gotAjax(formName,result,resultElementName,userData);},onFailure:function(transport){sn_failedAjax(formName,resultElementName,userData);}});}
function sn_gotAjax(formName,result,resultElementName,userData){funcName="sn_"+formName.dasherize().camelize()+"Handler";eval(funcName+"(result, resultElementName, userData)");}
function sn_failedAjax(formName,resultElementName,userData){funcName="sn_"+formName.dasherize().camelize()+"ErrorHandler";eval(funcName+"(result, resultElementName, userData)");}
function sn_completedAjax(formName,resultElementName,userData){funcName="sn_"+formName.dasherize().camelize()+"CompleteHandler";eval(funcName+"(result, resultElementName, userData)");}
function check_username(elementId)
{username=document.getElementById(elementId).value;customParams={username:username};sn_getAjax("check_username",customParams,"",{field:elementId});}
function sn_checkUsernameHandler(result,resultElementName,userData)
{if(result.code==0)
{document.getElementById(userData['field']).style.background="yellow";}else{alert('rosu');}}
function ax_submit_form(id)
{form=document.getElementById(id);url=form.action;customParams={formId:id}
customParams["json"]=1;for(i=0;i<form.elements.length;i++)
{elem=form.elements[i];if(elem.type=="checkbox")
{customParams[elem.name]=elem.checked;}else if(elem.type=="select-one")
{customParams[elem.name]=elem.options[elem.selectedIndex].value;}else{customParams[elem.name]=elem.value;}}
if(customParams["f"])
{handler=customParams["f"];}else{handler="generic_form_handler";}
sn_getAjax(handler,customParams,"",{form_id:id},url);}
function sn_genericFormHandlerHandler(result,resultElementName,userData)
{result=result.result;if(result.ajaxExitCode==0)
{innerRes=result.ajaxTextResponse.evalJSON(true);if(innerRes.js)
{eval(innerRes.js);}}else{alert(result.ajaxTextResponse);}}
function sn_customFormHandlerHandler(result,resultElementName,userData)
{result=result.result;if(result.ajaxExitCode==0)
{innerRes=result.ajaxTextResponse.evalJSON(true);if(innerRes.js)
{eval(innerRes.js);}}else{alert(result.ajaxTextResponse);}}
function load_children(id,moduleName)
{elem=document.getElementById(id);formId=elem.form.id;if(elem.type=="select-one")
{value=elem.options[elem.selectedIndex].value;}else if(elem.type=="checkbox")
{value=elem.checked;}else{value=elem.value;}
customParams={id:id}
customParams[id]=value;customParams["formId"]=formId;url="index.php?module="+moduleName+".ajxinternal&ajax=1&json=1";sn_getAjax("load_children",customParams,"",customParams,url);}
function sn_loadChildrenHandler(result,resultElementName,userData)
{result=result.result;if(result.ajaxExitCode==0)
{innerRes=result.ajaxTextResponse.evalJSON(true);elem=document.getElementById(innerRes.id);elem.options.length=0;if(innerRes.children)
{children=innerRes.children;for(i=0;i<children.length;i++)
{o=new Option(children[i].innerHTML,children[i].value);elem.options.add(o);}}
elem.style.display="";}}
function doAjaxAction(module,action,customParams,callback,requestJSON){params=new Hash({ajax:1});params=params.merge(customParams);paramsS=params.toQueryString()
if(requestJSON>0)
{paramsS+="&json=1";}
new Ajax.Request(window.location.protocol+"//"+window.location.host+"/"+'index.php?module='+module+'&action='+action,{method:'POST',parameters:paramsS,onSuccess:function(transport){result=transport.responseText;if(result.length>0){result=result.evalJSON(true);}else{result='';}
dispatchAjaxCallback(callback,result,params);}});}
function dispatchAjaxCallback(callback,result,params)
{funcName=callback.dasherize().camelize()+"ResponseHandler";eval(funcName+"(result, params)");}
function doAjaxActionUpdater(module,action,customParams,div,requestJSON)
{params=new Hash({ajax:1});params=params.merge(customParams);paramsS=params.toQueryString()
if(requestJSON>0)
{paramsS+="&json=1";}
var myAjax=new Ajax.Updater({success:""+div+""},window.location.protocol+"//"+window.location.host+"/"+'index.php?module='+module+'&action='+action,{method:'POST',parameters:paramsS});}