﻿//----------------------------- Drag & Drop کدها و توابع مربوط به کشیدن و انداختن یا ---------
var savedTarget = null; //پنل در حال جابجایی را به همراه مشخصات آن نکهداری می نماید
var orgCursor = null; // نوع اشاره گر موس را قبل کشیدن پنل ها نگه می دارد 
var dragOK = false;   // وضعیت کشیدن و انداختن پنل ها را نگه می دارد.درست : کشیده و انداخته شده  -  غلط : هنوز کشیده نشده
var dragXoffset = 0;  //  
var dragYoffset = 0; //
//مختصات پنل مورد نظر را هنگام حرکت موس بر روی صفحه با مختصات موس یکی می کند 
function moveHandler(e) {
    if (e == null) { e = window.event; }
    if (e.button <= 1 && dragOK) {
        savedTarget.style.left = e.clientX - dragXoffset + 'px';
        savedTarget.style.top = e.clientY - dragYoffset + 'px';
        return false;
        
    }
}
// وضعیت جابجایی را به حالت عادی بر می گرداند
function cleanup(e) {
    //    hide_autocomplete();
    document.onmousemove = null;
    //    document.onmouseup = hide_autocomplete;
    savedTarget.style.cursor = orgCursor; //پس از رها کردن پنل مورد در حال جابجایی ،اشاره گر پنل را به قبل از جابجایی برمی گرداند
    dragOK = false;
}
//   هنگام فشار کلید چپ موس صدا زده شده و خصوصیات پنل مورد جابجایی را ذخیره کرده تا پس از جابجایی دوباره به آن نسبت داده شود و مقدار دهی اولیه جهت انجام عمل جابجایی انجام می شود
function dragHandler(e) {
    var htype = '-moz-grabbing';
    if (e == null) { e = window.event; htype = 'move'; }
    var target = e.target != null ? e.target : e.srcElement;
    if (target.className == "drag_panel") {
        orgCursor = target.parentNode.style.cursor;
        savedTarget = target.parentNode;
        target.parentNode.style.cursor = htype;
        dragOK = true;
        dragXoffset = e.clientX - parseInt(target.parentNode.style.left);
        dragYoffset = e.clientY - parseInt(target.parentNode.style.top);
        document.onmousemove = moveHandler;
        document.onmouseup = cleanup;
        return false;
    }
}
document.onmousedown = dragHandler;
//--------تغییر تصویر دکمه ها هنگام حرکت موس بر روی آنها -------------------------------
function mouse_over(btn) {
    ///	<summary>
    ///		 تغییر تصویر دکمه ها هنگام حرکت موس بر روی آنها
    ///	</summary>
    src = btn.src;
    btn.src = src.substring(0, src.lastIndexOf('.') - 1) + '2.png';
}
//-------- تغییر تصویر دکمه ها هنگام ترک اشاره گر موس از روی آنها -------------------------
function mouse_out(btn) {
    ///	<summary>
    ///		 تغییر تصویر دکمه ها هنگام ترک اشاره گر موس از روی آنها
    ///	</summary>
    src = btn.src;
    btn.src = src.substring(0, src.lastIndexOf('.') - 1) + '1.png';
}
//-------------------------- بستن پنجره های شناور مانند پنجره جستجو یا مسیریابی بر روی صفحه -------------------------
function ClosePanel(PanelId) {
    ///	<summary>
    ///		 بستن پنجره های شناور مانند پنجره جستجو یا مسیریابی بر روی صفحه
    ///	</summary>
    Set_Visible(PanelId, "hidden");
}
//----------------------------- ظاهر و پنهان کردن یک عنصر اچ تی ام ال ------------------------------------------
function Set_Visible(ControlId, PVisiblity) {
    ///	<summary>
    ///		 ظاهر و پنهان کردن یک عنصر اچ تی ام ال
    ///	</summary>
    document.getElementById(ControlId).style.visibility = PVisiblity; 
}
//-----------------نحوه قرار گیری یک عنصر اچ تی ام ال روی صفحه را مشخص می کند ---------
function Set_Position(ControlId, PPosition) {
    ///	<summary>
    ///		 نحوه قرار گیری یک عنصر اچ تی ام ال روی صفحه را مشخص می کند
    ///	</summary>
    document.getElementById(ControlId).style.position = PPosition;
}
//----------------------کوچکنمایی و بزرگنمایی پنل های موجود در صفحه----------
var arrRPanel = new Array("Login_", "OverViewMap_", "Legend_", "SearchResult_"); //لیست ماژول های موجود د پنل سمت راست
function MinMaxPanels(PanelId, element, SetPosition) {
    ///	<summary>
    ///		 کوچکنمایی و بزرگنمایی پنل های موجود در صفحه
    ///	</summary>
    //for(i=0;
    for (i = 0; i < 4; i++) {
    try{
        Set_Position(arrRPanel[i], 'absolute');
        Set_Visible(arrRPanel[i], 'hidden');
        document.getElementById(arrRPanel[i]).src = "image/images/hmax2.png";
        }
        catch(err)
        {
        }
    }
    var src = element.src;
    if (document.getElementById(PanelId).style.visibility != 'hidden') {
        if (SetPosition != false)
            Set_Position(PanelId, 'absolute');
        Set_Visible(PanelId, 'hidden');
        element.src = src.substring(0, src.lastIndexOf('/') + 1) + 'hmax2.png';
    }
    else {
        if (SetPosition != false)
            Set_Position(PanelId, '');
        Set_Visible(PanelId, '');
        element.src = src.substring(0, src.lastIndexOf('/') + 1) + 'hmin2.png';
    }
    
    //src = "image/images/hmax2.png";
    //if(element.src
//    src = element.src;
//    alert(src);
//    if (document.getElementById(PanelId).style.visibility != 'hidden') {
//        if (SetPosition != false)
//            Set_Position(PanelId, 'absolute');
//        Set_Visible(PanelId, 'hidden');
//        element.src = "image/images/hmax2.png";
//    }
//    else {
//        if (SetPosition != false)
//            Set_Position(PanelId, '');
//        Set_Visible(PanelId, '');
//        element.src = "image/images/hmin2.png";
//    }

}
//-------- نوع مرورگر برای کار با درخواست آژاکسی را بر می گرداند  ---------
var xmlHttp; //نوع مرورگر در حال استفاده برای درخواست آژاکسی
function GetXmlHttpObject() {
    ///	<summary>
    ///		 نوع مرورگر برای کار با درخواست آژاکسی را بر می گرداند
    ///	</summary>
    var xmlHttp = null;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    }
    catch (e) {
        //Internet Explorer
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}
//-------------------------- آدرسی را دریافت کرده و کد می کند تا برای درخواست آژاکسی آدرس کش نشود -----------------------------
function noCache(uri) { return uri.concat(/\?/.test(uri) ? "&" : "?", "noCache=", (new Date).getTime(), ".", Math.random() * 1234567); };
//------ فراخوانی به صورت آژاکس که آدرس صفحه سمت سرور و پیغام در صورت مشکل در فراخوانی را دریافت می کند و نتیجه را بر می گرداند
function ajax(url, FaildMsg, strFun) {
    ///	<summary>
    ///		 فراخوانی به صورت آژاکس که آدرس صفحه سمت سرور و پیغام در صورت مشکل در فراخوانی را دریافت می کند و نتیجه را بر می گرداند
    ///	</summary>
    xmlHttp = GetXmlHttpObject();
    xmlHttp.onreadystatechange = function FuncOnSuccess() {
        if ((xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")) {
            clearTimeout(xmlHttpTimeout);
            var xmlHttpResult = xmlHttp.responseText;
            //Create the function call from function name and parameter.
            var funcCall = strFun + "('" + xmlHttpResult + "');";
            //Call the function
            
            var ret = eval(funcCall);
            
        }
    };
    
    xmlHttp.open("GET", noCache(encodeURI(url)), true);
    xmlHttp.setRequestHeader("charset", "utf-8");
    xmlHttp.send(null);
    xmlHttpTimeout = setTimeout("xmlHttp.abort();alert('"+FaildMsg+"');", 5000);
    
}

//------------ window.open() باز کردن پنجره های جدید به صورت -----------------
function OpenWindow(PageUrl,Style) {
    var styleStr = 'toolbar=no,location=no,directories=no,scrollbars=1,status=no,menubar=no,copyhistory=yes,width=450px,height=350px,left=30,top=35';
//    var styleStr = 'location=1,status=1,scrollbars=1, width=100,height=100';
    if (Style != null)
        styleStr = Style;
    return window.open(PageUrl, "msgWindow", styleStr);
}
//--------------------------پاک کردن یک تگ "اچ تی ام ال"----------------------------
function removeElement(ElementId) {
    var Element = document.getElementById(ElementId);
    Element.parentNode.removeChild(Element);
}
//-------------
function OpenInLinePage(url,title, width, height) {
    document.getElementById('InLinePage').style.width = width + "px";
    document.getElementById('ITitlebar').style.width = width + "px";
    document.getElementById('Ititle').innerHTML = title;
    document.getElementById('InLinePage_').style.width = width + "px";
    document.getElementById('InLinePage_').style.height = height + "px";
    document.getElementById('IframeInLinePage').width = width+ "px";
    document.getElementById('IframeInLinePage').height = height-10 + "px";
    document.getElementById('IframeInLinePage').src = url;
    Set_Visible('InLinePage', '');
}
