
// AdJug namespace created.
if (typeof(eval("window.AdJug")) == "undefined")
    window.AdJug = new Object();

var _PBI = new Image();
var _CBI = new Image();// preload image
var _EOS = "[@AJ_ERR=1]";//Error Object Selector
var _DOS = "input[@dc='true']";//Date Object Selector
function WSCB(msg, method)
{
    this.Msg = msg;
    this.Callback = method;
}

function ErrorHandler(){this.ErrorMsg = [];this.WarningMsg = []}
var _EH = new ErrorHandler();
var _TOP = "";

function AdJugWebCall() {
    this.Status = 0; 
    this.SPURL = _AdJugSiteURL + _AdJugSID;this.ST = "POST";
    this.WP = "";
    this.WMN = "";
    this.PARAMS = "";
    this.ICV = false;
    this.Err = new WSCB("Error occured: No error description has been set!!!", null);
    this.Succ = new WSCB("", null);
    this.Comp = new WSCB("", null);
    this.BS = new WSCB("", null);
    this.CBD = null;
    this.isAsync = false;
    this.DT = "json";
}

AdJugWebCall.prototype.callWP = function(){return Call(this, this.SPURL + this.WP);}
AdJugWebCall.prototype.callWS = function(){return Call(this, this.SPURL + this.WP + "/" + this.WMN);}

function Call(_caller, _URL)
{
    var cType = "	text/html; charset=utf-8"; 
    if(_caller.DT == "json")
        cType =  "application/json; charset=utf-8"; 
    var _IsSubmit=true;
    $.ajax({
    type: _caller.ST,
    url: _URL,
    data: _caller.PARAMS,
    async: _caller.isAsync,
    dataType: _caller.DT,    
    contentType: cType,
    success:
        function(_jsonObj){
            _caller.CBD = _jsonObj;
            if(_caller.DT != "json")
                _caller.CBD = _jsonObj;
            else
            {
                _caller.CBD = _jsonObj.Result;
                _caller.Status = _jsonObj.Status;//1=error ... status name should be changed to IsError.
                if(window.location.href.toLowerCase().indexOf("/sysadmin/") == -1){if(_jsonObj.Status == 1)(_jsonObj.Error.Message);}
                else
                {
                    if(_jsonObj.Status == 1)
                        ParseErrorObject(_jsonObj.Error);
                }
            }
            _caller.CallBack(_caller.Succ);
        },
    error:
        function(XMLHttpRequest, textStatus, errorThrown){
            if(window.location.href.toLowerCase().indexOf("/sysadmin/") == -1) alert(_caller.Err.Msg);
            else ParseErrorObject({Message:_caller.Err.Msg});_caller.CallBack(_caller.Err);_IsSubmit=false;
        },
    beforeSend: 
        function(xhr){
            if(_caller.DT == "json") xhr.setRequestHeader("Content-type", "application/json; charset=utf-8"); _caller.CallBack(_caller.BS);
        },
    complete: 
        function(XMLHttpRequest, textStatus, errorThrown){
            _caller.CallBack(_caller.Comp);
        }
    });
    if(!_caller.ICV) 
    _IsSubmit = false;
    return _IsSubmit;
}
AdJugWebCall.prototype.CallBack = function(WSCBO){
    if(WSCBO.Callback != null)
    {
        WSCBO.Callback(this.CBD);
    }
}
function CreateAWCObject(options)
{
    var _WSCall = new AdJugWebCall(); var param;
    for(param in options)
    {
        var _CV = options[param];
        param=param.toLowerCase();
        switch (param){
            case 'submittype' :if(typeof(_CV) == "string"){if(_CV == "post" || _CV == "get") _WSCall.ST=_CV;}break;
            case 'isasync' :if(typeof(_CV) == "boolean"){if(_CV == true || _CV == false) _WSCall.isAsync=_CV;}break;
            case 'webpage' :if(typeof(_CV) == "string"){if(_CV != "") _WSCall.WP=_CV;}break;
            case 'webmethodname':if(typeof(_CV) == "string"){if(_CV != "post") _WSCall.WMN=_CV;}break;
	        case 'param':if(typeof(_CV))_WSCall.PARAMS=_CV;break;
	        case 'iscausevalidation':if(typeof(_CV) == "boolean"){if(_CV == true || _CV == false) _WSCall.ICV=_CV;}break;
	        case 'datatype':if(typeof(_CV) == "string"){if(_CV == "json" || _CV == "script" || _CV == "html" || _CV == "text") _WSCall.DT=_CV;}break;
	        case 'errormessage':if(typeof(_CV) == "string")_WSCall.Err.Msg = _CV; break;
        }
    }
    return _WSCall;
}

function FindAndSetModalPopupLinks(){$("a.AJ_MP").attr("href", "#");$("a.AJ_MP, input.AJ_MP").unbind("click"); $("a.AJ_MP, input.AJ_MP").bind("click",function(){ShowMP(this);});}
function UpdateMPContents(_data, _parentDivID){$("#"+_parentDivID).find("div[@modalpopup='contents']").html(_data);}
function ReadAV(_Obj, _keyName, _dValue)
{
    var _kValue = $(_Obj).attr(_keyName);
    if(typeof(_kValue) == "undefined")
        return _dValue; 
    else 
        return _kValue;
}

function ParseMPA(_Obj)
{
    //var _AL = "LPF,TGMPWidth,TGMPHeight,TGMPDF,TGMPID,TGMPCCF,TGMPISPB,TGMPISCB,TGMPILL";
    if(ReadAV(_Obj,"LPF","") != "")_Obj = $("#"+ReadAV(_Obj,"LPF",""))[0];
    return {
        "MPH": ReadAV(_Obj,"TGMPHeight","500"), 
        "MPW":ReadAV(_Obj,"TGMPWidth","500"), 
        "MPPBS":ReadAV(_Obj,"TGMPISPB","true"), 
        "MPCBS":ReadAV(_Obj,"TGMPISCB","true"), 
        "MPDFN":ReadAV(_Obj,"TGMPDF",""), 
        "MPID":ReadAV(_Obj,"TGMPID","unknown1"), 
        "MPGID":ReadAV(_Obj,"LPF",""), 
        "MPCCF":ReadAV(_Obj,"TGMPCCF",""), 
        "ILL":ReadAV(_Obj,"TGMPILL","true") 
    };
}
function ShowMP(_Obj)
{
    if (typeof document.body.style.maxHeight == "undefined") 
    {//if IE 6
	    $("body","html").css({height: "100%", width: "100%"});
	    $("html").css("overflow","hidden");    
	    if (GetObject("TB_HideSelect") == null) 
		    $("body").append("<iframe id='TB_HideSelect'>");            
	}	
	
	if(GetObject("mpCommonBackground") == null) $("body").append("<div id='mpCommonBackground' class='mpOverlayBG'></div>");
	var _MPOWP = ParseMPA(_Obj);
	
	if($("div#" + _MPOWP.MPID + "").length == 0) $("body").append("<div id='" + _MPOWP.MPID + "' modalpopup='adjug' class='mpWindow'></div>");	    
	var _mpO = $("div#" + _MPOWP.MPID + "")[0];	
	if($(_mpO).find("div[@modalpopup='progressbar']").length == 0)
	{
	    var _html = "<div><table cellspacing='0' cellpadding='0' class='mpOuterTable'><tr><td class='mp_left_top'></td><td class='mp_middle_top'></td><td class='mp_right_top'></td></tr>";
	    _html += "<tr><td class='mp_left_border'></td><td class='mp_content'><div modalpopup='progressbar'  class='mpProgressBar'></div><div class='mpContents' modalpopup='contents'></div><div class='mpClose' modalpopup='close'></div>";
	    _html += "</td><td class='mp_right_border'></td></tr><tr><td class='mp_left_bottom'></td><td class='mp_middle_bottom'></td><td class='mp_right_bottom'></td></tr></table></div>";
	    $(_mpO).html(_html);$(_mpO).find("div[@modalpopup='progressbar']").html("<img src='" + _PBI.src + "'/>");
        $(_mpO).find("div[@modalpopup='close']").html("<input type='button' value='close' onclick='javascript:CloseMP(this);' src='" + _CBI.src + "'/>");
    }
    var _mpPBO = $(_mpO).find("div[@modalpopup='progressbar']");
    var _mpCLO = $(_mpO).find("div[@modalpopup='close']");
    var _mpCOO = $(_mpO).find("div[@modalpopup='contents']");
    var _MPD = "";

    _TOP = ReadAV(_Obj,"TGMPTOP","");
    
    if(_MPOWP.MPPBS == "true"){$(_mpPBO).css({display:"block"});ToCenter(_mpO, 120, 120, _TOP);$(_mpO).fadeIn('fast');}                
    if(_MPOWP.MPDFN != "") _MPD=eval(_MPOWP.MPDFN+"(_Obj)");//we can even pass parent object from here : _mpO
    else if(_MPOWP.MPCCF != "")
    {
        _MPD = $("div#"+_MPOWP.MPCCF+"").html();    
        _MPOWP.ILL = "false";
    }
    
    if(_MPOWP.MPPBS == "true" && _MPOWP.ILL == "false")
    {
        $(_mpO).fadeOut('fast', function(){$(_mpPBO).css({display:"none"});
        MakeVisibleMPC(_mpCOO, _mpO, _MPD, _mpCLO, _MPOWP)});
    }
    else if(_MPOWP.ILL == "false"){;MakeVisibleMPC(_mpCOO, _mpO, _MPD, _mpCLO, _MPOWP);}
	document.onkeydown = function(e, _Obj){if (e == null) {keycode = event.keyCode;} else {keycode = e.which;}if(keycode == 27){CloseAllMP();}};
    return false;
}
function LoadMPC(_Obj, _MPD){var _MPOWP = ParseMPA(_Obj);var _mpO = $("div#" + _MPOWP.MPID + "")[0];var _mpPBO = $(_mpO).find("div[@modalpopup='progressbar']");var _mpCLO = $(_mpO).find("div[@modalpopup='close']");var _mpCOO = $(_mpO).find("div[@modalpopup='contents']");if(_MPOWP.MPPBS == "true"){$(_mpO).fadeOut('fast', function(){$(_mpPBO).css({display:"none"});MakeVisibleMPC(_mpCOO, _mpO, _MPD, _mpCLO, _MPOWP)});}else MakeVisibleMPC(_mpCOO, _mpO, _MPD, _mpCLO, _MPOWP);}
function MakeVisibleMPC(_mpCOO, _mpO, _MPD, _mpCLO, _MPOWP){
    //$(_mpCOO).width(parseInt(_MPOWP.MPW));
    $(_mpCOO).height(parseInt(_MPOWP.MPH));
    $(_mpO).find("td.mp_content").width(parseInt(_MPOWP.MPW));
    $(_mpO).find("td.mp_content").height(parseInt(_MPOWP.MPH));
    ToCenter(_mpO, parseInt(_MPOWP.MPW), parseInt(_MPOWP.MPH),_TOP);
    $(_mpCOO).html(_MPD);$(_mpCOO).css({display:"block"});
    
    if(_MPOWP.MPCBS == "true"){$(_mpCLO).width(parseInt(_MPOWP.MPW));$(_mpCLO).height(parseInt(_MPOWP.MPH));$(_mpCLO).css({display:"block"});}$(_mpO).fadeIn('fast');}
function ToCenter(_Obj,_W,_H, _T){if(_Obj){ var _winSize = GetWinSize();_Obj.style.left =  (50-(((_W/2)/(_winSize[0]/100)))) + '%'; if ((typeof document.body.style.maxHeight == "undefined"))_Obj.style.top = "350px"; else _Obj.style.top = (50-(((_H/2)/(_winSize[1]/100)))) + '%';if (_T != "undefined" && _T != "") _Obj.style.top = _T + "px";}}
function CloseAllMP()
{
    $("div[@modalpopup='adjug']").fadeOut(400, function(){RemoveMPParentDiv(this);});return false;
}
function CloseMP(_Obj){return RemoveMPParentDiv($(_Obj).parents("div[@modalpopup='adjug']")[0]);}
function RemoveMPParentDiv(_Obj){$(_Obj).fadeOut(400, function(){$(_Obj).remove();$("div#mpCommonBackground").remove();$('#TB_HideSelect').trigger("unload").unbind().remove();if (typeof document.body.style.maxHeight == "undefined") {$("body","html").css({height: "auto", width: "auto"});$("html").css("overflow","");}});document.onkeydown = "";return false;}
function BindAllDateControls(){if ($(_DOS).datepicker == undefined) return;$(_DOS).width(70);$(_DOS).datepicker({changeYear: false, changeMonth: false, dateFormat: 'dd-M-yy', currentText: 'Now' , onSelect: function() {var _fnName = $(this).attr("FN"); if( typeof(_fnName) != "undefined" && (eval("typeof " +_fnName.split("(")[0]) == "function")) eval(_fnName);}});}
function UnBindDateControl(inputID){$.datepicker._destroyDatepicker(GetObject($("input[id$='" + inputID + "']").attr("id")));}

function AdJugValidation(){
    this.IDTV = "";
    this.IDLTV = [];
    this.isRequired = false;
    this.isSubmit = true;
}
    
AdJugValidation.prototype.validate = function(){
    this.isSubmit = true;
    if(this.isRequired) 
        if(!(CheckRFV(this.IDTV))) 
            this.isSubmit = false;
}
    
AdJugValidation.prototype.validateAll = function(){
    this.isSubmit = true;
    if(this.isRequired)
    {
        var i = 0;
        for(i = 0; i < this.IDLTV.length; i++)
            if(!(CheckRFV(this.IDLTV[i]))) this.isSubmit = false;
    }
}

AdJugValidation.prototype.InValidateAll = function(){
    var i = 0;
    
    for(i = 0;i < this.IDLTV.length; i++)
        $("label[@for='" + this.IDLTV[i] + "']").css("display","none");
}

function CheckRFV(_ID){
    if($("input#" + _ID + "").val() == "")
    {
        $("label[@for='" +  _ID + "']").css("display","block");
        return false;
    } 
    else
    {
        $("label[@for='" + _ID + "']").css("display","none");
        return true;
    }
}

function SetErrorObjectAttributes(){//write foreach syntax
    $(_EOS).css("display","none");$(_EOS).css("position","fixed");$(_EOS).attr("class","error_message_one");
}
    
function BindOnKeyDownEventToAcceptNumbersOnly()
{   //AcceptNumbersOnly
    $("input.AJ_ANO").unbind("keypress");
    $("input.AJ_ANO").bind("keypress", function(event){
        //need to write another fn for integer
        return CheckInputCharsForDouble(event, this, '');});    
    //AcceptDoublesOnly
    $("input.AJ_ADO").unbind("keypress");
    $("input.AJ_ADO").bind("keypress", function(event){return CheckInputCharsForDouble(event, this, '');});
}
function IsCheckBoxChecked(chkID){if(GetObject(chkID).checked) return true; else return false;}
function IsRadioButtonSelected(radID){if(GetObject(radID).checked)return true; else return false;}
function GetObject(_OID){return window.document.getElementById(_OID);}

//this is one is working fine, but jquery has its own properties which returns the same result
function GetWinSize() 
{
    var myWidth = 0, myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
    }
    return([myWidth,myHeight]);
}
   
// Returns the element with id elementId from the contents of the popup with id popupId.
// If the element is not found, it returns null.
function getPopUpElementById(popupId, elementId)
{
    try
    {
	    var popup = $("#" + popupId)[0];
	    var content = $(popup).find("div[@modalpopup='contents']")[0];
	    var element = null;
	    element = $(content).find("#" + elementId)[0];
	    return element;		
    }
    catch (e)
    {
        throw e;	
    }
}

function ParseErrorObject(_Object)
{
    PushErrorMessage(_Object.Message);
    if($("#divErorHandler").length == 0)
    {
        $("body").append("<div id='divErorHandler' class='ErorHandler' ><div>" +
        "<div class='divErrorPaging'><img style='cursor:pointer' onclick='javascript:HideErrorHandler();' src='" + _AdJugSiteURL + "/Images/hide_arrow.gif'/>" +        
        "<img style='cursor:pointer' onclick='javascript:PreviousError();' src='" + _AdJugSiteURL + "/Images/PG-PREV.gif'/>" + 
        "<label id='lblEHSummary'>1 of 1 error(s)</label>" +    
        "<img style='cursor:pointer' onclick='javascript:NextError();' src='" + _AdJugSiteURL + "/Images/PG-NEXT.gif'/>" +
        "</div><div class='divErrorContents'><label id='lblEHMsg'>" + PullErrorMessage(0) + "</label></div>" + 
        "</div></div>");
    }
    UpdateErrorHandlerSummary();
    $("#divErorHandler").slideDown('slow',function(){
    });
}
function UpdateErrorHandlerSummary()
{
    $("#lblEHSummary").text((GetErrorIndex($("#lblEHMsg").text(),0) + 1) +
         " of " + _EH.ErrorMsg.length + " error(s)");
}
function PushErrorMessage(msg){_EH.ErrorMsg[_EH.ErrorMsg.length] = msg;}
function NextError(){$("#lblEHMsg").text(PullErrorMessage(1+GetErrorIndex($("#lblEHMsg").text(), _EH.ErrorMsg.length)));UpdateErrorHandlerSummary();}
function GetErrorIndex(msg, dIndex)
{
    if(_EH.ErrorMsg.length > 0)
    {
        var i=0;
        for(i=0;i<_EH.ErrorMsg.length;i++)
            if(_EH.ErrorMsg[i] == msg)
                 return i;
    }
    return dIndex
}
function PreviousError(){$("#lblEHMsg").text(PullErrorMessage((-1)+GetErrorIndex($("#lblEHMsg").text(), 0)));UpdateErrorHandlerSummary();}
function PullErrorMessage(ind){if(ind < _EH.ErrorMsg.length) return _EH.ErrorMsg[ind]; else return _EH.ErrorMsg[_EH.ErrorMsg.length];}
function HideErrorHandler(){$("#divErorHandler").slideUp('slow',function(){});}
function RemoveAllSymbolsFromNumberString(valueToFormat){return valueToFormat.replace(/\./g,"").replace(/,/g,"");}
function FormatCurrency(valueToFormat){return FormatValueBasedOnCulture(valueToFormat , false);}
function FormatNumber(valueToFormat){return FormatValueBasedOnCulture(valueToFormat , true);}
function FormatValueBasedOnCulture(valueToFormat, isIgnoreDecimal)
{
    //value should be all numbers without anu comman or decimal
    var curVal = valueToFormat;
    var decimalSymbol = ".";
    var thousandSymbol = ",";
    if(SITE_CURRENT_CULTURE == CultureList.deDE){decimalSymbol = ",";thousandSymbol = ".";}
    if(!isIgnoreDecimal)   
        curVal = InsertDecimalSymbol(valueToFormat, decimalSymbol, 2);    
    curVal = FormatValue(curVal, isIgnoreDecimal ? "" : decimalSymbol, thousandSymbol);    
    return curVal;
}
function InsertDecimalSymbol(valueToFormat, decimalSymbol, noOfDecimals){return valueToFormat.substring(0, (valueToFormat.length) - noOfDecimals) + decimalSymbol + valueToFormat.substring((valueToFormat.length) - noOfDecimals, valueToFormat.length);}
function FormatValue(nStr, decimalSymbol, nonDecimalSymbol)
{   
    nStr += '';
    if(decimalSymbol == '')
        x = nStr.split(" ");
    else
        x = nStr.split(decimalSymbol);
    x1 = x[0];
    x2 = x.length > 1 ? decimalSymbol + x[1] : decimalSymbol;    
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + nonDecimalSymbol + '$2');
    }
    return x1 + x2;
}

////////from old vresion

function getDuplicatedElementByIdOrDefault(popupId,name)
{
    if ((popupId == "")||(popupId == undefined))
        return document.getElementById(name);
    if(getPopUpElementById(popupId,name)!=undefined)
        return getPopUpElementById(popupId,name);
    return document.getElementById(name);
}


/////////////

$(document).ready(function()
{	
    SetErrorObjectAttributes();BindOnKeyDownEventToAcceptNumbersOnly();BindAllDateControls();FindAndSetModalPopupLinks();
	_PBI.src = _AdJugSiteURL + '/Images/Loading_animation_big.gif';_CBI.src = _AdJugSiteURL + '/Images/close.gif';
});


