(function($) {
    /** jQuery.toJSON( json-serializble )
        Converts the given argument into a JSON respresentation.

        If an object has a "toJSON" function, that will be used to get the representation.
        Non-integer/string keys are skipped in the object, as are keys that point to a function.

        json-serializble:
            The *thing* to be converted.
     **/
    $.toJSON = function(o)
    {
        if (typeof(JSON) == 'object' && JSON.stringify)
            return JSON.stringify(o);
        
        var type = typeof(o);
    
        if (o === null)
            return "null";
    
        if (type == "undefined")
            return undefined;
        
        if (type == "number" || type == "boolean")
            return o + "";
    
        if (type == "string")
            return $.quoteString(o);
    
        if (type == 'object')
        {
            if (typeof o.toJSON == "function") 
                return $.toJSON( o.toJSON() );
            
            if (o.constructor === Date)
            {
                var month = o.getUTCMonth() + 1;
                if (month < 10) month = '0' + month;

                var day = o.getUTCDate();
                if (day < 10) day = '0' + day;

                var year = o.getUTCFullYear();
                
                var hours = o.getUTCHours();
                if (hours < 10) hours = '0' + hours;
                
                var minutes = o.getUTCMinutes();
                if (minutes < 10) minutes = '0' + minutes;
                
                var seconds = o.getUTCSeconds();
                if (seconds < 10) seconds = '0' + seconds;
                
                var milli = o.getUTCMilliseconds();
                if (milli < 100) milli = '0' + milli;
                if (milli < 10) milli = '0' + milli;

                return '"' + year + '-' + month + '-' + day + 'T' +
                             hours + ':' + minutes + ':' + seconds + 
                             '.' + milli + 'Z"'; 
            }

            if (o.constructor === Array) 
            {
                var ret = [];
                for (var i = 0; i < o.length; i++)
                    ret.push( $.toJSON(o[i]) || "null" );

                return "[" + ret.join(",") + "]";
            }
        
            var pairs = [];
            for (var k in o) {
                var name;
                var type = typeof k;

                if (type == "number")
                    name = '"' + k + '"';
                else if (type == "string")
                    name = $.quoteString(k);
                else
                    continue;  //skip non-string or number keys
            
                if (typeof o[k] == "function") 
                    continue;  //skip pairs where the value is a function.
            
                var val = $.toJSON(o[k]);
            
                pairs.push(name + ":" + val);
            }

            return "{" + pairs.join(", ") + "}";
        }
    };

    /** jQuery.evalJSON(src)
        Evaluates a given piece of json source.
     **/
    $.evalJSON = function(src)
    {
        if (typeof(JSON) == 'object' && JSON.parse)
            return JSON.parse(src);
        return eval("(" + src + ")");
    };
    
    /** jQuery.secureEvalJSON(src)
        Evals JSON in a way that is *more* secure.
    **/
    $.secureEvalJSON = function(src)
    {
        if (typeof(JSON) == 'object' && JSON.parse)
            return JSON.parse(src);
        
        var filtered = src;
        filtered = filtered.replace(/\\["\\\/bfnrtu]/g, '@');
        filtered = filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']');
        filtered = filtered.replace(/(?:^|:|,)(?:\s*\[)+/g, '');
        
        if (/^[\],:{}\s]*$/.test(filtered))
            return eval("(" + src + ")");
        else
            throw new SyntaxError("Error parsing JSON, source is not valid.");
    };

    /** jQuery.quoteString(string)
        Returns a string-repr of a string, escaping quotes intelligently.  
        Mostly a support function for toJSON.
    
        Examples:
            >>> jQuery.quoteString("apple")
            "apple"
        
            >>> jQuery.quoteString('"Where are we going?", she asked.')
            "\"Where are we going?\", she asked."
     **/
    $.quoteString = function(string)
    {
        if (string.match(_escapeable))
        {
            return '"' + string.replace(_escapeable, function (a) 
            {
                var c = _meta[a];
                if (typeof c === 'string') return c;
                c = a.charCodeAt();
                return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
            }) + '"';
        }
        return '"' + string + '"';
    };
    
    var _escapeable = /["\\\x00-\x1f\x7f-\x9f]/g;
    
    var _meta = {
        '\b': '\\b',
        '\t': '\\t',
        '\n': '\\n',
        '\f': '\\f',
        '\r': '\\r',
        '"' : '\\"',
        '\\': '\\\\'
    };
})(jQuery);
function setLinkPostDown(area, classes, postEvent,arr){ 
    $(area).find(classes).each(function(i){
       //   popupMsg('s - ' + $(this).html()) ;
        $(this).unbind('click') ;
        $(this).click(
            function(event){
                event.preventDefault();
   
                var url = $(this).attr('href') ;
                            // alert('ss - '+$(this)) ;
               //   popupMsg(url) ;
                $.post(url,arr,function(msg){
                    popupMsgDown(msg) ;
                    postEvent() ;
                }) ;
            }) ;
    });
}

function setLinkPost(area, classes, postEvent,arr){ 
    $(area).find(classes).each(function(i){
       //   popupMsg('s - ' + $(this).html()) ;
        $(this).unbind('click') ;
        $(this).click(
            function(event){
                event.preventDefault();
   
                var url = $(this).attr('href') ;
                if(url.indexOf('/')!=0){
                    url = '/' + url ;
                }
                $.post(url,arr,function(msg){
                    popupMsg(msg) ;
                    postEvent() ;
                }) ;
            }) ;
    });
}
function setLinkPostForm(area, classes, postEvent,arr,url,arr2){ 
    $(area).find(classes).each(function(i){
        $(this).unbind('click') ;
        $(this).click(
            function(event){
                event.preventDefault();
   
              //  var url = $(this).attr('href') ;
                            // alert('ss - '+$(this)) ;
            //      popupMsg(url) ;
                
                for(key in arr2){
                    //popupMsg('k - '+key + " - " + arr2[key]) ;
                    if(arr2[key]=='1')
                        arr[key] = '1' ;
                     else if(arr2[key]=='2'){
                         var content = $('#edytor_elrte').tinymce().getContent();
                         if(!content) {
                             popupMsg('Down. Enter some text!') ;
                             return ; 
                         }
                        arr[key] =  content ;
                     }
                     else if(arr2[key]=='3'){
                        var bef = '#'+key+' option:checked' ;
                        arr[key] =  $('#'+key+':checked').val();      
                     //   popupMsg(' - '+key+' - '+ arr[key]+ ' - '+ bef) ;
                     } else if(arr2[key]=='4'){
                        var bef = '#'+key+' option:selected' ;
                        arr[key] =  $('#'+key+' option:selected').val();      
                       // popupMsg(' - '+key+' - '+ arr[key]+ ' - '+ bef) ;
                     } else if(arr2[key]=='5'){
                       // var bef = '#'+key+' option:checked' ;
                        arr[key] =  $('input:radio[name='+key+']:checked').val();      
                      //  popupMsg(' - '+key+' - '+ arr[key]+ ' - '+ bef) ;
                     } else{
                        
                        arr[key] = $(arr2[key]).val() ;
                        if(key == 'race_cash'){
                            
                        }
                        else if(!arr[key]){
                        //    popupMsg(' - '+key+' - '+ arr[key]+ ' - '+ arr2[key]) ;
                          //  popupMsg('Down. You must enter a '+key) ;
                           //  return;
                        }
                     }
                }
                if(url.indexOf('/')!=0){
                    url = '/' + url ;
                }
                $.post(url,arr,function(msg){
                    if(msg)popupMsg(msg) ;
                    if(postEvent!=null)postEvent() ;
                }) ;
            }) ;
    });
}
function setLinkPostForm2(area, classes, postEvent,arr,url,arr2){ 
    $(area).find(classes).each(function(i){
       //   popupMsg('s - ' + $(this).val('id')) ;
        $(this).unbind('click') ;
        $(this).click(
            function(event){
                event.preventDefault();
                var amount = $('#amount').val(); 
                var points = $('#points').val();  
                if((!amount ) && (!points)){
                    popupMsg('Down. You must enter cash OR points') ;
                    return;
                }
                var reason = $('#reason').val(); 
                if((!reason)){
                    popupMsg('Down. You must enter a reason') ;
                    return;
                }
                for(key in arr2){
                    //popupMsg('k - '+key + " - " + arr2[key]) ;
                    if(arr2[key]=='1')
                        arr[key] = '1' ;
                     else if(arr2[key]=='2'){
                         var content = $('#edytor_elrte').elrte('val');
                         if(!content) {
                             popupMsg('Down. Enter some text!') ;
                             return ; 
                         }
                        arr[key] =  content ;
                     }
                     else if(arr2[key]=='3'){
                        var bef = '#'+key+' option:checked' ;
                        arr[key] =  $('#'+key+':checked').val();      

                     } else if(arr2[key]=='4'){
                        var bef = '#'+key+' option:selected' ;
                        arr[key] =  $('#'+key+' option:selected').val();      
                        //popupMsg(' - '+key+' - '+ arr[key]+ ' - '+ bef) ;
                     } else
                        arr[key] = $(arr2[key]).val() ;
                }
                if(url.indexOf('/')!=0){
                    url = '/' + url ;
                }
                $.post(url,arr,function(msg){
                    if(msg)popupMsg(msg) ;
                    if(postEvent!=null)postEvent() ;
                }) ;
            }) ;
    });
}
function setLinkPostFormHref(area, classes, postEvent,arr,url,arr2){ 
    $(area).find(classes).each(function(i){
       //   popupMsg('s - ' + $(this).val('id')) ;
        $(this).unbind('click') ;
        $(this).click(
            function(event){
                event.preventDefault();
   
              //  var url = $(this).attr('href') ;
                            // alert('ss - '+$(this)) ;
            //      popupMsg(url) ;
                
                for(key in arr2){
                   // popupMsg('k - '+key) ;
                    if(arr2[key]=='1')
                        arr[key] = '1' ;
                    else if(arr2[key]=='2')
                        arr[key] =  $('#edytor_elrte').elrte('val');
                     else if(arr2[key]=='3')
                        arr[key] =  $('#'+arr[key]+' option:checked').val();                   
                    else
                        arr[key] = $(arr2[key]).val() ;
                }
                if(url.indexOf('/')!=0){
                    url = '/' + url ;
                }
                $('#content').load(url,arr );
            }) ;
    });
}
function setNav(user,name, postEvent, div){
   var place ;
   if(div){place = div;} else {place = name;}
    $('.paging_nav').find("a").each(function(i){

        $(this).unbind('click');
        $(this).click(
            function(event){
               
                event.preventDefault();
               // popupMsg('found - '+ $(this).attr('id')) ;
            
                 var number = $(this).text() ;
                 if(number=='First') number = '1' ;
                 if(number=='Next') number = parseInt(curPage) + 1  ;
                 if(number=='Previous') number = parseInt(curPage) - 1  ;
                 if(number=='Last') number = $(this).attr('id')  ;  
                 curPage = number ;
                // alert('cP - '+curPage+ ' : '+name+ " user: "+user);
                 $('#'+place+'').load('/'+name+'.php', {username: user ,page:number});
 
            })   ;
    });
}
function setLink(classes, file,user,postEvent,arr){

    $(classes).each(function(i){

        $(this).unbind('click') ;
      //  alert('ok') ;
        $(this).click(
            function(event){
                event.preventDefault();
              //  alert('ss - '+$(this).attr('href')) ;
                var url = $(this).attr('href') ;
                if(file.indexOf('/')!=0){
                    file = '/' + file ;
                }
                $('#content').load(file, {username: user} );
                curPageFile = file ;

            }) ;
    });
}
function setLinkHref(classes,postEvent,arr){ 

    $(classes).each(function(i){
        $(this).unbind('click') ;
       // popupMsg($(this)) ;
        $(this).click(
            function(event){
                event.preventDefault();
               for(key in arr){
                     if(key=='3'){
                        arr['title'] = $(this).attr('title');     
                        curPageTitle = $(this).attr("title") ;
                    //    popupMsg('t-'+$(this).attr("title"));
						parent = $(this).attr("parent") ;
                        $("#pg_dscr").html('' + parent + ' > ' + $(this).attr("title")) ;
                     }
               }
                var url = encodeURI($(this).attr('href')) ;
                                       

                if(url.indexOf('/')!=0){
                    url = '/' + url ;
                }
               // popupMsg(url) ;
                $('#content').load(url,arr );
                curPageFile = url ;

            }) ;
    });
}
function setLinkArr(classes, file,user,postEvent,arr){

    $(classes).each(function(i){
        $(this).unbind('click') ;
      //  alert('ok') ;
        $(this).click(
            function(event){
                event.preventDefault();
              //  alert('ss - '+$(this).attr('href')) ;
                var url = $(this).attr('href') ;
              //  popupMsg(url) ;
                $('#content').load(file, arr );
                curPageFile = file ;

            }) ;
    });
}
  function var_dump(data,addwhitespace,safety,level) {
        var rtrn = '';
        var dt,it,spaces = '';
        if(!level) {level = 1;}
        for(var i=0; i<level; i++) {
           spaces += '   ';
        }//end for i<level
        if(typeof(data) != 'object') {
           dt = data;
           if(typeof(data) == 'string') {
              if(addwhitespace == 'html') {
                 dt = dt.replace(/&/g,'&amp;');
                 dt = dt.replace(/>/g,'&gt;');
                 dt = dt.replace(/</g,'&lt;');
              }//end if addwhitespace == html
              dt = dt.replace(/\"/g,'\"');
              dt = '"' + dt + '"';
           }//end if typeof == string
           if(typeof(data) == 'function' && addwhitespace) {
              dt = new String(dt).replace(/\n/g,"\n"+spaces);
              if(addwhitespace == 'html') {
                 dt = dt.replace(/&/g,'&amp;');
                 dt = dt.replace(/>/g,'&gt;');
                 dt = dt.replace(/</g,'&lt;');
              }//end if addwhitespace == html
           }//end if typeof == function
           if(typeof(data) == 'undefined') {
              dt = 'undefined';
           }//end if typeof == undefined
           if(addwhitespace == 'html') {
              if(typeof(dt) != 'string') {
                 dt = new String(dt);
              }//end typeof != string
              dt = dt.replace(/ /g,"&nbsp;").replace(/\n/g,"<br>");
           }//end if addwhitespace == html
           return dt;
        }//end if typeof != object && != array
        for (var x in data) {
           if(safety && (level > safety)) {
              dt = '*RECURSION*';
           } else {
              try {
                 dt = var_dump(data[x],addwhitespace,safety,level+1);
              } catch (e) {continue;}
           }//end if-else level > safety
           it = var_dump(x,addwhitespace,safety,level+1);
           rtrn += it + ':' + dt + ',';
           if(addwhitespace) {
              rtrn += '\n'+spaces;
           }//end if addwhitespace
        }//end for...in
        if(addwhitespace) {
           rtrn = '{\n' + spaces + rtrn.substr(0,rtrn.length-(2+(level*3))) + '\n' + spaces.substr(0,spaces.length-3) + '}';
        } else {
           rtrn = '{' + rtrn.substr(0,rtrn.length-1) + '}';
        }//end if-else addwhitespace
        if(addwhitespace == 'html') {
           rtrn = rtrn.replace(/ /g,"&nbsp;").replace(/\n/g,"<br>");
        }//end if addwhitespace == html
        return rtrn;
     }//end function var_dump
     
  function edytorElrte(){

  }

function none(){
    
}
function reloadThisP(){
    setTimeout('reloadThis()',1000) ;
}
function reloadThisCrimes(){
    setTimeout('reloadThis()',2000) ;
}
function alpha(string) {
var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";

for (var i = 0; i < string.length; i++) {
    if (iChars.indexOf(string.charAt(i)) != -1) {
        popupMsg ("Your text has special characters. \nYou can only use alphanumeric characters.");
        return false;
    }
}
return true ;
}


function num(string){
var iChars = "1234567890";
for (var i = 0; i < string.length; i++) {
    if (iChars.indexOf(string.charAt(i)) == -1) {
        popupMsg ("Your text has special characters. \nYou can only use numbers.");
        return false;
    }
}
return true ;    
}
function validate_ban()
{
   var tle = document.getElementById('ban_username');
   var desc   = document.getElementById('ban_reason');
   var tim   = document.getElementById('time');

   var vals = tle.value+'|'+desc.value+'|'+tim.value;
      
   var flag = 0;
   
   var str = 'Please complete following fields \n';
   
   var array_invalid = Array();
   
   if( tle.value=="" && desc.value=="" )
   {
	  str+='\n - Username '+'\n - Reason';
          alert(str);
	  tle.focus();
	  return false;
   }
   var i=0;
   if(tle.value=='')
   {
     str+='\n - Username ';
	 array_invalid[i]='tle';i++;
	 flag=1;
   }
   if(desc.value=='')
   {
     str+='\n - Reason';
	 array_invalid[i]='desc';i++;
	 flag=1;
   }

   if(tim.value!='' && isNaN(tim.value))
   {
     alert('Invalid number of hours');
     tim.select();
     return false;
   }
      
   if(flag)
   {
      alert(str); 
		switch(array_invalid[0])
		{
			case 'tle' :tle.focus();break;
			case 'desc' :desc.focus();break;
			default :break;
		}
	    return false;
   }
   else return vals;

}
function validate_warning()
{
   var tle = document.getElementById('warning_username');
   var desc   = document.getElementById('warning_msg');

   var vls = tle.value+'|'+desc.value;
      
   var flag = 0;
   
   var str = 'Please complete following fields \n';
   
   var array_invalid = Array();
   
   if( tle.value=="" && desc.value=="" )
   {
	  str+='\n - Username '+'\n - Message';
          alert(str);
	  tle.focus();
	  return false;
   }
   var i=0;
   if(tle.value=='')
   {
     str+='\n - Username ';
	 array_invalid[i]='tle';i++;
	 flag=1;
   }
   if(desc.value=='')
   {
     str+='\n - Message';
	 array_invalid[i]='desc';i++;
	 flag=1;
   }

      
   if(flag)
   {
      alert(str); 
		switch(array_invalid[0])
		{
			case 'tle' :tle.focus();break;
			case 'desc' :desc.focus();break;
			default :break;
		}
	    return false;
   }
   else return vls;

}
function validate_ticket()
{
   var tle = document.getElementById('ticket_id');
   var desc   = document.getElementById('Danswer');

   var vals = tle.value+'|'+desc.value;
      
   var flag = 0;
   
   var str = 'Please complete following fields \n';
   
   var array_invalid = Array();
   
   if( tle.value=="" && desc.value=="" )
   {
	  str+='\n - Ticket id '+'\n - Answer';
      alert(str);
	  tle.focus();
	  return false;
   }
   var i=0;
   if(tle.value=='')
   {
     str+='\n - Ticket id ';
	 array_invalid[i]='tle';i++;
	 flag=1;
   }
   else if(isNaN(tle.value))
   {
     alert("Invalid ticket id");
     tle.select();
     return false;
   }

   if(desc.value=='')
   {
     str+='\n - Answer';
	 array_invalid[i]='desc';i++;
	 flag=1;
   }
      
   if(flag)
   {
       alert(str);
      
		  
		switch(array_invalid[0])
		{
			case 'tle' :tle.focus();break;
			case 'desc' :desc.focus();break;
			default :break;
		}
	     return false;
   }
   else return vals;
}

function validate_ticket_submit()
{
   var tle = document.getElementById('ticket');
   var desc   = document.getElementById('description_description');
      
   var flag = 0;
   
   var str = 'Please complete following fields \n';
   
   var array_invalid = Array();
   
   if( tle.value=="" && desc.value=="" )
   {
	  str+='\n - Title '+'\n - Problem';
      alert(str);
	  tle.focus();
	  return false;
   }
   var i=0;
   if(tle.value=='')
   {
     str+='\n - Title ';
	 array_invalid[i]='tle';i++;
	 flag=1;
   }
   if(desc.value=='')
   {
     str+='\n - Problem';
	 array_invalid[i]='desc';i++;
	 flag=1;
   }
      
   if(flag)
   {
       alert(str);
      
		  
		switch(array_invalid[0])
		{
			case 'tle' :tle.focus();break;
			case 'desc' :desc.focus();break;
			default :break;
		}
	     return false;
   }
   else return true;
}
function keycheck(event){
    return true ;
}
function userPanelLink(div,usern,titl, file){
   $(div).click(function(i){
       page = null ;
       curPageFile = file ;
       $("#pg_dscr").html(titl) ;
       $("#panel_above").html('') ;
       $("#content").load(curPageFile, {username: usern, title: titl})
   }); 
}
function AttachScript(src)
{
    var script = document.createElement("SCRIPT");
    script.type = "text/javascript";
    document.getElementsByTagName("body")[0].appendChild(script);
    script.src = src;
}
function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}
function showToolTip(title,content,number,user){
//    if(console){
//        console.log('tooltip - '+title) ;
//    }
    $.modal("<div align='center'><h1>"+title+"</h1></div>\n"+
            "<p>"+content+"</p>"+
            "<div class='buttons'>\n"+
            "<center><div class='next buttoncss' style='cursor:pointer;'>Next Tip</div></center>\n"+
            "</div>",{
            onShow: function (dialog) {
				var modal = this;
				$('.next', dialog.data[0]).click(function () {
//                            if(console){
//                                console.log('next clicked') ;
//                             }
                          $.post('/next-tooltip.php',{username:user},function(msg){
									msg = jQuery.parseJSON(msg);
									showToolTip(msg.title,msg.content,msg.number,msg.user) ;
								 
                          });               
				modal.close(); // or $.modal.close();
				
			});
            }}
			);
}

function setLike(LD,username)
{
		$.ajax
		(
		 {
		  type: "POST",
		  url: "/ajaxLikeDislike.php",
		  data: "like="+LD+"&username="+username,
		  async: false,
		  success: function(data)
					{
					
						//alert(data)
						var dataArr = data.split("<br>");
						
						if( data != "" )
						{
							$("#likecount"+LD).html(dataArr[0]);
							//$.jpopit(dataArr[1], {fadeInTime: 2000, delay: 5000}).css({"backgroundColor": "purple", "color": "pink"});
                                                        popupMsg(dataArr[1]) ;
							chk=true;
						}
						else
						{
							chk=false;
						}
					}
		 }
		);
}
function setDislike(LD,username)
{
		$.ajax
		(
		 {
		  type: "POST",
		  url: "/ajaxLikeDislike.php",
		  data: "notlike="+LD+"&username="+username,
		  async: false,
		  success: function(data)
					{
					
						//alert(data)
						var dataArr = data.split("<br>");
						
						if( data != "" )
						{
							$("#dislikecount"+LD).html(dataArr[0]);
							//$.jpopit(dataArr[1], {fadeInTime: 2000, delay: 5000}).css({"backgroundColor": "purple", "color": "pink"});
                                                        popupMsg(dataArr[1]) ;
							chk=true;
						}
						else
						{
							chk=false;
						}
					}
		 }
		);
}

