//Do not change//////////////////////////////////////////////////////////////////
var JSON=function(){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},s={'boolean':function(x){return String(x);},number:function(x){return isFinite(x)?String(x):'null';},string:function(x){if(/["\\\x00-\x1f]/.test(x)){x=x.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c;}
c=b.charCodeAt();return'\\u00'+
Math.floor(c/16).toString(16)+
(c%16).toString(16);});}
return'"'+x+'"';},object:function(x){if(x){var a=[],b,f,i,l,v;if(x instanceof Array){a[0]='[';l=x.length;for(i=0;i<l;i+=1){v=x[i];f=s[typeof v];if(f){v=f(v);if(typeof v=='string'){if(b){a[a.length]=',';}
a[a.length]=v;b=true;}}}
a[a.length]=']';}else if(x instanceof Object){a[0]='{';for(i in x){v=x[i];f=s[typeof v];if(f){v=f(v);if(typeof v=='string'){if(b){a[a.length]=',';}
a.push(s.string(i),':',v);b=true;}}}
a[a.length]='}';}else{return;}
return a.join('');}
return'null';}};return{copyright:'(c)2005 JSON.org',license:'http://www.crockford.com/JSON/license.html',stringify:function(v){var f=s[typeof v];if(f){v=f(v);if(typeof v=='string'){return v;}}
return null;},eval:function(text){try{if(/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(text)){return eval('('+text+')');}}catch(e){}
throw new SyntaxError("eval");},parse:function(text){var at=0;var ch=' ';function error(m){throw{name:'JSONError',message:m,at:at-1,text:text};}
function next(){ch=text.charAt(at);at+=1;return ch;}
function white(){while(ch){if(ch<=' '){next();}else if(ch=='/'){switch(next()){case'/':while(next()&&ch!='\n'&&ch!='\r'){}
break;case'*':next();for(;;){if(ch){if(ch=='*'){if(next()=='/'){next();break;}}else{next();}}else{error("Unterminated comment");}}
break;default:error("Syntax error");}}else{break;}}}
function string(){var i,s='',t,u;if(ch=='"'){outer:while(next()){if(ch=='"'){next();return s;}else if(ch=='\\'){switch(next()){case'b':s+='\b';break;case'f':s+='\f';break;case'n':s+='\n';break;case'r':s+='\r';break;case't':s+='\t';break;case'u':u=0;for(i=0;i<4;i+=1){t=parseInt(next(),16);if(!isFinite(t)){break outer;}
u=u*16+t;}
s+=String.fromCharCode(u);break;default:s+=ch;}}else{s+=ch;}}}
error("Bad string");}
function array(){var a=[];if(ch=='['){next();white();if(ch==']'){next();return a;}
while(ch){a.push(value());white();if(ch==']'){next();return a;}else if(ch!=','){break;}
next();white();}}
error("Bad array");}
function object(){var k,o={};if(ch=='{'){next();white();if(ch=='}'){next();return o;}
while(ch){k=string();white();if(ch!=':'){break;}
next();o[k]=value();white();if(ch=='}'){next();return o;}else if(ch!=','){break;}
next();white();}}
error("Bad object");}
function number(){var n='',v;if(ch=='-'){n='-';next();}
while(ch>='0'&&ch<='9'){n+=ch;next();}
if(ch=='.'){n+='.';while(next()&&ch>='0'&&ch<='9'){n+=ch;}}
if(ch=='e'||ch=='E'){n+='e';next();if(ch=='-'||ch=='+'){n+=ch;next();}
while(ch>='0'&&ch<='9'){n+=ch;next();}}
v=+n;if(!isFinite(v)){}else{return v;}}
function word(){switch(ch){case't':if(next()=='r'&&next()=='u'&&next()=='e'){next();return true;}
break;case'f':if(next()=='a'&&next()=='l'&&next()=='s'&&next()=='e'){next();return false;}
break;case'n':if(next()=='u'&&next()=='l'&&next()=='l'){next();return null;}
break;}
error("Syntax error");}
function value(){white();switch(ch){case'{':return object();case'[':return array();case'"':return string();case'-':return number();default:return ch>='0'&&ch<='9'?number():word();}}
return value();}};}();
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//s.greetings();// - synchronize example
//s.echo('ppp',callBackToHello);// - asynchronization example
var objContentJSON;
var jsonObj = {
    replaceContent: function(handler, funcCall, paramObj, obj, showLoading) {
        objContentJSON = document.getElementById(obj);
        if (showLoading) {

            //objContentJSON.innerHTML = "<div><img src='" + loadingImg.src + "' style=''/></div>"
            //objContentJSON.innerHTML = "please wait...";
        }

        var c_jsonHandler = eval('( new ' + handler + '())'); //new jsonHandler();
        paramObj = setParamObj(paramObj, 0);
        eval(' c_jsonHandler.' + funcCall + '(' + paramObj + 'replaceContentCallBackJSON)');


    },

    asyncWithCallback: function(handler, funcCall, paramObj, callbackFunc, showLoading) {
        //        if (showLoading)	
        //        {
        //            
        //            objContentJSON.innerHTML = "<table width='100%' height='100%' class='Loading'><tr><td valign='middle' align='center'><img src='" + loadingImg.src + "' style=''><br/><br/>Loading...</td></tr></table>"
        //            //objContentJSON.innerHTML = "please wait...";
        //        }

        var c_jsonHandler = eval('( new ' + handler + '())'); //new jsonHandler();
    
        paramObj = setParamObj(paramObj, 0);
        //paramObj = '1,1,';
        //        debugger;
        //        if(paramObj==paramsssObj)
        //            alert('equal')
        eval('c_jsonHandler.' + funcCall + '(' + paramObj + callbackFunc + ')');


    },
    syncReturnValue: function(handler, funcCall, paramObj, showLoading) {
        //        if (showLoading)	
        //        {
        //            
        //            objContentJSON.innerHTML = "<table width='100%' height='100%' class='Loading'><tr><td valign='middle' align='center'><img src='" + loadingImg.src + "' style=''><br/><br/>Loading...</td></tr></table>"
        //            //objContentJSON.innerHTML = "please wait...";
        //        }
        var c_jsonHandler = eval('( new ' + handler + '())'); //new jsonHandler();
        paramObj = setParamObj(paramObj, 1);
        var strResponse = eval('c_jsonHandler.' + funcCall + '(' + paramObj + ')');

        return strResponse;
    }
}

function replaceContentCallBackJSON(response)
{
    objContentJSON.innerHTML = response.result;

}

function setParamObj(paramObj,withP)
{
    var params='';
    
//  For Object of params
//    if(isNullOrUndefined(paramObj) || paramObj == '')
//        {
//                paramObj = '';
//        }
//        else
//        {
//            paramObj = "'" + paramObj + "'";
//            paramObj += ',';
//        }
//        return paramObj;

//    if(!isNullOrUndefined(paramObj) && paramObj!="")
//    {
//        if(withP==0)
//            params = paramObj.join(",") + ',';
//        else
//            params = paramObj.join(",");
//    }
//    else
//    {
//        params = '';
    //    }
   
    if(!isNullOrUndefined(paramObj) && paramObj!="")
    {   
        if(paramObj[0]=="isSearch")
        {  
            if(isNullOrUndefined(paramObj[1]) || paramObj[1] == '')
            {
                    params = '';
            }
            else
            {
                params = "'" + paramObj[1] + "'";
                params += ',';
            }
            
        }  
        else
        {
            for(i=0;i<paramObj.length;i++)
            {
                if(i==paramObj.length-1 && withP==0)
                {
                    params+=paramObj[i]+',';
                    break;
                }
                else if(i==paramObj.length-1 && withP==1)
                {
                    params+=paramObj[i];
                    break;
                }
                    
                params+=paramObj[i]+',';
            } 
        } 
    }
    else
    {
        params = '';
    }   
        //alert(params)
        return params;
    
    
}

function setJsonStringToJSObject(str)
{
    var obj = eval('(' + str + ')');
    return obj;
}
