function controlGroup(obj,id,services,name){
 servicesArr = services.split(",");

	if(obj.checked){
		for(i = 0 ; i < servicesArr.length ; i++){
				 add(servicesObject[servicesArr[i]]);
		}
		var element = document.createElement("PopInElement");
	    element.setAttribute("command", "add-service-group");      
	    document.documentElement.appendChild(element);
	    var evt = document.createEvent("Events");
		element.setAttribute("group.id", id);
		element.setAttribute("group.name", name);
		element.setAttribute("group.services", "["+services+"]");
		evt.initEvent("PopInServiceCommand", true, false);
	    element.dispatchEvent(evt); 
		location.reload(true);
	}else{
		for(i = 0 ; i < servicesArr.length ; i++){
				 remove(servicesObject[servicesArr[i]]);
			}
		var element = document.createElement("PopInElement");
	    element.setAttribute("command", "remove-service-group");      
	    document.documentElement.appendChild(element);
	    var evt = document.createEvent("Events");
		element.setAttribute("group.id", id);
		evt.initEvent("PopInServiceCommand", true, false);
	    element.dispatchEvent(evt); 
		
		location.reload(true);
	}
}

function setGroupDefault(group,t){
var temp = group.services[0];
group.services[0] = group.services[t];
group.services[t] = temp;



 var element = document.createElement("PopInElement");
    element.setAttribute("command", "edit-service-group");      
    document.documentElement.appendChild(element);
    var evt = document.createEvent("Events");
	element.setAttribute("group.id", group.id);
    element.setAttribute("group.services","["+group.services.toString()+"]")
    evt.initEvent("PopInServiceCommand", true, false);
    element.dispatchEvent(evt); 

location.reload(true);

}


function save(){
 if ("createEvent" in document) {
    var element = document.createElement("PopInElement");
    element.setAttribute("command", "set-service-order");
    var data = "";
    $('#services li').each( function() {
      data += (data.length == 0 ? "" : ",") + "'"+this.id+"'";
    });
    element.setAttribute("data", "[" + data + "]");    
    document.documentElement.appendChild(element);
    var evt = document.createEvent("Events");
    evt.initEvent("PopInServiceCommand", true, false);
    element.dispatchEvent(evt);  
	
 
  }else{
	var data = "";
	$('#services li').each( function() {
      data += (data.length == 0 ? "" : ",") + this.id;
    });

	data = "[" + data + "]";
	eval("var order=" + data);
	 for (var i=0; i < order.length; i++){
    	var service = ieGetService(order[i]);
		//alert(service.displayOrder);
    	service.displayOrder = i;  
 	 } 
 	saveIE();
  }
}

function ieGetService(id){
 var services = Pconfig.popInConfig.service;
  for (i in services){
    var service = services[i];
    if (service.serviceId == id)
    {
      return service;
    }
  }
}

function saveIE(){
    var str = "";
	try
	{
	//alert(Pconfig.popInConfig);
		str = JSON.stringify({"popInConfig": Pconfig.popInConfig});
		var obj = new ActiveXObject("PopIn.PopInButton");
		obj.load(2);
		obj.save(str);
		//alert(str);
		//obj.save2("C:€tt.txt","1",str);
	  location.reload(true);
	}
	catch(e)
	{
		alert("SAVE FAILED!!!");
	}

	if(popIn){
		//alert('has popIn');
	}
	
}

function remove(obj) {
 if ("createEvent" in document) {
    var element = document.createElement("PopInElement");
    element.setAttribute("command", "remove-service");
    element.setAttribute("service.id", obj.serviceId);        
    document.documentElement.appendChild(element);
    var evt = document.createEvent("Events");
    evt.initEvent("PopInServiceCommand", true, false);
    element.dispatchEvent(evt); 
  }else{
    var services = Pconfig.popInConfig.service;
  		for(var i = 0; i < services.length; i++)
  		{
    		if (services[i].serviceId == obj.serviceId)
  			  {
    			  services.splice(i,1);
    			 // return;
   			 }
 		 } 
	saveIE();
  }
}

function add(obj){
 if ("createEvent" in document) {
    var element = document.createElement("PopInElement");
    element.setAttribute("command", "add-service");
    element.setAttribute("service.id", obj.serviceId);    
    element.setAttribute("service.name", obj.serviceName);    
    element.setAttribute("service.url", obj.serviceUrl);
    element.setAttribute("service.icon", obj.serviceIcon); 
	element.setAttribute("service.oriurl", obj.serviceOriUrl);
	element.setAttribute("option.name", obj.optionName);
	element.setAttribute("option.data", obj.optionData);
	element.setAttribute("service.enabled", true);
	element.setAttribute("service.isSearch", obj.isSearch);
	element.setAttribute("isDIY", obj.isDIY);
	element.setAttribute("hasPara", obj.hasPara);
	element.setAttribute("display.order", obj.displayOrder);
	element.setAttribute("selectMode.type", obj.inputModes.selectMode.type);
	element.setAttribute("selectMode.width", obj.inputModes.selectMode.width);
	element.setAttribute("selectMode.height", obj.inputModes.selectMode.height);
	element.setAttribute("selectMode.isDraggable", obj.inputModes.selectMode.isDraggable);
	element.setAttribute("selectMode.isResizable", obj.inputModes.selectMode.isResizable);
	element.setAttribute("selectMode.isPopin", obj.inputModes.selectMode.isPopin);
	element.setAttribute("shortcutMode.screenx", obj.inputModes.shortcutMode.screenx);
	element.setAttribute("shortcutMode.screeny", obj.inputModes.shortcutMode.screeny);   
	element.setAttribute("shortcutMode.width", obj.inputModes.shortcutMode.width);
	element.setAttribute("shortcutMode.height", obj.inputModes.shortcutMode.height); 
    document.documentElement.appendChild(element);
    var evt = document.createEvent("Events");
    evt.initEvent("PopInServiceCommand", true, false);
    element.dispatchEvent(evt); 
  }else{
	
	var newService = { 
    "serviceId" : obj.serviceId,
    "serviceName" : obj.serviceName,
    "serviceIcon" : obj.serviceIcon,
    "serviceUrl" : obj.serviceUrl,
    "serviceOriUrl" : obj.serviceOriUrl,
    "displayOrder" : Number(obj.displayOrder),
    optionName : obj.optionName,
    optionData : obj.optionData,
		"isDIY" : obj.isDIY,
		"hasPara" : obj.hasPara,
		"service.isSearch": obj.isSearch,
		enabled : true,
    inputModes : {
      selectMode:{
        type : obj.inputModes.selectMode.type,
        width : Number(obj.inputModes.selectMode.width),
        height : Number(obj.inputModes.selectMode.height),
        isDraggable : obj.inputModes.selectMode.isDraggable,
        isResizable : obj.inputModes.selectMode.isResizable,
        isPopin : obj.inputModes.selectMode.isPopin
      },
      shortcutMode:{
        screenx : Number(obj.inputModes.shortcutMode.screenx),
        screeny : Number(obj.inputModes.shortcutMode.screeny),
        width : Number(obj.inputModes.shortcutMode.width),
        height : Number(obj.inputModes.shortcutMode.height)        
      }
    }    
  };  	
	//alert(obj.serviceId);
	var services = Pconfig.popInConfig.service;
 	 for (i in services){
  		  var service = services[i];
   			 if (service.serviceId == obj.serviceId)
   			 {
   				// alert(1);// return service;
    		}
  	 	}

	Pconfig.popInConfig.service.push(newService);
	 saveIE();
}
}

var menuObject = new Object();

function setHotkey(mode){
	if ("createEvent" in document) {
    var element = document.createElement("PopInElement");
    element.setAttribute("command", "set-hotkey-mode");      
    document.documentElement.appendChild(element);
    var evt = document.createEvent("Events");
	element.setAttribute("mode", mode);
    evt.initEvent("PopInServiceCommand", true, false);
    element.dispatchEvent(evt); 
	hotkeyHelper(mode);  
  }else{
    //alert("Not implemented");
   Pconfig.popInConfig.hotKey = mode;
   saveIE();
  }
}

var DiyServices = new Array();

function loadMenu(){
  if ("createEvent" in document) {
    var element = document.createElement("PopInElement");
    element.setAttribute("command", "get-service-list");      
    document.documentElement.appendChild(element);
    var evt = document.createEvent("Events");
    evt.initEvent("PopInServiceCommand", true, false);
    element.dispatchEvent(evt);   
    eval("var services="+element.getAttribute("result"));
    var list = document.createElement("ul");
	  list.id = "menuservices";
    
	
    for (i in services)
    {
	  menuObject[services[i].id] = services[i].name;
      var li = document.createElement("li");
      li.id = services[i].id;
      li.innerHTML = services[i].name;
      list.appendChild(li);
			
    }      
    $('#services').append(list);
    
	var option={
		stop: function(){
			save();
		}
	}
    $(list).sortable(option);
	
	
  }else{
	
    var services = Pconfig.popInConfig.service;
	

	 var list = document.createElement("ul");
	 list.id = "menuservices";
    
 services.sort(function(A, B) {
    var a = A.displayOrder;
    var b = B.displayOrder;
    return (a > b) ? 1 : -1;
  });  	

    for (i in services)
    {
	 
	  menuObject[services[i].serviceId] = services[i].serviceName;
      var li = document.createElement("li");
      li.id = services[i].serviceId;
      li.innerHTML = services[i].serviceName;
      list.appendChild(li);
		
			if(services[i].isDIY == true){
				DiyServices.push(services[i]);
			}
    }      
     
    $('#services').append(list);
    
	var option={
		stop: function(){
			save();
		}
	}
    $(list).sortable(option);
  
  }
  
}
var Pconfig;

function loadIE(){

  try{
		var obj = new ActiveXObject("PopIn.PopInButton");
		
		var dataStr = obj.load(2);
		//alert(dataStr);
	  	//obj.callBHOProc(dataStr);
			
  }catch(e){
			//alert(e);
  }

  if(dataStr){
		try
		{
			//alert(encodeURI(dataStr));
			//dataStr = encodeURI(dataStr).replace('%EF%BB%BF','')
			//dataStr = decodeURI(dataStr);

			data = JSON.parse(dataStr);
			//alert(data);
		}
		catch(e)
		{
			//alert(e)
			alert("NO CONFIG DATA");
			return;
		}
		if ("popInConfig" in data)
			return data;
		else
			return;
	}	else {
		return
	}
}

function load(){


if ("createEvent" in document) {

 var element = document.createElement("PopInElement");
    element.setAttribute("command", "get-version");      
    document.documentElement.appendChild(element);
    var evt = document.createEvent("Events");
    evt.initEvent("PopInServiceCommand", true, false);
    element.dispatchEvent(evt);   
	var version = element.getAttribute("result");

	if(version == "1.0.4"){
   		loadMenu();
		loadAllService();
		loadGroups();
		checkHotkey();
	}else{
		location.href="setting103.html";
	}
}else{
	location.href="setting103.html";
}

var groups;
function loadGroups(){
	 var element = document.createElement("PopInElement");
    element.setAttribute("command", "get-service-groups");      
    document.documentElement.appendChild(element);
    var evt = document.createEvent("Events");
    evt.initEvent("PopInServiceCommand", true, false);
    element.dispatchEvent(evt);   
	
eval("groups="+element.getAttribute("result"));
	for(i = 0; i < groups.length; i++){

	 document.getElementById("gg"+groups[i].id).checked = true;

	 document.getElementById("s"+groups[i].services[0]).checked = true;
		for(t = 0; t < groups[i].services.length ; t++){
				$(document.getElementById('s'+groups[i].services[t])).bind("click",{group:groups[i],t:t},function(event){setGroupDefault(event.data.group,event.data.t)});
	}
	}
	
}





/*

}else{
	Pconfig = loadIE();
}
*/
	
}

function hotkeyHelper(mode){
	switch(mode){
		case "0":
			document.getElementById("hotkey"+0).checked = true;
			break;	
		case "1":
			document.getElementById("hotkey"+1).checked = true;
			break;
		case "2":
			document.getElementById("hotkey"+2).checked = true;
			break;
		default:
			break;	
	}
}
function checkHotkey(){
	if ("createEvent" in document) {
    var element = document.createElement("PopInElement");
    element.setAttribute("command", "get-hotkey-mode");      
    document.documentElement.appendChild(element);
    var evt = document.createEvent("Events");
    evt.initEvent("PopInServiceCommand", true, false);
    element.dispatchEvent(evt);   
  //  alert(element.getAttribute("mode"));
    var list = document.createElement("ul");
	list.id = "menuservices";
    
	hotkeyHelper(element.getAttribute("mode"));

  }else{
    hotkeyHelper(String(Pconfig.popInConfig.hotKey));
  }
	
}
//removeˇ˛—p
var servicesObject = new Object();

function loadAllService(){
	var list = document.createElement("ul");
	list.id = "allservices";
	$.getJSON("services_list.js?"+Math.random(),function(data){
		
		var services = data.service;
		for(i in services){
		  servicesObject[services[i].serviceId] = services[i];
  
if(document.getElementById('s'+services[i].serviceId).type == "checkbox"){
$(document.getElementById('s'+services[i].serviceId)).bind("click",function(){servicesToMenu(this)});
	}
 		if(menuObject['ss'+services[i].serviceId]){	
			document.getElementById('s'+services[i].serviceId).checked = true;
		  }
		}
	
	/*	
	for(t = 0; t < DiyServices.length;t++){
		 servicesObject[DiyServices[t].serviceId] = DiyServices[t];
		 var li = document.createElement("li");
			li.innerHTML = DiyServices[t].serviceName;
		  var enableCheckBox = document.createElement("input");
		  enableCheckBox.id = DiyServices[t].serviceId;
			enableCheckBox.isDIY = DiyServices[t].isDIY;
		  enableCheckBox.type = "checkbox";		 
			$(enableCheckBox).bind("click",function(){servicesToMenu(this)});
		  li.appendChild(enableCheckBox);
			list.appendChild(li);
			enableCheckBox.checked = true;
	}
*/
	
		$("#allServices").append(list);
	})


	
}



function servicesToMenu(obj){
	objid = (obj.id).substring(1,(obj.id).length);

	if(!obj.checked){
		var str = "#ss" + objid;
    	$(str).remove();
		remove(servicesObject[objid]);
		if(obj.isDIY == "true"){
			location.reload(true);
		}
	}else{
/*
	  var li = document.createElement("li");
      li.id = objid;
      li.innerHTML = servicesObject[objid].serviceName;
      $("#menuservices").append(li);
*/
	  add(servicesObject[objid]);
	  save();
	  location.reload(true);
	}
}

function getDiyService(){
	//alert(document.getElementById('serviceSrc').value);
	$(document.getElementById('serviceIframe')).css("display","block");
	document.getElementById('serviceIframe').src = document.getElementById('serviceSrc').value;
	
}

$(document).ready(function(){
		var diyContainer = document.getElementById('serviceIframe');
    $("#diyDiv").resizable({
			start: function(){
				$(diyContainer).css("display","none");
			},
			stop: function(){
				$(diyContainer).css("display","block");
			}
		});
});
	
function makeNewDiyService(){
		var diyContainer = document.getElementById('serviceIframe');
		var obj = { 
    "serviceId" : 10000+DiyServices.length+10,
    "serviceName" : document.getElementById('diyServiceName').value,
    "serviceIcon" : "",
    "serviceUrl" : document.getElementById('serviceSrc').value,
    "serviceOriUrl" : document.getElementById('serviceSrc').value,
    "displayOrder" : 10000+DiyServices.length+10,
		"isSearch": true,
    optionName : "",
    optionData : "",
		"isDIY" : true,
		hasPara : $("input[@name='diyType']:checked").val(),
		enabled : true,
    inputModes : {
      selectMode:{
        type : "popInWin",
        width : $(diyContainer).width(),
        height : $(diyContainer).height(),
        isDraggable : true,
        isResizable : true,
        isPopin : true
      },
      shortcutMode:{
        screenx : 10,
        screeny : 10,
        width : $(diyContainer).width(),
        height : $(diyContainer).height()        
      }
    }    
  };  
	add(obj);
	location.reload(true);
}
