﻿//Must be used with XmlHttp.js
var ExpTagStart="/*--Export Area Start--*/";
var ExpTagEnd="/*--Export Area End--*/";

function __CB(url,frm,hol,eventTarget, eventArgument) 
{
    var theForm = document.forms[frm];
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) 
    {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        
        if(typeof(eval(eventTarget + "_doPostBack"))=="function") 
            eval(eventTarget + "_doPostBack('" + eventTarget + "','" + eventArgument + "')");
            
        PostForm(frm,url,hol);
    }
}
function __FS(url,frm,hol) 
{
    PostForm(frm,url,hol);
}

function AdjustOutput(str,url,frm,hol)
{
    var ret=str;
    ret=ret.replace(new RegExp('__doPostBack\\(', 'gi'),"__CB('" + url + "','" + frm + "','" + hol + "',");
    ret=ret.replace(new RegExp('WebForm_OnSubmit\\(\\)', 'gi'),"__FS('" + url + "','" + frm + "','" + hol + "'\)");
    ExecJScode(ret);
    
    return ret;
}
function ExecJScode(str)
{
    var code="";
    var pos=0,loop=0;
    do{
        pos=str.indexOf(ExpTagStart,pos + 1);
        if(pos>-1)code+=str.slice(str.indexOf(ExpTagStart,pos) + ExpTagStart.length,str.indexOf(ExpTagEnd,pos));
        loop+=1;
    }
    while(pos>0 && loop<10)
    
    if(code!="")CreateJS('',code);
}
function CreateJS(src,body)
{
    var tag=document.createElement("script");
    tag.type = 'text/javascript';
    if(body!='')tag.text = body;
    if(src!='')tag.src = src;
    document.body.appendChild(tag);
}

function GetForm(url,frm,hol)
{
    //url=EditQuery("rnd",new Date(),url);
    var req=NewXMLHttpReq();
    req.open("GET",url,false);
    req.send(url);
    return AdjustOutput(req.responseText,url,frm,hol);
}


var AsyncUrl,AsyncFrm,AsyncHol;
var AsyncReq=null;
function PostForm(frm,url,hol)
{
    var content=GetFormValues(frm);
    
    AsyncReq=NewXMLHttpReq();
    AsyncReq.open("POST",url,true);
    AsyncReq.onreadystatechange = PostReturned;
    AsyncReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
    AsyncReq.send(content);
    
    AsyncUrl=url;
    AsyncFrm=frm;
    AsyncHol=hol;
}
function PostReturned()
{
	if(AsyncReq && AsyncReq.readyState == 4) //Completed
	{
		if(AsyncReq.status == 200) //OK
		{
			var holObj=document.getElementById(AsyncHol);
            if(holObj)
                holObj.innerHTML=AdjustOutput(AsyncReq.responseText,AsyncUrl,AsyncFrm,AsyncHol);
		} 
		else 
			alert('There was a problem with the request. Status: ' + PostReq.status);
	}
}

function GetFormValues(frmId) 
{
    var f = document.forms[frmId];
    var str = ""; 
    for(var i = 0;i < f.elements.length;i++) 
    {
       var el=f.elements[i];
       switch(el.type) 
       {
           case "hidden":
           case "textarea":
           case "text":
                //manualy replace '+' coz |escape| doesn't
                str += el.name + "=" + escape(el.value).replace(new RegExp('\\+', 'g'), '%2b') + "&"; 
                break; 
           case "radio":
                if(el.checked)
                    str += el.name + "=" + el.value + "&"; 
                break; 
           case "select-one": 
                str += el.name + "=" + el.options[el.selectedIndex].value + "&"; 
                break; 
       }
    }
    str += 'IsCallBack=true&';
    str = str.substr(0,(str.length - 1)); 
    return str; 
}

function EditQuery(element,val,query)
{
	if(element!="")
	{
    	if(query=="" || typeof(query)!="string") query=document.location.search;
    	//if(query.indexOf("?")==0) query=(query.length>1)?query.substring(1):"";
	
		if(query.indexOf(element + "=")==-1)
		{
		    if(query.length>0)
		        if(query.indexOf("?")==-1)query+="?";
		        else query+="&";
			query+=element + "=" + val;
		}
		else
		{
			var left="",right="";

			left=query.substr(0,query.indexOf(element + "=")-1);

			right=query.substr(query.indexOf(element + "="));
			right=(right.indexOf("&")==-1)?"":right.substr(right.indexOf("&"));

            query=left;
            if(query.length>0) query+="&";
            query+=element + "=" + val;
            query+=right;
		}
		if(query.indexOf("?")==-1) query="?" + query;
	}
	//alert(query)
	return query;
}

//************ XMLnewReq library **************
function NewXMLHttpReq()
{
    var req = false;
    if(window.XMLHttpRequest) //Mozilla
    {
	    req = new XMLHttpRequest();
	    if(req.overrideMimeType) req.overrideMimeType("text/xml");
    }
    else if(window.ActiveXObject) //IE
	    {
		    try{req = new ActiveXObject("Msxml2.XMLHTTP");}
		    catch(e01)
		    {
			    try{req = new ActiveXObject("Microsoft.XMLHTTP");}
			    catch(e02){}
		    }
	    }
    return req;
}	
//************ XMLnewReq library **************

