// *********************************************************************
//
// Copyright(C) 2007 Perlsoft Information Technologies
// All rights reserved.
//
// THIS IS PROPRIETARY SOURCE CODE OF
// PERLSOFT INFORMATION TECHNOLOGIES.
//
// No part of this file may be reproduced or distributed in 
// any form or by any means without the written approval of 
// the Management of Perlsoft Information Technologies.
// **********************************************************************
// **********************************************************************
//
// @project : Common
// @module  : Utility
// @file    : psprocsys.js
// @author  : Rajith Priyanga
//
// **********************************************************************/

var CWind;
iPSV_NOT_BLANK		= 0;
iPSV_DIGITAL		= 1;
iPSV_INTEGER		= 2;
iPSV_NUMERIC		= 3;
iPSV_ALPHA_NUMERIC	= 4;
iPSV_VALID_NAME		= 5;
iPSV_MIN_LENGTH		= 6;
iPSV_FIXED_LENGTH	= 7;
iPSV_MAX_LENGTH		= 8;
iPSV_VALID_EMAIL	= 9;

String.prototype.trim = function() 
{
	return this.replace(/^\s+|\s+$/g,"");
}

function Validate(sObjID, iValidation, bAllowBlank, sMsg, iLength)
{
	var oObj = document.getElementById(sObjID);
	var bRet = true;
	
	if(oObj==null)
	{
		alert("Validation Failed : Object [" + sObjID + "] Not found");	
		bRet = false;
	}
	else
	{		
		var sStr = oObj.value.trim();
		
		if(bAllowBlank==false)
		{			
			if(sStr=="" || sStr==" " || sStr.length<=0)
			{			
				alert(sMsg);	
				return false;									
			}			
		}
		else
		{
			if(sStr=="" || sStr==" " || sStr.length<=0)
			{					
				return true;									
			}					
		}
		if(iValidation==iPSV_NOT_BLANK)
		{
			if(sStr=="" || sStr==" " || sStr.length<=0)
			{
				alert(sMsg);	
				bRet = false;				
			}
		}
		else if(iValidation==iPSV_DIGITAL)
		{			
			var i = 0;
			var sValid = "0123456789";			
			var iLen = sStr.length;
			var cChar;				
						
			for(i=0; i<iLen; i++)
			{
				cChar = sStr.charAt(i);
				if(sValid.indexOf(cChar) == -1)
				{
					bRet = false;	
					break;				
				}	
			}
			if(bRet==false)
			{
				alert(sMsg);
			}
		}
		else if(iValidation==iPSV_INTEGER)
		{			
			var i = 0;
			var sValid = "0123456789";			
			var iLen = sStr.length;
			var cChar;				
			var bDotFound = false;
			
			cChar = sStr.charAt(0);
			if(sValid.indexOf(cChar) == -1 && cChar!='-')
			{
				bRet = false;					
			}	
						
			for(i=1; i<iLen; i++)
			{
				cChar = sStr.charAt(i);
				if(sValid.indexOf(cChar) == -1)
				{
					bRet = false;	
					break;				
				}				
			}						
			if(bRet==false)
			{
				alert(sMsg);
			}
		}		
		else if(iValidation==iPSV_NUMERIC)
		{			
			var i = 0;
			var sValid = "0123456789.";			
			var iLen = sStr.length;
			var cChar;				
			var bDotFound = false;
			
			cChar = sStr.charAt(0);
			if(sValid.indexOf(cChar) == -1 && cChar!='-')
			{
				bRet = false;					
			}	
						
			for(i=1; i<iLen; i++)
			{
				cChar = sStr.charAt(i);
				if(sValid.indexOf(cChar) == -1)
				{
					bRet = false;	
					break;				
				}
				else if(cChar=='.')
				{
					if(bDotFound==true)
					{
						bRet = false;
						break;
					}
					else
					{
						bDotFound=true;
					}
				}				
			}						
			if(bRet==false)
			{
				alert(sMsg);
			}
		}
		else if(iValidation==iPSV_ALPHA_NUMERIC)
		{	
			var alphaa;
			var hh;
			var iLen = sStr.length;
			for(var j=0; j<iLen; j++)
			{
				alphaa = sStr.charAt(j);
				hh = alphaa.charCodeAt(0);
				if((hh > 47 && hh<59) || (hh > 64 && hh<91) || (hh > 96 && hh<123))
				{
				}
				else	
				{
					bRet = false;					
					break;
				}
			}
			if(bRet==false)
			{
				alert(sMsg);
			}			
		}
		else if(iValidation==iPSV_VALID_NAME)
		{	
			var alphaa;
			var hh;
			var iLen = sStr.length;
			var invalidChars = "/\\\"'`*%$@!";
			
			for(var j=0; j<iLen; j++)
			{
				alphaa = sStr.charAt(j);
				hh = alphaa.charCodeAt(0);
				if((hh > 47 && hh<59) || (hh > 64 && hh<91) || (hh > 96 && hh<123))
				{
				}
				else	
				{					
					if(invalidChars.indexOf(alphaa)!=-1)
					{
						bRet = false;					
						break;
					}
				}
			}
			if(bRet==false)
			{
				alert(sMsg);
			}			
		}
		else if(iValidation==iPSV_MIN_LENGTH)
		{
			if(sStr.length<iLength)
			{
				alert(sMsg);	
				bRet = false;				
			}
		}						
		else if(iValidation==iPSV_MAX_LENGTH)
		{
			if(sStr.length>iLength)
			{
				alert(sMsg);	
				bRet = false;				
			}
		}
		else if(iValidation==iPSV_FIXED_LENGTH)
		{
			if(sStr.length!=iLength)
			{
				alert(sMsg);	
				bRet = false;				
			}
		}		
		else if(iValidation==iPSV_VALID_EMAIL)
		{
			if(IsValidEmail(sStr)==false)
			{
				alert(sMsg);	
				bRet = false;				
			}
		}						
	}	
	return bRet;
}

function IsValidEmail(str) 
{
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1)
	{		   
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
	{		
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)>=lstr-2)
	{
	    return false;
	}

	if (str.indexOf(at,(lat+1))!=-1)
	{
	   return false;
	}

	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
	{
	   return false;
	}

	if (str.indexOf(dot,(lat+2))==-1)
	{
	   return false;
	}
		
	if (AreAllValidChars(str)==false)
	{
	   return false;
	}

	if(str.substring(lstr-2, lstr-1)==dot || str.substring(lstr-1, lstr)==dot)
	{
		return false;
	}
		 
 	return true;				
}

function AreAllValidChars(email) 
{
	var bOK = true;
  	var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
  	for (var i=0; i < email.length; i++) 
  	{
    	var letter = email.charAt(i).toLowerCase();
    	if (validchars.indexOf(letter) != -1)
      		continue;
	    bOK = false;
    	break;
  }
  return bOK;
}

function ShowCalander(destination_ctrl)
{	
	document.getElementById("psdest").value = destination_ctrl;
	CWind = window.open("Calendar.html", "Calendar", 'addressbar,width=190,height=325,title=Caledar');	
}

function OpenPage(page_url, page_title, wnd_width, wnd_height)
{	
	CWind = window.open(page_url, page_title, 'addressbar,title=' + page_title + ',width=' + wnd_width + ',height=' + wnd_height);
	return true;	
}

function OpenInNewWindow(page_url, page_title)
{	
	CWind = window.open(page_url, page_title);
	return true;	
}

function DirectRequest(sFormID, sActionPage)
{
	var oForm = document.getElementById(sFormID);

	//alert(sFormID + " : " + sActionPage);	

	if(oForm!=null)
	{
		oForm.action = sActionPage;
		//oForm.target = "_blank";	// Open in a new window
		oForm.submit();			// Submit the page	
	}	
	return true;
}

function DirectRequestToNewWindow(sFormID, sActionPage)
{
	var oForm = document.getElementById(sFormID);

	//alert(sFormID + " : " + sActionPage);	

	if(oForm!=null)
	{
		oForm.action = sActionPage;
		oForm.target = "_blank";	// Open in a new window
		oForm.submit();			// Submit the page	
	}	
	return true;
}

/*
function Validate(sObjID, iValidation, sMsg)
{
	var oObj = document.getElementById(sObjID);
	var bRet = true;
	
	if(oObj==null)
	{
		alert("Validation Failed : Object [" + sObjID + "] Not found");	
		bRet = false;
	}
	else
	{
		if(iValidation==0)
		{
			if(oObj.value=="" || oObj.value==" " || oObj.value.length<=0)
			{
				alert(sMsg);	
				bRet = false;
			}
		}
	}	
	return bRet;
}
*/

function GoBack()
{
	//alert("History =" + );
	if(window.history.length>0)
	{
		window.history.back();
	}	
	else
	{
		window.close();
	}
	return true;
}

function OnCloseBtn()
{		
	window.close();	
	return true;
}

function AddOption(selectbox, sprompt, sdefault)
{
	var oList = document.getElementById(selectbox);
	var sOp = prompt(sprompt, sdefault);
	if(sOp!=null)
	{
		oList.options[oList.options.length] = new Option(sOp, sOp);
	}
	return true;
}

function RefreshPage()
{
	window.history.go();	
	return true;
}

function RemoveAllOptions (oSelectBox)
{
    var i;
    var lng = oSelectBox.options.length;
    for (i = 0 ; i<lng; i++)
    {
		oSelectBox.remove (0);		
    }
}

function AddOptionToObj(oSelectBox, sVal, sDisp)
{
	oSelectBox.options[oSelectBox.options.length] = new Option(sDisp, sVal);
}

function RemoveSelectedOption(oSelectBox)
{
	var selval = "";
	if (oSelectBox.selectedIndex>=0)
	{
		selval = oSelectBox.options[oSelectBox.selectedIndex].value;
		oSelectBox.remove(oSelectBox.selectedIndex);		
	}
	return selval;
}