rn = {
     


};
	
	
$$=rn;
	

var aLinks=new Array();
var editMode=0;
var moveMode=0;
var lastdrag;
var pbwww='http://www.chainslayer.com/';
var pbdomain='chainslayer.com';
var pbcookiedomain='.chainslayer.com';



jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};




rn.fview = function(name,viewclass) {
	$("#inList").removeClass();
	$("#inList").addClass(viewclass);	
	$("#sViewMode").removeClass();
	$("#sViewMode").addClass(viewclass);
	$.cookie(name, viewclass ,{path: '/' , domain: pbcookiedomain}); 	
};
rn.ePTo = function() {
	rn.mPof();
	$("#editselect").show();	
	$("#editPhotoText").html('Edit Off');		
	rn.selOn();	
};
rn.ePCo = function() {
	rn.mPof();
	$("#editcover").show();	
	$("#editCoverText").html('Cover Off');		
	rn.selOn();	
};				

rn.ePTof = function() {
	$("#editselect").hide();		
	$("#editPhotoText").html('Edit');			
	rn.selOff();
};
rn.ePCof = function() {
	$("#editcover").hide();		
	$("#editCoverText").html('Cover');			
	rn.selOff();
};
rn.ePC = function() {
	if ($("#editCoverText").html()=='Cover Off')
	{
		rn.ePCof();
	}
	else
	{
		//$.cookie('editReturn', document.location ,{path: '/', domain: pbcookiedomain}); 		
		rn.ePCo();
	}
};
rn.ePT = function() {
	if ($("#editPhotoText").html()=='Edit Off')
	{
		rn.ePTof();
	}
	else
	{
		$.cookie('editReturn', document.location ,{path: '/', domain: pbcookiedomain}); 		
		rn.ePTo();
	}
};
rn.mP = function() {
	if (moveMode==1)
	{
		rn.mPof();
	}
	else
	{
		//if (arMode==1) arOff();	
		rn.mPo();
	}
};			

rn.mPo = function() {
	moveMode=1;	
	rn.ePTof();
	$("#moveselect").show();	
	$("#movePhotoText").html('Move Off');
	rn.selOn();
};			

rn.mPof = function() {
	moveMode=0;	
	$("#moveselect").hide();		
	$("#movePhotoText").html('Move');		
	rn.selOff();
};		
rn.selOn = function() {
	var count=0;
	
	
	$(".uPhotoSmall").find("a").each(
		function ()
		{
			aLinks[count]=$(this).attr("href");
			$(this).attr("href","javascript:;");
			//alert(aLinks[count]);
			count++;			
		}
	);
	
	$('#inList').Selectable(
		{
			accept : 'inElm',
			opacity : 0.5,
			selectedclass : 'selecteditem',
			helperclass : 'selecthelper'

		}
	);		
};				

rn.selOff = function() {
	var count=0;
	$(".uPhotoSmall").find("a").each(
	function ()
		{
			$(this).attr("href",aLinks[count]);
			count++;
		}
	);
	
//need to add custom destroy to interface
//$('#photolistcontainer').SelectableDestroy();
};	


rn.cleanIn = function(o,def) {
	if ($(o).val()==def) $(o).val('');

};			

(function($) {   
    function toIntegersAtLease(n) 
    // Format integers to have at least two digits.
    {    
        return n < 10 ? '0' + n : n;
    }

    Date.prototype.toJSON = function(date)
    // Yes, it polutes the Date namespace, but we'll allow it here, as
    // it's damned usefull.
    {
        return this.getUTCFullYear()   + '-' +
             toIntegersAtLease(this.getUTCMonth()) + '-' +
             toIntegersAtLease(this.getUTCDate());
    };

    var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g;
    var meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        };
        
    $.quoteString = function(string)
    // Places quotes around a string, inteligently.
    // If the string contains no control characters, no quote characters, and no
    // backslash characters, then we can safely slap some quotes around it.
    // Otherwise we must also replace the offending characters with safe escape
    // sequences.
    {
        if (escapeable.test(string))
        {
            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 + '"';
    };
    
    $.toJSON = function(o, compact)
    {
        var type = typeof(o);
        
        if (type == "undefined")
            return "undefined";
        else if (type == "number" || type == "boolean")
            return o + "";
        else if (o === null)
            return "null";
        
        // Is it a string?
        if (type == "string") 
        {
            return $.quoteString(o);
        }
        
        // Does it have a .toJSON function?
        if (type == "object" && typeof o.toJSON == "function") 
            return o.toJSON(compact);
        
        // Is it an array?
        if (type != "function" && typeof(o.length) == "number") 
        {
            var ret = [];
            for (var i = 0; i < o.length; i++) {
                ret.push( $.toJSON(o[i], compact) );
            }
            if (compact)
                return "[" + ret.join(",") + "]";
            else
                return "[" + ret.join(", ") + "]";
        }
        
        // If it's a function, we have to warn somebody!
        if (type == "function") {
            throw new TypeError("Unable to convert object of type 'function' to json.");
        }
        
        // It's probably an object, then.
        var ret = [];
        for (var k in o) {
            var name;
            type = typeof(k);
            
            if (type == "number")
                name = '"' + k + '"';
            else if (type == "string")
                name = $.quoteString(k);
            else
                continue;  //skip non-string or number keys
            
            var val = $.toJSON(o[k], compact);
            if (typeof(val) != "string") {
                // skip non-serializable values
                continue;
            }
            
            if (compact)
                ret.push(name + ":" + val);
            else
                ret.push(name + ": " + val);
        }
        return "{" + ret.join(", ") + "}";
    };
    
    $.compactJSON = function(o)
    {
        return $.toJSON(o, true);
    };
    
    $.evalJSON = function(src)
    // Evals JSON that we know to be safe.
    {
        return eval("(" + src + ")");
    };
    
    $.secureEvalJSON = function(src)
    // Evals JSON in a way that is *more* secure.
    {
        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);