YAHOO.namespace("Daiwai.community");
var Dom = YAHOO.util.Dom;

YAHOO.Daiwai.community.FavRelays =
{
	getByUser: function(user_id, div_id)
	{
        document.getElementById(div_id).innerHTML = '<p style="padding:20px;text-align:center;"><img src="/include/designs/rsv2/img/ajax-loader.gif"></p>';

		var callback = {
            success: function(o) {
				document.getElementById(div_id).innerHTML = o.responseText;
				//YAHOO.Daiwai.community.FavRelays.Sorter();
				//Event.addListener(oElement, "click", fnCallback);
            },
            failure: function(o) {
            	   document.getElementById(div_id).innerHTML = 'failed';
            }
        };
        var url = '/community/profile-' + user_id + '-get_relays.html';
        var postData = 'src=xhr';
        var request = YAHOO.util.Connect.asyncRequest('POST', url, callback, postData);	
	},

	remove: function(user_id, relay_id)
	{
        var relay_id = relay_id;

		var callback = {
            success: function(o) {
				var el = YAHOO.util.Dom.get('fav-relay-cntnr_' + relay_id);
				el.parentNode.removeChild(el);
            },
            failure: function(o) {
            	   alert('Verbindung fehlgeschlagen.');
            }
        };
        
        var dialogDeleteCallback = function() {
            var url = '/community/profile-' + user_id + '-remove_relay.html';
            var postData = 'src=xhr';
            postData += '&relay_id=' + encodeURIComponent(relay_id);
            var request = YAHOO.util.Connect.asyncRequest('POST', url, callback, postData);	
            dialog.hide();
        };

        var dialogCancelCallback = function() {
            dialog.hide();
        };
        
        var dialog = new YAHOO.widget.SimpleDialog("simpledialog1", 
             {
                width: "300px",
                fixedcenter: true,
                visible: false,
                draggable: false,
                close: true,
                text: "Diese Liga wirklich löschen?",
                icon: YAHOO.widget.SimpleDialog.ICON_WARN,
                constraintoviewport: true,
                buttons: [ {
                    text:"Löschen", 
                    handler: dialogDeleteCallback,
                    isDefault: true },
                { 
                    text:"Abbrechen",  
                    handler: dialogCancelCallback } ]
             });
        dialog.setHeader("Liga löschen");
        
        // Render the Dialog
        dialog.render(document.body);
        dialog.show();

	},

	add: function(relay_id)
	{
        var relay_id = relay_id;

		var callback = {
            success: function(o) {
                var response = YAHOO.lang.JSON.parse(o.responseText);
                dialog.setBody(response.msg);
                dialog.configButtons('', [[{
                        text: " OK ",
                        isDefaullt: true,
                        handler: dialogCancelHandler}]]
                        );
                setTimeout(function(){dialog.hide(); dialog.destroy();}, 5000);
            },
            failure: function(o) {
            	   alert('Verbindung fehlgeschlagen.');
            }
        };
        
        var dialogAddHandler = function() {
            var url = '/community/edit_profile-addfavoriterelay-' + 
                relay_id + '.html';
            var postData = 'src=xhr';
            var request = YAHOO.util.Connect.asyncRequest('POST', url, callback, postData);	
        };

        var dialogCancelHandler = function() {
            dialog.destroy();
        };
        
        var dialog = new YAHOO.widget.SimpleDialog("simpledialog1", 
             {
                width: "300px",
                fixedcenter: true,
                visible: false,
                draggable: false,
                close: true,
                text: "Diese Liga zu deinem Profil hinzufügen?",
                icon: YAHOO.widget.SimpleDialog.ICON_WARN,
                constraintoviewport: true,
                buttons: [ {
                    text:"Hinzufügen", 
                    handler: dialogAddHandler,
                    isDefault: true },
                { 
                    text:"Abbrechen",  
                    handler: dialogCancelHandler } ]
             });
        dialog.setHeader("Liga hinzufügen");
        // Render the Dialog
        dialog.render(document.body);
        dialog.show();
        dialog.configX(null, [150]);
	},

    Sorter: function(user_id, div_id)
    {
        var Dom = YAHOO.util.Dom,
            Event = YAHOO.util.Event,
            DDM = YAHOO.util.DragDropMgr,
            myDTDrags = {},
            user_id = user_id;
    
        // Custom drag and drop class
        YAHOO.example.DDDivs = function(id, sGroup, config) {
            YAHOO.example.DDDivs.superclass.constructor.call(this, id, sGroup, config);
            Dom.addClass(this.getDragEl(),"dd-curr-proxy");
            this.goingUp = false;
            this.lastY = 0;
        };
    
        // DDDivs extends DDProxy
        YAHOO.extend(YAHOO.example.DDDivs, YAHOO.util.DDProxy, {
            proxyEl: null,
            srcEl:null,
            srcData:null,
            srcIndex: null,
            tmpIndex:null,
    
            startDrag: function(x, y) {
                
                var proxyEl = this.proxyEl = this.getDragEl(),
                    srcEl = this.srcEl = this.getEl();
    
                // Make the proxy look like the source element
                Dom.setStyle(srcEl, "visibility", "hidden");
                proxyEl.innerHTML = srcEl.innerHTML;
                Dom.setStyle(proxyEl, "background", "#e2001a");
                Dom.setStyle(proxyEl, "color", "#fff");
                //Dom.addClass(proxyEl, "");
                Dom.addClass(Dom.get('fav-relays'), 'dd-mode');
            },
    
            endDrag: function(x,y) {
                var position,
                    srcEl = this.srcEl;
    
                Dom.setStyle(this.proxyEl, "visibility", "hidden");
                Dom.setStyle(srcEl, "visibility", "");
                Dom.removeClass(Dom.get('fav-relays'), 'dd-mode');
            },
    
             onDrag: function(e) {
                // Keep track of the direction of the drag for use during onDragOver
                var y = Event.getPageY(e);
                
                if (y < this.lastY) {
                    this.goingUp = true;
                } else if (y > this.lastY) {
                    this.goingUp = false;
                }
    
                this.lastY = y;
           },
    
            onDragOver: function(e, id) {
                // Reorder rows as user drags
                var destEl = Dom.get(id),
                srcEl = this.getEl();
    
                if (destEl.nodeName.toLowerCase() === "div") {
                    var cont = destEl.parentNode;  
                    
                    if(this.goingUp) {
                       cont.insertBefore(srcEl, destEl); // insert above  
                    } else {  
                       cont.insertBefore(srcEl, destEl.nextSibling); // insert below  
                    }  
                    
                    DDM.refreshCache();                 
                }
            }
        });

        
        var getSortElems = function() {
            return Dom.getElementsByClassName('relay_head', 'h3', 'fav-relays');            
        }
        
        function initDd() {
            Dom.setStyle(Dom.get('fav-relays'), 'display', 'none');
            var sort_cont = Dom.get('fav-relays-sorting'),
                i, id,
                divs = getSortElems();
            cont = document.createElement('div');
            cont.className = 'dd-relay-container';
            
            sort_cont.innerHTML = '<strong>Ligen sortieren</strong><br/><br/>' +
            '<p>Hier kannst du die Ligen sortieren, indem du sie mit der Maus an ' +
            'die entsprechende Position ziehst.</p><br/>';
            sort_cont.appendChild(cont);
            
            for(i = 0; i < divs.length; i++) {
                id = divs[i].id + '-dd';
                
                // Clean up any existing Drag instances
                if(myDTDrags[id]) {
                     myDTDrags[id].unreg();
                     delete myDTDrags[id];
                }
                div = document.createElement('div');
                div.id = id;
                div.className = "dd-relay";
                div.innerHTML = divs[i].innerHTML;
                cont.appendChild(div);
                // Create a Drag instance for each div
                myDTDrags[id] = new YAHOO.example.DDDivs(div);
            }
            
            save_but = document.createElement('button');
            save_but.type = "button";
            save_but.appendChild(document.createTextNode(' Speichern '));
            save_but.className = 'button_red';
            save_but.style.border = 'none';

            sort_cont.appendChild(save_but);
            Event.addListener(save_but, 'click', function() {
                var divs = Dom.getElementsByClassName('dd-relay', 'div', 'fav-relays-sorting'),
                    str = '';
                var callback = {
                    success: function(o) {
                        //o.responseText;
                        YAHOO.Daiwai.community.FavRelays.getByUser(user_id, div_id);
                    },
                    failure: function(o) {
                           document.getElementById(div_id).innerHTML = 'failed';
                    }
                };
                
                var postData = 'src=xhr';
                
                for(i = 0; i < divs.length; i++) {
                    var relay_id = divs[i].id.replace('rl_', '').replace('-dd', '');
                    str +=  relay_id + "\n";
                    postData += '&relays[' + relay_id + ']=' + i;
                }
                
                var url = '/community/profile-' + user_id + '-save_relay_order.html';
                var request = YAHOO.util.Connect.asyncRequest('POST', url, callback, postData);	
            });
            
            sort_cont.appendChild(document.createTextNode(' | '));
            
            cancel_but = document.createElement('button');
            cancel_but.type = "button";
            cancel_but.appendChild(document.createTextNode(' Abbrechen '));
            cancel_but.style.border = '1px solid #ccc';
            cancel_but.style.padding = '3px 5px 3px 5px';
            sort_cont.appendChild(cancel_but);
            Event.addListener(cancel_but, 'click', function() {
                sort_cont = Dom.get('fav-relays-sorting');
                sort_cont.innerHTML = '';
                Dom.setStyle(Dom.get('fav-relays'), 'display', 'block');
            });
        }
        
        initDd();
    }
};


