//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ bashajax bframeworx developed by Badhusha,Adiyakkamangalathaan $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Badhusha-Ref#c-twzzzzsxonononfv.zznnzzzz.p-m-twzzzznnzztwonet.zzzz.a/v.2.4.0/rulz/bashajax $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
var apppath="/"; browsercode = "bash_browsercode";
var bustcachevar=0; //bust potential caching of external pages after initial request [rdata-1=yes, 0=no;
var loadstatusdefault="<center><img src='"+apppath+"images/loading.gif' /></center>";
/*var loadstatusdefault="<table border=0 align=center height='100px'><tr><td align=center valign=middle><img src='"+apppath+"images/loading.gif' /> <font face='arial' size='1' color='gray'>Loading...<br>If problem&nbsp;<a href='' onclick='window.location.reload(true);'>click here</a></font></td></tr></table>";*/
var loadstatusupdating="<img src='./images/loading.gif' /><font face='arial' size='1' color='gray'>Updating</font>"; this.id$=function(objxt){return(document.getElementById(objxt));}; iscurrency$=/^((\$\d*)|(\$\d*\.\d{2})|(\d*)|(\d*\.\d{2}))$/;
var loadstatustext = loadstatusdefault; var bashajaxObj = false; var loadedobjects=""; var defaultcontentarray=new Object(); var bustcacheparameter="";
var bashajaxframework={setclass:function(xobject,xclass){document.getElementById(xobject).className=xclass;},createobject:function(xobject){document.write("<div id=\'"+xobject+"\' Name=\'"+xobject+"\' style=\'font-family: Verdana; font-size: xx-small;\'></div>");return (xobject);},createbrowsercodeobject:function(){ document.write("<div id=\'"+browsercode+"\' Name=\'"+browsercode+"\' style=\'font-family: Verdana; font-size: xx-small; display:none; visibility:hidden;\'></div>");return (browsercode); }, buildmailaddress:function(xmailbox){dobj1="";dobj2="@";dobj3="badhusha";dobj4="."; dobj5="com"; if(xmailbox!=""){dobj1=xmailbox;} if(dobj1!=""){document.write(dobj1+dobj2+dobj3+dobj4+dobj5);}} };
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); }; var ie=(window.ActiveXObject)?true:false;
this.createbashajaxObject = function()
{	try {	bashajaxObj = new XMLHttpRequest(); if (bashajaxObj.overrideMimeType) {	bashajaxObj.overrideMimeType('text/xml'); } }	
	catch (e) {	try {	bashajaxObj = new ActiveXObject("Msxml2.XMLHTTP");		}	catch (e)	{	try {	bashajaxObj = new ActiveXObject("Microsoft.XMLHTTP"); }	catch (e){ return false; }	}	}
}; 
this.ajaxpage = function(url, containerid, targetobj)
{	createbashajaxObject();
	var ullist=targetobj.parentNode.parentNode.getElementsByTagName("li");
	for (var i=0; i<ullist.length; i++)  { ullist[i].className=""; }  //deselect all tabs
	targetobj.parentNode.className="selected"  //highlight currently clicked on tab
	if (url.indexOf("#default")!=-1) //if simply show default content
	{	document.getElementById(containerid).innerHTML=defaultcontentarray[containerid];
		return;
	}
	document.getElementById(containerid).innerHTML=loadstatustext;
	bashajaxObj.onreadystatechange=function(){ loadpage(bashajaxObj, containerid, url); };
	if (bustcachevar){ bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime(); } //if bust caching of external page
	bashajaxObj.open('GET', url+bustcacheparameter, true);
	bashajaxObj.send(null);
};
this.loadpage = function(bashajaxObjx, containerid, url)
{	if ((bashajaxObjx.readyState==4) && ((bashajaxObjx.status==200) || (window.location.href.indexOf("http")==-1)))
	{	id$(containerid).innerText=bashajaxObjx.responseText;	$afterbashajaxframeload(containerid, url);
	}
};
this.loadpagehtml = function(bashajaxObjx, containerid, url)
{	if ((bashajaxObjx.readyState==4) && ((bashajaxObjx.status==200) || (window.location.href.indexOf("http")==-1)))
	{	id$(containerid).innerHTML=bashajaxObjx.responseText;	$afterbashajaxframeload(containerid, url);
	}
};
this.loadobjs = function(revattribute)
{	if (revattribute!=null && revattribute!="") //if "rev" attribute is defined (load external .js or .css files)
	{ 	var objectlist=revattribute.split(/\s*,\s*/) //split the files and store as array
		for (var i=0; i<objectlist.length; i++)
		{	var file=objectlist[i]
			var fileref=""
			if (loadedobjects.indexOf(file)==-1) //Check to see if this object has not already been added to page before proceeding
			{	if (file.indexOf(".js")!=-1) //If object is a js file
				{	fileref=document.createElement('script');
					fileref.setAttribute("type","text/javascript");
					fileref.setAttribute("src", file);
				}
				else if (file.indexOf(".css")!=-1) //If object is a css file
				{	fileref=document.createElement("link");
					fileref.setAttribute("rel", "stylesheet");
					fileref.setAttribute("type", "text/css");
					fileref.setAttribute("href", file);
				}
			}
			if (fileref!="")
			{	document.getElementsByTagName("head").item(0).appendChild(fileref)
				loadedobjects+=file+" " //this object as being already added to page
}	}	}	};
this.expandtab = function(tabcontentid, tabnumber) //interface for selecting a tab
{	var thetab=id$(tabcontentid).getElementsByTagName("a")[tabnumber];
	if (thetab.getAttribute("rel"))
	{	ajaxpage(thetab.getAttribute("href"), thetab.getAttribute("rel"), thetab);
		loadobjs(thetab.getAttribute("rev"));
}	};
this.savedefaultcontent = function(contentid)	// save default ajax tab content
{	if (typeof defaultcontentarray[contentid]=="undefined");
	defaultcontentarray[contentid]=id$(contentid).innerHTML;
};
this.startbashajaxtabs = function()
{	for (var i=0; i<arguments.length; i++) //loop through passed UL ids
	{	var ulobj=id$(arguments[i]);
		var ulist=ulobj.getElementsByTagName("li"); //array containing the LI elements within UL
		for (var x=0; x<ulist.length; x++)	 //loop through each LI element
		{	var ulistlink=ulist[x].getElementsByTagName("a")[0];
			if (ulistlink.getAttribute("rel"))
			{	var modifiedurl=ulistlink.getAttribute("href").replace(/^http:\/\/[^\/]+\;	//i, "http://"+window.location.hostname+"/")
				ulistlink.setAttribute("href", modifiedurl); //replace URL's root domain with dynamic root domain, for ajax security sake
				savedefaultcontent(ulistlink.getAttribute("rel")); //save default ajax tab content
				ulistlink.onclick=function()
				{	ajaxpage(this.getAttribute("href"), this.getAttribute("rel"), this);
					loadobjs(this.getAttribute("rev"));
					return false;
				}
				if (ulist[x].className=="selected")
				{	ajaxpage(ulistlink.getAttribute("href"), ulistlink.getAttribute("rel"), ulistlink); //auto load currenly selected tab content
					loadobjs(ulistlink.getAttribute("rev")); //auto load any accompanying .js and .css files
}	}	}	}	};
this.loadcanvaxtext = function(xcontainer,xtext,xtype){try { xcon=id$(xcontainer); if(xtype=='alert'){ xcon.innerHTML="<font face='arial' color='#ef0000' size='2'>"+xtext+"</font>" } else{ xcon.innerHTML=xtext; } } catch(e) {} };
this.loadcanvax = function(xpg,xcontainer)
{	containerid=xcontainer;
	onloadingstate(containerid);
	createbashajaxObject();
	id$(containerid).innerHTML=loadstatustext;
	bashajaxObj.onreadystatechange=function(){ loadpage(bashajaxObj, containerid, xpg); };
	bashajaxObj.open('GET', xpg, true);
	bashajaxObj.send(null);
};
this.loadcanvaxhtml = function(xpg,xcontainer)
{	containerid=xcontainer;
	onloadingstate(containerid);
	createbashajaxObject();
	id$(containerid).innerHTML=loadstatustext;
	bashajaxObj.onreadystatechange=function(){ loadpagehtml(bashajaxObj, containerid, xpg); };
	bashajaxObj.open('GET', xpg, true);
	bashajaxObj.send(null);
};
this.loadcanvaz = function(xpg,fobjx)
{	containerid='bashajaxframe';
	if(fobjx!='') { containerid=fobjx; } ;
	onloadingstate(containerid);
	//createbashajaxObject();
	xqry=buildq(fobjx); xqry=xqry!=''?'?'+xqry:'';
	loadcanvax(xpg + xqry,containerid);
	return false;
};
this.onloadingstate = function(containerid){id$(containerid).innerHTML=loadstatustext;};
this.buildq = function(sobj) 
{	var qstr = "";
	try
	{	obj=id$(sobj);
		for (i=0; i<obj.childNodes.length; i++) 
		{	if (obj.childNodes[i].tagName == "INPUT") 
			{	if (obj.childNodes[i].type == "text" || obj.childNodes[i].type == "hidden") 
				{	qstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value.trim() + "&";	}
				if (obj.childNodes[i].type == "checkbox") 
				{	if (obj.childNodes[i].checked) 	{ qstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value.trim() + "&"; }
					else {	qstr += obj.childNodes[i].name + "=&"; }
				}
				if (obj.childNodes[i].type == "radio")
				{	if (obj.childNodes[i].checked) { qstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value.trim() + "&";	} }
			}
			if (obj.childNodes[i].tagName == "SELECT")
			{	var sel = obj.childNodes[i];
				qstr += sel.name + "=" + sel.options[sel.selectedIndex].value.trim() + "&";
			}
		}
		qstr = qstr.substring(0,(qstr.length-1));
	}
	catch (e) { }
	return qstr;
};	this.hidestatus = function(){ window.status='';return true; }; if (document.layers)	document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT); document.onmouseover=hidestatus; document.onmouseout=hidestatus;
this.$incjs=function(srcfile, objblock) { var objblock = document.getElementsByTagName(objblock).item(0);  script = document.createElement('script'); script.src = srcfile; script.type = 'text/javascript'; objblock.appendChild(script); }
this.$inccss=function(srcfile) { var objblock = document.getElementsByTagName('head').item(0);  link = document.createElement('link'); link.rel='stylesheet'; link.href = srcfile; link.type = 'text/css'; link.media='screen'; objblock.appendChild(link); }
this.$isemail=function(emailaddr) { var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;   return emailPattern.test(emailaddr); }
this.$isnumeric=function(strvalue)  { var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/; return objRegExp.test(strvalue); }
this.$isphone=function(strvalue)  { var objRegExp  =  /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/; return objRegExp.test(strvalue); }
this.$isphone_old=function(strvalue)  { var objRegExp  =  /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/; return objRegExp.test(strvalue); }
this.$loadimage=function(xsrc,xobj) { id$(xobj).src=xsrc; }
this.$adjustcenter=function(xobj,xwidth) { iw=id$(xobj).width; id$(xobj).style.left=(iw<xwidth-1)?((xwidth-iw)/2):(0); }
var xupdateinterval = 1; var xpixelperinterval = 10; var xscorllerinterval;
this.$getElementsByClassName = function(classname, node) { if(!node) node = document.getElementsByTagName("body")[0]; var a = []; var re = new RegExp('\\b' + classname + '\\b'); var els = node.getElementsByTagName("*"); for(var i=0,j=els.length; i<j; i++) { if(re.test(els[i].className))a.push(els[i]); } return a; };
this.$loadbrowsercode = function(tobj) { loadcanvax(apppath+'captcha/?new', tobj); }
this.$captchacheck=function(sobj,tobj) { cval = id$(sobj).value.trim(); bcode=id$(browsercode).innerText; (cval!='' && bcode!='') ? loadcanvax(apppath+'captcha/?'+bcode+cval, tobj) : loadcanvaxtext(tobj,'Verification code should not be empty','alert'); };
this.$captchacheckx=function(sobj,tobj) { cval = id$(sobj).value.trim(); (cval!='' && bcodex!='') ? loadcanvax(apppath+'captcha/?'+bcodex+cval, tobj) : loadcanvaxtext(tobj,'Verification code should not be empty','alert'); };
this.$afterbashajaxframeload=function(containerid, url) { if(containerid=='bash_captchaalert') { id$('bash_captchaalert').style.color='#000000'; bash_validateForm(true); e=(id$('bash_captchaalert').innerText.trim()=='Verified')?true:false;	if(!e) { $loadbrowsercode(browsercode);id$('bash_captchaalert').style.color='red'; } }; if(containerid==browsercode) { id$('bash_captchaimage').innerHTML = "<img src='" + apppath + "captcha/?" + id$(browsercode).innerText + "' border='0'>"; }; };
this.$buildinputcontrol=function(xtype,xid,xparam,xval) { dobj = ""; if (xtype=="singleLineTextBox") { dobj = "<input type='text'"; if(xid!="" && xid!=null) { dobj+=" id='" + xid + "' name='" + xid + "'"; } if(xparam!="" && xparam!=null) { dobj+=" " + xparam; } dobj+=">"; } else if (xtype=="multiLineTextBox") { dobj = "<textarea "; if(xid!="" && xid!=null) { dobj+=" id='" + xid + "' name='" + xid + "'"; } if(xparam!="" && xparam!=null) { dobj+=" " + xparam; } dobj+=">"; if(xval!="" && xval!=null) { dobj+=xval; } dobj+="</textarea>"; } document.write (dobj); };
this.$buildmailaddress=function(xmailbox) { dobj1 = "";dobj2="@";dobj3="badhusha";dobj4="."; dobj5="com"; if (xmailbox!="") { dobj1 = xmailbox; } if(dobj1!="") { document.write(dobj1+dobj2+dobj3+dobj4+dobj5); } };
