/*
	eval scripts (c) restorer'2006
	code based on protorype library
*/


var sAJAX;
var sLabel;
var req = null;

function DoCallback(url, params) {
   var pageUrl = url + "?callback=true&param=" + params;
   try{ req = new ActiveXObject("Msxml2.XMLHTTP"); req.open("POST",pageUrl,true); }catch(e){
   try{ req = new ActiveXObject("MSXML2.XMLHTTP.3.0"); req.open("POST",pageUrl,true); }catch(e){
   try{ req = new ActiveXObject("Microsoft.XMLHTTP"); req.open("POST",pageUrl,true); }catch(e){
   try{ req = new ActiveXObject("Microsoft.XMLDOM"); req.open("POST",pageUrl,true); }catch(e){
   try{ req = new ActiveXObject("MSXML3.XMLHTTP"); req.open("POST",pageUrl,true); }catch(e){
   try{ req = new XMLHttpRequest(); if(req.overrideMimeType) req.overrideMimeType('text/xml'); req.open("GET",pageUrl,true); }catch(e){
   throw new Error("Could not find an XMLHttpRequest alternative.");}}}}}}
   req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   req.onreadystatechange = UpdateAJAXLabel;
   req.send(null);
   return req;
}

function UpdateAJAXLabel() {
   if (req.readyState == 4) {
      if (req.status == 200) {
          if (req.responseText.length > 0) {
            //$get(sControl).style.display = 'none';
            //document.getElementById(sAJAX).style.display = 'none';
            var sResults = req.responseText.split(",");
            if(sResults.length==1) {
                document.getElementById(sLabel).innerHTML = sResults[0]; 
            }
          }
       } else {
       }
    }
}

function Execute(Params,Controls){
    var control = Controls.split(",");
    //sAJAX = control[0];
    sLabel = control[0];
    DoCallback("",Params);
}

///////////////////////////////////////


//var js_ScriptFragment = '(?:<script.id=.evaluateid.*?>)((\n|\r|.)*?)(?:<\/script>)';
//var js_ScriptFragment = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
//var js_ScriptFragment = '(?:<script.id=\"evaluateid\".*?>)((\n|\r|.)*?)(?:<\/script>)';
var js_ScriptFragment = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
//var js_ScriptFragment = '(?:<script.id=.evaluateid.*?>)((\n|\r|.)*?)(?:<\/script>)';

function js_stripScripts(str)
{
	return str.replace(new RegExp(js_ScriptFragment, 'img'), '');
}

function js_extractScripts(str)
{
	var matchAll = new RegExp(js_ScriptFragment, 'img');
    var matchOne = new RegExp(js_ScriptFragment, 'im');

	var arr = str.match(matchAll) || [];
	var res = [];
	//document.body.innerHTML = document.body.innerHTML + ',' + arr[0];
	for (var i = 0; i < arr.length; i++) res.push((arr[i].match(matchOne) || ['', ''])[1]);
	return res;
}

function js_evalScripts(str)
{
	var arr = js_extractScripts(str);
	for (var i = 0; i < arr.length; i++) {
	    //document.body.innerHTML = document.body.innerHTML + '<br>' + arr[i];
	    eval(arr[i]);
	}
}

function js_updateElement(element)
{
	var content = element.innerHTML;
	setTimeout(function() {js_evalScripts(content)}, 1);
	//element.innerHTML = js_stripScripts(content); 
}

var js_postbackElement;

function js_beginRequestHandler(sender, args)
{
	js_postbackElement = args.get_postBackElement();
}

function js_pageLoadedHandler(sender, args)
{
    var updatedPanels = args.get_panelsUpdated();
	if (typeof(js_postbackElement) === "undefined") return;
	for (var i = 0; i < updatedPanels.length; i++) js_updateElement(updatedPanels[i]);
}


function js_registerJsEval(args)
{
    //document.write(args);
	Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(js_beginRequestHandler);
	Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(js_pageLoadedHandler);
}

var updatePanelHook =  
{  
       initialised : false,  
       init : function()  
       {  
            if (!this.initialised)  
            {  
                //hook up to the various page loading events to provide extended update panel functionality  
                var prm = Sys.WebForms.PageRequestManager.getInstance();  
               prm.add_pageLoading(pageLoadingHandler);  
               this.initialised = true;  
         }  
         function pageLoadingHandler(sender, args)  
         {  
             var arr = args.get_panelsUpdating();  
             for(var i =0; i< arr.length;i++)  
            {  
                var updatedPanel = arr[i];  
                Sys.Debug.trace(String.format("Updated: {0}", updatedPanel.id));  
                //document.write(String.format("Updated: {0}", updatedPanel.id));
             }  
         }  
     }  
}  
   
if (typeof(Sys) != "undefined")  
{  
     Sys.Application.notifyScriptLoaded();  
}  

if( Sys && Sys.Application ){
     Sys.Application.notifyScriptLoaded();
}


/*

if (typeof(js_eval_scripts_included) != 'undefined')
{
	js_eval_scripts_included = true;
	alert('Secondary include.');
}

//var js_ScriptFragment = '(?:<script.id=.evaluateid.*?>)((\n|\r|.)*?)(?:<\/script>)';
//var js_ScriptSrcFragment = '(?:<script.id=.evaluateid.*?>)((\n|\r|.)*?)(?:<\/script>)';
//var js_ScriptFragment = '(?:<script.id=\"evaluateid\".*?>)((\n|\r|.)*?)(?:<\/script>)';


var sValue = '';
//var js_ScriptFragment = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
//var js_ScriptSrcFragment = '<script.+(src[ ]*=[ ]*\'(.*?)\'|src[ ]*=[ ]*"(.*?)").+';
var js_ScriptFragment = '(?:<div.id=.' + sValue + '.*?>)((\n|\r|.)*?)(?:<\/div>)';
var js_ScriptSrcFragment = '<div.+(src[ ]*=[ ]*\'(.*?)\'|src[ ]*=[ ]*"(.*?)").+';

function js_extractScripts(str)
{
    //var js_ScriptFragment = '(?:<script.id=.evaluateid' + sValue + '.*?>)((\n|\r|.)*?)(?:<\/script>)';
	var matchAll = new RegExp(js_ScriptFragment, 'img');
	var matchOne = new RegExp(js_ScriptFragment, 'im');
	var matchSrc = new RegExp(js_ScriptSrcFragment, 'im');

	var arr = str.match(matchAll) || [];
	var res = [];

	for (var i = 0; i < arr.length; i++)
	{
		var srcMt = arr[i].match(matchSrc);
		if (srcMt)
		{
			if (srcMt.length > 3) res.push(['src', srcMt[3]]);
			else res.push(['src', srcMt[2]]);
		}

		var mtCode = arr[i].match(matchOne) || ['', ''];
		if (mtCode[1] != '') res.push(['code', mtCode[1]]);
	}

	return res;
}
/*
/*
	Load script and wait until it loads.
	(if appent script element to DOM, Firefox does not wait until loading was completed)
*/
/*

function js_loadScript(src)
{
	var ex;
	var req = null;

	if (window.XMLHttpRequest)
	{
		req = new XMLHttpRequest();
	}
	else
	if (window.ActiveXObject)
	{
		var msxmls = ['Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
		for (var i = 0; i < msxmls.length; i++)
		{
			try
			{
				req = new ActiveXObject(msxmls[i]);
				break;
			}
			catch (ex) {}
		}
	}

	if (req===null || req===false)
	{
		alert('Unable find XMLHttpRequest or it ActiveX alalog.');
		return;
	}

	req.open("GET", src, false);	// not asynchronous
	req.send(null);

	if (req.status == 200)
	{
		window.eval(req.responseText);
	}
	else alert('Unable to load ' + src + ' (' + req.status + ')');
}

function js_evalScripts(str)
{
	var ex;
	var arr = js_extractScripts(str);

	for (var i = 0; i < arr.length; i++)
	{
		switch (arr[i][0])
		{
			case 'src':
				js_loadScript(arr[i][1]);
				break;

			case 'code':
				var cnt = arr[i][1];

				// hack for RadTabStrip
				// but the best way is set HttpContext.Current.Request["httprequest"] to true in code behind
				cnt = cnt.replace(/AppendStyleSheet\(false,/g, 'AppendStyleSheet(true,');

				eval(cnt);
				break;
		}
	}
}

function js_updateElement(element)
{
	var content = element.innerHTML;
	setTimeout(function() {js_evalScripts(content)}, 1);
}

var js_postbackElement;

function js_beginRequestHandler(sender, args)
{
	js_postbackElement = args.get_postBackElement();
}

function js_pageLoadedHandler(sender, args)
{
	if (typeof(js_postbackElement) === "undefined") return;

	var updatedPanels = args.get_panelsUpdated();
	for (var i = 0; i < updatedPanels.length; i++) js_updateElement(updatedPanels[i]);
}

function js_registerJsEval(args)
{
	var ex;
    sValue = args;
	// don't display error if EnablePartialRendering is false
	try
	{
		Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(js_beginRequestHandler);
		Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(js_pageLoadedHandler);
	}
	catch (ex) {}
}

*/

