/** 
 * requires
 * YAHOO.util.Dom;
 * YAHOO.util.Event;
 * YAHOO.util.Anim;
 * YAHOO.util.Motion;
 * YAHOO.util.DD;
 * UFO flash insertion lib
*/
//shortcutting YAHOO libs
var $D = $D || YAHOO.util.Dom;
var $E = $E || YAHOO.util.Event;
var $A = $A || YAHOO.util.Anim;
var $M = $M || YAHOO.util.Motion;
var $DD = $DD || YAHOO.util.DD;
var $ = $D.get;

var DanBolig = DanBolig || {};

DanBolig.FlashMap = function() {
   var globalCount = 0;	
   var objUFO;       
   var datamanager_props = {
		id : "FlashMap.dataManager",
		dataMap : { "polyCoords" : [], "boundingBox" : [] },
		enforceStrict : false,
		doCache : true
	};
    var FO = { 
        movie: "/swf/flashmap_namespace2.swf", 
        width: "398", 
        height: "470",
        bgcolor: "#ffffff",
        majorversion: "8",
        wmode: "transparent", 
        build: "0",
        id: "index", 
        name: "index",
        ScaleMode: "noscale",
        AllowScriptAccess: "always", 
        swliveconnect: "true", 
        flashvars: "polyCoords="+DanBolig.FlashInit.polyCoords+"&bbox="+DanBolig.FlashInit.boundingBox,
        "allowScriptAccess": "allways"
    };
	return {
		init : function() {
		    var _this = DanBolig.FlashMap;
		    var polyCoordsHidden = $("m_polyCoordsHidden");
		    var boundaryBoxHidden = $("m_boundaryBoxHidden");
		    if(!!polyCoordsHidden && polyCoordsHidden.value && !!boundaryBoxHidden && boundaryBoxHidden.value){
		        FO.flashvars = "polyCoords="+polyCoordsHidden.value+"&bbox="+boundaryBoxHidden.value;
		    }
		    objUFO = UFO.create(FO, "FlashMap");
		    _this.polyCoords = [];
         	_this.dataManager = new Valtech.DataManager(datamanager_props);
         	_this.dataManager.onUpdate.subscribe(_this.send);
    	},
    	setPoint : function(points){
    	    var _this = DanBolig.FlashMap;
	        var oCrating 	=	document.getElementById( 'hiddenFields' );
	        var oInp 		=	document.createElement( 'input' );
	        var obj     =   {};
	        obj.text    =   globalCount.toString();
	        obj.value   =   points;
	        _this.polyCoords.push(obj);
	        globalCount += 1;
	        _this.renderfinal();
	    },
	    editstateAddPoints : function( amount, points, xmin, ymin, xmax, ymax ){
	        var _this = DanBolig.FlashMap;
	        var arrayPolycoors 	=	points.split(";");
	        for (var x = 0; x < (Number(amount)+1); x++ ){
		        _this.setPoint( arrayPolycoors[x] );
	        }
	        _this.setBoundary( xmin, ymin, xmax, ymax );
        },
        editPoint : function( points, item ){
            var _this = DanBolig.FlashMap;
	        var obj = _this.polyCoords.filter(
	            function(el, i, ar) {
                    if ( el.text == item ) {
                        return el;
                    }
                }
	        )[0];
	        obj.value = points;
	        _this.renderfinal();
        },
        resetPoint : function (){
	        var _this = DanBolig.FlashMap;
	        _this.polyCoords = [];
	        globalCount = 0;
	        document.getElementById( 'm_polyCoordsHidden' ).value = '';
	         var localdata = { "m_polyCoordsHidden" : [] }
			_this.dataManager.update("Internal", localdata );
        },
        renderfinal : function(){
            var _this = DanBolig.FlashMap; 
            var elm = document.getElementById( 'm_polyCoordsHidden' );
            if(!elm){
                alert("no elm");
                return false;
            }
            elm.value = '';
	        for(var i = 0, l = _this.polyCoords.length; i < l; i++){
	            elm.value += _this.polyCoords[i].value + ';';
	        }
	        var localdata = { "m_polyCoordsHidden" : _this["polyCoords"] };
			
			_this.dataManager.update("Internal", localdata );
			
        },
        setBoundary : function ( xmin, ymin, xmax, ymax ){
	        document.getElementById( 'm_boundaryBoxHidden' ).value = xmin + ',' + ymin+ ',' + xmax+ ',' + ymax;
        },
        send : function(type, args){
            if(args[0].provider && args[0].data && args[0].provider == "Internal" ){
				var _this = DanBolig.FlashMap;
				var dataIn = args[0].data["m_polyCoordsHidden"];
				var data = {};
				data["m_polyCoordsHidden"] = {};
				data["m_polyCoordsHidden"].text = "Du har valgt et omr&aring;de.";
				data["m_polyCoordsHidden"].value = dataIn.map( function (el, i, ar) { return el.value; } ).join(";");
				if(DanBolig.Global && DanBolig.Global.dataManager) {
				    DanBolig.Global.dataManager.update("DanBolig.FlashMap", data);
				}
				else {
				    alert("No Global DataManager!");
				}
			}
		},
		update : function(type, args){
            if(args[0].provider && args[0].provider != "Internal" && args[0].provider != "DanBolig.FlashMap" && args[0].data ){
				var _this = DanBolig.FlashMap;
				var dataIn = args[0].data["m_polyCoordsHidden"];
				if(dataIn){
				
				}
			}
		}
    };
}();

function danboligtest1(){
    //alert("danboligtest1");
}
function danboligtest2(){
    //alert("danboligtest2");
}