
var m_pageLocation = "http://" + window.location.host;  //+ "/saautomart";  //window.location.href.substring(0,window.location.href.lastIndexOf("/"));
var m_rpp = 10;  


var _tmplCache = {}
this.parseTemplate = function(str, data) {
    /// <summary>
    /// Client side template parser that uses &lt;#= #&gt; and &lt;# code #&gt; expressions.
    /// and # # code blocks for template expansion.
    /// NOTE: chokes on single quotes in the document in some situations
    ///       use &amp;rsquo; for literals in text and avoid any single quote
    ///       attribute delimiters.
    /// </summary>    
    /// <param name="str" type="string">The text of the template to expand</param>    
    /// <param name="data" type="var">
    /// Any data that is to be merged. Pass an object and
    /// that object's properties are visible as variables.
    /// </param>    
    /// <returns type="string" />  
    var err = "";
    try {
        var func = _tmplCache[str];
        if (!func) {
            var strFunc =
            "var p=[],print=function(){p.push.apply(p,arguments);};" +
                        "with(obj){p.push('" +
             str.replace(/[\r\t\n]/g, " ")
               .replace(/'(?=[^#]*#>)/g, "\t")
               .split("'").join("\\'")
               .split("\t").join("'")
               .replace(/<#=(.+?)#>/g, "',$1,'")
               .split("<#").join("');")
               .split("#>").join("p.push('")
               + "');}return p.join('');";

            //alert(strFunc);
            func = new Function("obj", strFunc);
            _tmplCache[str] = func;
        }
        return func(data);
    } catch (e) { err = e.message; }
    return "< # ERROR: " + err.htmlEncode() + " # >";
}

function BuildGrid(template, result, parent, func, emptyMsg)
{
    var pageUrl = m_pageLocation + "/tabid/{0}/id/{1}/default.aspx";
    
    var sb = new Sys.StringBuilder();

    for(var item in result)
    {  
        var i = result[item];
        sb.append(func(i, template, pageUrl));
    }

    if (result == null || result.length <= 0)
    {
        $get("divPageHeader").style.display = 'none';
        sb.append(emptyMsg);
    }

    parent.innerHTML = sb.toString();
    HideIndicator();
}

function BuildPaging(offset,callBack)
{
    var sb = new Sys.StringBuilder();
    
    var actTotal = $get('hdTotal').value;
    if (actTotal == 0)
        return;
        
		var start = offset;
	
		for (var a=0;a < 2;a++)
		if ((start - m_rpp) >= 0)
			start -= m_rpp;

    var total = start + m_rpp*5;

    if (total > actTotal)
    {
        start -= (total - (Math.ceil(actTotal / 10) * 10));
        if (start < 0)
            start = 0;
            
        total = actTotal;
    }       					

	for (var a=start;a < total;a += m_rpp)
	{
		if (a == offset)
            sb.append("<span class=PagingCurrent><a href='#' onclick='" + callBack + "(" + a + ")'>" + ((a / m_rpp) + 1) + "</a></span>&nbsp");
        else sb.append("<span class=PagingOther><a href='#' onclick='" + callBack + "(" + a + ")'>" + ((a / m_rpp) + 1) + "</a></span>&nbsp");
	}
    
    var pageEnd = offset + m_rpp;
    if (pageEnd > actTotal)
        pageEnd = actTotal;
        
    $get("divPageHeader").innerHTML = (offset + 1) + "-" + pageEnd + " out of " + actTotal;
    $get("divPaging").innerHTML = sb.toString();
    $get("divTopPaging").innerHTML = sb.toString();
}

function ShowIndicator()
{
    $get("imgLoadIndicator").style.display = 'inline';
}

function HideIndicator()
{
     $get("imgLoadIndicator").style.display = 'none';
}

function GetServerVar(clientID)
{
    return $get($get("hdModuleID").value + "_" + clientID);
}