﻿/*
    A common JS file used in BKFK system
*/

String.prototype.trim = function(){
	return this.replace(/(^\s*)|(\s*$)/g, "");
}

function IsMatch(target, pattern) 
{
    var regularExpresssion = new RegExp(pattern);
    if(target.match(regularExpresssion)) return true;
    else return false;
}


/**
    on upload button click temporarily disables ajax to perform upload actions
**/

function conditionalPostback(sender, args)
{    
   if(args.EventTarget == "ctl00$ctl00$main$pnlDetail$btnUpload" || args.EventTarget == "ctl00$ctl00$main$pnlDetail$btnNext" 
        || args.EventTarget == "ctl00$ctl00$main$pnlDetail$btnFinish2" || args.EventTarget == "ctl00$ctl00$main$pnlDetail$btnSubmit2" 
        || args.EventTarget == "ctl00$ctl00$main$pnlDetail$btDeleted" || args.EventTarget == "ctl00$ctl00$main$pnlDetail$btnDelete" 
        || args.EventTarget == "ctl00$ctl00$main$pnlDetail$btnStore"
        || args.EventTarget == "ctl00$ctl00$main$pnlDetail$Deleted" || args.EventTarget == "ctl00$ctl00$main$pnlDetail$btnAccept"
        || args.EventTarget == "ctl00$ctl00$main$pnlDetail$linkEmpty" || args.EventTarget == "lnkUpload"
         )
        
   {
       args.EnableAjax = false;
   }
   
   var cancelPattern = ".+lnkCancel$";
   if (IsMatch(args.EventTarget,cancelPattern)) 
   {
       args.EnableAjax = false;
   }
   
   var acceptPattern = ".+btnAccept$";
   if (IsMatch(args.EventTarget,acceptPattern)) 
   {
       args.EnableAjax = false;
   }
   
   var declinePattern = ".+btnDeline$";
   if (IsMatch(args.EventTarget,declinePattern)) 
   {
       args.EnableAjax = false;
   }
   
   var blockPattern = ".+btnBlock$";
   if (IsMatch(args.EventTarget,blockPattern)) 
   {
       args.EnableAjax = false;
   }
   var deleteEntryPattern = ".+lnkDeleteEntry$";
   if (IsMatch(args.EventTarget,deleteEntryPattern)) 
   {
       args.EnableAjax = false;
   }
      var deleteIdeaPattern = ".+lnkDeleteIdea$";
   if (IsMatch(args.EventTarget,deleteIdeaPattern)) 
   {
       args.EnableAjax = false;
   }
} 

/**
    Client validation for login name length,if value does not exists for the source control,
    recursive validate the childNodes of it.
**/
function ValidateLoginNameLength(source,arguments)
{   
    var control = document.getElementById(source.controltovalidate);
    var value = GetValidationValueRecursive(control);
    
    if(value.length < 5 || value.length > 13)
    {
        arguments.IsValid = false;
    }else
    {
         arguments.IsValid = true;
    }    
}

/**
    Get the value recursive of the specified control
**/
function GetValidationValueRecursive(control)
{
    if (typeof(control.value) == "string" && (control.type != "radio" || control.checked == true)) {
        return control.value;
    }
    var i, val;
    for (i = 0; i<control.childNodes.length; i++) {
        val = GetValidationValueRecursive(control.childNodes[i]);
        if (val != "") return val;
    }
    return "";
}

/**
    Login name can not be email addresses.
    Validate the login name to see if it is an email address.
**/
function ValidateLoginNameIsEmail(source,arguments)
{
    var control = document.getElementById(source.controltovalidate);
    var value = GetValidationValueRecursive(control);
    var pattern = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if(pattern.test(value))
    {
        arguments.IsValid = false;
    }else
    {
        arguments.IsValid = true;
    }
}

/**
    Validate password length, password should has at least 5 characters in length
**/
function ValidatePasswordLength(source,arguments)
{
    var control = document.getElementById(source.controltovalidate);
    var value = GetValidationValueRecursive(control);
    
    if(value.length < 5)
    {
        arguments.IsValid = false;
    }else
    {
        arguments.IsValid = true;
    }
}

function Preview()
{
    document.getElementById('ctl00_ctl00_main_pnlDetail_imgPhoto').src = 'file://'+ document.getElementById('ctl00_ctl00_main_pnlDetail_filePhoto').value;
}

/**
    checkAll, check All
**/
function checkAll()
{
    for(var i=0;i<document.all.length;i++)
	{
		if(document.all[i].name == "ck")
		{
			document.all[i].checked = document.all.ckAll.checked;
			
		}
	}
			   
}
    		

/**
    checkOne, check One 
**/    		
function checkOne()
{
   var obj =  window.event.srcElement;			
			//alert(obj.value);
			
	for(var i=0;i<document.all.length;i++)
	{				
		if(document.all[i].name == "ck") 
		{
			if(document.all.item(i).value == obj.value)
			{
				if(document.all[i].checked == true)
				{
					document.all.item(i+1).bgColor = "#0099ff";
					document.all.item(i+2).bgColor = "#0099ff";
					document.all.item(i+3).bgColor = "#0099ff";
				}
				else
				{
					document.all.item(i+1).bgColor = "white";
					document.all.item(i+2).bgColor = "white";
					document.all.item(i+3).bgColor = "white";
				}
			}
		}					
	}
}

/* This function needed to get reference to RadWindow*/
function GetRadWindow()
{
	var oWindow = null;
	if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog
	else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;//IE (and Moz az well)		
	return oWindow;
}

function CloseRadWindow()
{
    if(GetRadWindow() != null)
        GetRadWindow().Close();
}

function ValidateProfileFieldsLength(source,arguments)
{   
    var control = document.getElementById(source.controltovalidate);
    var value = GetValidationValueRecursive(control);
    
    if(value.length > 250)
    {
        arguments.IsValid = false;
    }else
    {
         arguments.IsValid = true;
    }    
}

function StringArray(n) {

    for (var i=0; i < n; i++)

    this[i] = "";

    this.length = n;

}

		

