﻿// JScript File for JE II Plugins

function Plugin()
{
    this.ID;
    this.AName = "";
    this.EName = "";
    this.JS_File = "";
    this.Visibility;
    this.NeedLogin;
}

// Control Server Side ID
var srvControlID = "plugin_";
// Plugin Menu Items which will viewed in the application
var pluginMenuItems = new Array();
// Plugin controls
var pluginControls = new Array(); 
// Plugin controls Initiation Javascript
var pluginControlJS = new Array(); 
// Plugin controls array for show or not
var pluginsShow = new Array();
// Plugin controls array for if it requirs login
var pluginsNeedLogin = new Array(); 
// Plugin Folder
var pluginFolder = "Controls\\";
var MenuItemTitle = new Array();
////////////// Plugin Definitions ///////////////////////

pluginMenuItems[0] ='مفتاح الخريطة';
pluginControlJS[0] = "Plugin_Legend.js";
pluginsShow[0] = true;
pluginsNeedLogin[0] = false;
MenuItemTitle[0]='يمكنك التعرف على الخريطة أكثر من خلال الإطلاع على مفتاح الخريطة حيث يوضح علامة كل خدمة من الخدمات العامة الموجودة على الخريطة ويحتوي مفتاح الخريطة أيضا على توضيح للمخطط المحلي والحفريات.';
//
pluginMenuItems[1] =  'أقرب خدمات';
pluginControlJS[1] = "Plugin_NS.js";
pluginsShow[1] = true;
pluginsNeedLogin[1] = false;
MenuItemTitle[1]='يمكنك تحديد موقع ومعرفة الخدمات المتوفرة بالقرب من الموقع وفي نطاق معين تقوم بتحديده.';
//
pluginMenuItems[2] = 'استعلام عن موقع';
pluginControlJS[2] = "Plugin_QueryPoint.js";
pluginsShow[2] = true;
pluginsNeedLogin[2] = false;
MenuItemTitle[2]='تمكنك خدمة الاستعلام عن موقع من معرفة معلومات عن موقع تقوم بتحديده على الخريطة. فيمكنك معرفة اسم الحي والحي الفرعي ونوع قطعة الأرض وبعض الخدمات القريبة من الموقع.';
//
pluginMenuItems[3] = 'بلاغات';
pluginControlJS[3] = 'Plugin_Geo940.js';
pluginsShow[3] = true;
pluginsNeedLogin[3] = false;
MenuItemTitle[3]='عزيزى المواطن نحن نقدر مساهمتك فى ابلاغنا عن المشاكل فى مدينة جدة و سيتم التعامل مع بلاغك بأقصى سرعة ممكنة';
//
pluginMenuItems[4] = 'جمع البيانات';
pluginControlJS[4] = 'Plugin_DC.js';
pluginsShow[4] = false;
pluginsNeedLogin[4] = true;
MenuItemTitle[4]='Plugin_DC';
//
pluginMenuItems[5] = 'بحث عن عنوان';
pluginControlJS[5] = 'Plugin_GeoCoding.js';
pluginsShow[5] = true;
pluginsNeedLogin[5] = false;
MenuItemTitle[5]='تمكنك هذه الخدمة من البحث عن أي منزل فى جدة عن طريق ادخال العنوان الخاص به.';
//
pluginMenuItems[6] = 'عرض KML';
pluginControlJS[6] = 'Plugin_KML.js';
pluginsShow[6] = true;
pluginsNeedLogin[6] = false;
MenuItemTitle[6]='تمكنك هذه الخاصية من استعراض ملفات من نوع KML والتى يتم استعراضها على برنامج Google Earth';
//
//pluginMenuItems[6] = 'أبراج الاتصالات اللاسلكية';
////pluginControls[6] = 'CellTowers.ascx';
//pluginControlJS[6] = 'Plugin_CellTowers.js';
//
pluginMenuItems[7] = 'تسجيل دخول';
pluginControlJS[7] = 'Plugin_Login.js';
pluginsShow[7] = false;
pluginsNeedLogin[7] = false;
MenuItemTitle[7]='';
//
pluginMenuItems[8] = 'اضافة مشاركة';
pluginControlJS[8] = 'Plugin_Disc.js';
pluginsShow[8] = false;
pluginsNeedLogin[8] = false;
MenuItemTitle[8]='Plugin_Disc';
//
pluginMenuItems[9] = 'استعلام عن حفريات';
pluginControlJS[9] = 'Plugin_WMS_eDig.js';
pluginsShow[9] = true;
pluginsNeedLogin[9] = false;
MenuItemTitle[9]='يمكن عرض الحفريات القائمة في محافظة جدة والاستفسار عن أي حفرية لمعرفة معلومات مثل اسم المقاول وتاريخ البدء في الحفرية.';
//
pluginMenuItems[10] = 'أقصر مسار';
pluginControlJS[10] = 'Plugin_ShortestPath.js';
pluginsShow[10] = true;
pluginsNeedLogin[10] = false;
MenuItemTitle[10]='يمكنك معرفة أقصر طريق بين موقعين ومسافة الطريق واتجاهات المسار المتبع.';
//
pluginMenuItems[11] = 'رفع النقاط';
pluginControlJS[11] = 'Plugin_UploadGPSPoints.js';
pluginsShow[11] = false;
pluginsNeedLogin[11] = true;
MenuItemTitle[11]='Plugin_UploadGPSPoints';
//
pluginMenuItems[12] = 'ملاحظات';
pluginControlJS[12] = 'Plugin_FeedBack.js';
pluginsShow[12] = true;
pluginsNeedLogin[12] = false;
MenuItemTitle[12]='يسعد مركز نظم المعلومات الجغرافية استقبال ملاحظاتكم و اقتراحاتكم بخصوص موقع مستكشف جدة الجغرافي';
//
pluginMenuItems[13] = 'طرق القياس';
pluginControlJS[13] = 'Plugin_Measurement.js';
pluginsShow[13] = true;
pluginsNeedLogin[13] = false;
MenuItemTitle[13]='تمكنك هذه الخاصية من قياس المسافة بين عدة نقاط، كذلك تمكنك من قياس مساحة اي شكل مغلق.';
//
pluginMenuItems[14] = 'انتقال لنقطة على الخريطة';
pluginControlJS[14] = 'Plugin_ZoomToXY.js';
pluginsShow[14] = true;
pluginsNeedLogin[14] = false;
MenuItemTitle[14]='من خلال هذه الخاصية يمكنك الذهاب مباشرة الي اي نقطة فى مدينة جدة عن طريق ادخال خط الطول و دائرة العرض.';
//
pluginMenuItems[15] = 'البحث السريع';
pluginControlJS[15] = 'Plugin_EasyNavByLoc.js';
pluginsShow[15] = true;
pluginsNeedLogin[15] = false;
MenuItemTitle[15]='تمكنك هذه الخدمة من البحث السريع من خلال الحدود الادارية و الشوارع الموجودة بمدينة جدة.';

//pluginMenuItems[16] = 'بحث عن عنوان';
////pluginControls[16] = 'ctrlGeo940.ascx';
//pluginControlJS[16] = 'Plugin_GeoCoding.js';
//pluginsShow[16] = true;
//pluginsNeedLogin[16] = false;
MenuItemTitle[99]='اضغط هنا لاستعراض المزيد من الخدمات التى يوفرها مستكشف جدة الجغرافي';
////////////// End of Plugin Definitions ///////////////////////
 
// Load the plugins in the Main form
function LoadPluginMenuItems(divMenuContID)
{

    var divCont = document.getElementById(divMenuContID);
    divCont.innerHTML="";
    
    var loop = 0;
    var newMenuItem ;
    var newMenuItemID;
    var ul = document.createElement('ul');
    var li;
    var span;
    var menuSeperator = " | ";
    for(loop = 0 ; loop < pluginMenuItems.length ; loop++)
    {
        if(!pluginsShow[loop])
            continue;
            
        // Create a new Link to the menu
        li = document.createElement('li');
        newMenuItem = document.createElement('a');
        
        newMenuItemID = "menuItem" + loop;
        //newMenuItem.setAttribute('id',newMenuItemID);
        newMenuItem.setAttribute('href',"javascript:;");
       
        //newMenuItem.setAttribute('className','link')
        //newMenuItem.setAttribute('class','link');
        span = document.createElement('span');
        span.innerHTML = pluginMenuItems[loop] ;
        span.setAttribute('id',newMenuItemID);
//        span.setAttribute('title',MenuItemTitle[loop]);
//        span.onclick = ActivatePlugin;
        
        XBrowserAddHandler(span, 'click', ActivatePlugin);
        
        newMenuItem.appendChild(span);
        li.appendChild(newMenuItem);
        ul.appendChild(li); 
    }
}
    
    // Load the plugins in the Main form
function LoadPluginMenuItems_update(divMenuContID)
{
    var divCont = document.getElementById(divMenuContID);
    divCont.innerHTML="";
    
    var loop = 0;
    var newMenuItem ;
    var newMenuItemID;
    var ul = document.createElement('ul');
    var li;
    var span;
    var menuSeperator = " | ";
    var mainMenuCount = 6;//pluginMenuItems.length
    for(loop = 0 ; loop <  mainMenuCount ; loop++)
    {
        if(!pluginsShow[loop])
            continue;
            
        // Create a new Link to the menu
        li = document.createElement('li');
        newMenuItem = document.createElement('a');
        
        newMenuItemID = "menuItem" + loop;
       
        //newMenuItem.setAttribute('className','link')
        //newMenuItem.setAttribute('class','link');
        span = document.createElement('span');
        span.innerHTML = pluginMenuItems[loop] ;
        span.setAttribute('id',newMenuItemID);

        XBrowserAddHandler(span, 'click', ActivatePlugin);
        XBrowserAddHandler(newMenuItem, 'mouseover', fillDivTip);
        XBrowserAddHandler(newMenuItem, 'mouseover', tip);
        XBrowserAddHandler(newMenuItem, 'mouseout', untip);

        
        newMenuItem.appendChild(span);
        li.appendChild(newMenuItem);
        ul.appendChild(li); 
    }
        li = document.createElement('li');
        newMenuItem = document.createElement('a');
        
        newMenuItemID = "menuItem" + "99";
        newMenuItem.setAttribute('id',newMenuItemID);

        span = document.createElement('span');
        span.innerHTML = "المزيد" + " >>";
        span.setAttribute('id',"divMoreTTT");
        XBrowserAddHandler(newMenuItem, 'mouseover', fillDivTip);
        XBrowserAddHandler(newMenuItem, 'mouseover', tip);
        XBrowserAddHandler(newMenuItem, 'mouseout', untip);

//        span.onclick = ActivatePlugin;
        
       // XBrowserAddHandler(span, 'click', ActivatePlugin);
        
        newMenuItem.appendChild(span);
        li.appendChild(newMenuItem);
        ul.appendChild(li); 
    
    divCont.appendChild(ul);
    
    divCont = document.getElementById("divMoreTabs_Childs");
    divCont.innerHTML="";
    
    for(loop = mainMenuCount ; loop <  pluginMenuItems.length ; loop++)
    {
        if(!pluginsShow[loop])
            continue;
            
        newMenuItem = document.createElement('a');
        newMenuItemID = "menuItem" + loop;
       
        span = document.createElement('span');
        span.innerHTML = pluginMenuItems[loop] ;
        newMenuItem.setAttribute('id',newMenuItemID);
        span.setAttribute('id',newMenuItemID);

        XBrowserAddHandler(newMenuItem, 'mouseover', fillDivTip);
        XBrowserAddHandler(newMenuItem, 'mouseover', tip);
        XBrowserAddHandler(newMenuItem, 'mouseout', untip);
        XBrowserAddHandler(newMenuItem, 'click', ActivatePlugin);
        XBrowserAddHandler(newMenuItem, 'click', ActivatePlugin);
        
        newMenuItem.appendChild(span);        
        divCont.appendChild(newMenuItem);
    }
    
    // Add menu item to the menu container
        
        at_attach("divMoreTTT", "divMoreTabs_Childs", "click", "y", "pointer");
        
//        $("#menuItem1" , "#divMoreTabs_Childs").hover(
//                                function()  {
//                                                $("#divTip").animate({height:"200px",opacity: 0.8}, "slow");
//                                            },
//                                function()  {
//                                                $("#divTip").animate({height:"200px",opacity: 0}, "slow");
//                                            });
}

// Attach event according to browser
function XBrowserAddHandler(target,eventName,handlerName)
{
    if ( target.addEventListener )
      target.addEventListener(eventName, handlerName, false);
    else if ( target.attachEvent )
      target.attachEvent("on" + eventName, handlerName);
    else
      target["on" + eventName] = handlerName;
}

// flag for destructor
var firstLoad = true;
function ActivatePlugin(e)
{
    ShowHideLoading(true);
    TogglePanelDock(true);
    //
//    var itemID = "";
//    var evnt = e; // Firefox
//    if(evnt == null)
//    {
//        evnt = event;  // IE
//        itemID = e.srcElement.id;
//    }
//    else
//        itemID = e.target.id;

    if(e.srcElement)
        itemID = e.srcElement.id;
    else
        itemID = e.target.id;
        
    var itemNo = parseInt(itemID.replace("menuItem",""));
    
    if(!firstLoad)
    try
    {
        PluginDestructor();
    }
    catch(e){}
    else
        firstLoad = false;
  
    LoadInitialJS(itemNo);
}


function fillDivTip(e)
{
    var divTip = document.getElementById("divTip");
    iHtml = "<h5>ملاحظــــات</h5><hr />";
    
    if(e.srcElement)
        itemID = e.srcElement.id;
    else
        itemID = e.target.id;
        
        if(itemID == 'divMoreTTT')
            itemID = 'menuItem99';
        
    var itemNo = parseInt(itemID.replace("menuItem",""));
    var divTip = document.getElementById("divTip");
    
    if(isNaN(itemNo))
    {
        return ;
    }   
    divTip.innerHTML = iHtml + MenuItemTitle[itemNo];
}
var isactive =false;
function tip()
{
    //$("#divTip").animate({height:"200px",opacity: 0.8}, "slow");
    $("#divTip").show();
}

function untip()
{   
    $("#divTip").hide();
    //$("#divTip").animate({height:"0px",opacity: 0.0}, "slow");
}

function ShowPlugin(id) // id: menu Item ID
{    
    var itemNo = parseInt(id);
//    var selectedControl = pluginFolder + pluginControls[itemNo];
//    CallServer(selectedControl,"LoadControl");
    
    LoadInitialJS(itemNo);
}


function pausecomp(millis) 
{
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); } 
    while(curDate-date < millis);
} 

function LoadInitialJS(itemNo)
{   
    if(pluginControlJS[itemNo] != null)
    {
        var JS_Folder = "JS\\";
        var jsPath = JS_Folder + pluginControlJS[itemNo];
        if(BrowserDetect.version == 6)
        {
           CallServer(jsPath,"LoadJS") ;
        }
        else
        {
            var fileref = document.createElement('script');
            fileref.setAttribute("type","text/javascript");
            fileref.setAttribute("id","pluginScript");
            fileref.setAttribute("src", jsPath);

            document.body.appendChild(fileref);
        }
    }
}