var defaultStatus = "Done";

//
// Constants
//
var CATEGORY_ATTRIBUTE_INHERITPERMISSIONS = 1;
var CATEGORY_ATTRIBUTE_RESERVED = 2;
var CATEGORY_ATTRIBUTE_ACTIVE = 4;
var CATEGORY_ATTRIBUTE_PUBLISHED = 8;
var CATEGORY_ATTRIBUTE_RTL = 16;
var CATEGORY_ATTRIBUTE_INMENU = 32;
var CATEGORY_ATTRIBUTE_NEWWINDOW = 64;
var CATEGORY_PERMISSION_FULL = 1;
var CATEGORY_PERMISSION_READ = 2;
var CATEGORY_PERMISSION_WRITE = 4;
var CATEGORY_PERMISSION_LIST = 8;
var CATEGORY_PERMISSION_CREATE = 16;
var CATEGORY_PERMISSION_DELETE = 32;
var CATEGORY_PERMISSION_READPERM = 64;
var CATEGORY_PERMISSION_WRITEPERM = 128;
var NULL_INT = -1;
var DICTIONARY_TYPE_JOBTITLE=2;

//User Type
var USERTYPE_ADMINISTRATOR= 1;
var USERTYPE_SUPERUSER = 2;
var USERTYPE_TRANSLATOR1 = 3;
var USERTYPE_TRANSLATOR2 = 4;
var USERTYPE_SALESPERSON = 5;
var USERTYPE_COMPANY = 6;
var USERTYPE_EMPLOYEE = 7;
var USERTYPE_SUPERUSER2 = 8;
var USERTYPE_SALESPERSON2 = 9;

//Position Status
var POSITIONSTATUS_OPEN = 1;
var POSITIONSTATUS_CLOSED = 2;
var POSITIONSTATUS_CLOSEDAUTO = 3;

//Company Status
        var COMPANYSTATUS_ACTIVE = 1;
		var COMPANYSTATUS_TEMPORARY = 2;
		var COMPANYSTATUS_INTRODUCTION = 3;
		var COMPANYSTATUS_CLOSED = 4;
		var COMPANYSTATUS_FREEZE = 5;
		var COMPANYSTATUS_PREREN = 8;
		var COMPANYSTATUS_NOTWANTED = 6;
		var COMPANYSTATUS_BLOCKED = 7;
//var COMPANYSTATUS_ACTIVE = 1;
//var COMPANYSTATUS_TEMPORARY = 2;
//var COMPANYSTATUS_INTRODUCTION = 3;
//var COMPANYSTATUS_CLOSED = 4;
//var COMPANYSTATUS_FREEZE = 5;
//var COMPANYSTATUS_NOTWANTED = 6;
		
//Dictionary Status
var DICTIONARYTYPE_ACTIVE = 1;
var DICTIONARYTYPE_WAITINGAPPROVAL = 2;
var DICTIONARYTYPE_NOTACTIVE = 3;

//User Attribute
var USERATTRIBUTE_ACTIVE = 0;
var USERATTRIBUTE_MANAGER = 1;

//
// Global functions
//

function ReturnFalse() {
    return false;
}

function ifnull(a, b)
{
	return a==null ? b : a;
}

function bin2int(a)
{
	var j, i = 0;
	for (j=0; j<a.length; j++)
		i += a[j] << (8 * j);
	return i;
}

function DialogArguments()
{
	this.parent = window;
}

function sessionTimeout(message, silenced, keep)
{
	var o = opener ? opener : top;
	if (window.dialogArguments)
		o = window.dialogArguments.parent;
	if (!silenced)
		alert(message);
	if (keep)
		return;
	if (window != o)
	{
		if (o.sessionTimeout)
			o.sessionTimeout(message, true);
		window.close();
	}
	else
		o.location.href = "default.aspx?sessionexpired=1";
}
function WebService(proxy, readyCallback, url)
{
	proxy.onserviceavailable = readyCallback;
	proxy.useService(url, "svc");
	this.proxy = proxy;
	this.call = function()
	{
		var oCallHandler, oCall, silenced, keep;
		var res;
		if (arguments.length == 1)
			oCall = arguments[0];
		else
		{
			if (typeof(arguments[1]) == "boolean")
			{
				oCall = arguments[0];
				silenced = arguments[1];
				if (typeof(arguments[2]) == "boolean")
					keep = arguments[2];
			}
			else
			{
				oCallHandler = arguments[0];
				oCall = arguments[1];
			}
		}
		if (oCallHandler)
			res = this.proxy.svc.callService(oCallHandler, oCall);
		else if (oCall)
			res = this.proxy.svc.callService(oCall);
		if (oCall.async == false)
		{
			this.checkResult(res, silenced, keep);
			return res;
		}
	}
	this.checkResult = function(res, silenced, keep)
	{	
		if (res.error)
		{
			if (res.errorDetail.code=="timeout")
				sessionTimeout(/^(System\.Web\.Services\.Protocols\.SoapException: )(.*)\n/.exec(res.errorDetail.string)[2], silenced, keep);
			else
				alert("[" + res.errorDetail.code + "]\n" + res.errorDetail.string);
			return false;
		}
		return true;
	}
}
function DataColumn(ColumnName, DataType)
{
	this.ColumnName = ColumnName;
	this.DataType = DataType;
}
function DataTable(TableName)
{
	this.TableName = TableName;
	this.Columns = new Array();
	this.Rows = new Array();
}
function DataSet(xml)
{
	this.load = function(xml)
	{
		if (xml && xml.xml)
			xml = xml.xml;
		var xmldom = new ActiveXObject("Microsoft.XMLDOM");
		xmldom.loadXML(xml ? xml : this.xml);
		var tables = xmldom.selectNodes("//xs:schema/xs:element[@name=\"NewDataSet\" and @msdata:IsDataSet=\"true\"]/xs:complexType/xs:choice/xs:element");
		var table, column, rows, fields;
		var value;
		var i, j, k;
		if (!tables.length)
			return false;
		this.Tables.length = 0;
		for (i=0; i<tables.length; i++)
		{
			table = new DataTable(tables[i].selectSingleNode("@name").value);
			columns = tables[i].selectNodes("xs:complexType/xs:sequence/xs:element");
			for (j=0; j<columns.length; j++)
			{
				column = new DataColumn(columns[j].selectSingleNode("@name").value, columns[j].selectSingleNode("@type").value);
				table.Columns[j] = table.Columns[column.ColumnName] = column;
			}
			columns = table.Columns;
			rows = xmldom.selectNodes("//diffgr:diffgram/NewDataSet/" + table.TableName);
			for (j=0; j<rows.length; j++)
			{
				table.Rows[j] = new Array();
				fields = rows[j].selectNodes("*");
				for (k=0; k<columns.length; k++)
					table.Rows[j][columns[k].ColumnName] = null;
				for (k=0; k<fields.length; k++)
				{
					value = fields[k].text;
					switch (columns[fields[k].nodeName].DataType)
					{
					case "xs:string":
						value = (new String(value)).valueOf();
						break;
					case "xs:int":
					case "xs:long":
					case "xs:double":
					case "xs:decimal":
					case "xs:short":
					case "xs:unsignedByte":
						value = (new Number(value)).valueOf();
						break;
					case "xs:boolean":
						value = (new Boolean(value=="true")).valueOf();
						break;
					case "xs:dateTime":
						//value = new Date(value.replace(/(\d{4})(-)(\d{2})(-)(\d{2})T(\d{2}:\d{2}:\d{2})(\.\d+)([\+-]\d{2})(:)(\d{2})/, "$1/$3/$5 $6 UTC+0000"));
						//alert(value);
						//this is fixing bug of time in the .net 2.0 fixed by Tal Israel
						value = new Date(value.substr(0,4) + '/' + value.substr(5,2)+ '/' + value.substr(8,2) +' '+value.substr(11,2)+':'+value.substr(14,2)+':'+value.substr(17,2));
						break;
					}
					table.Rows[j][k] = table.Rows[j][fields[k].nodeName] = value;
				}
			}
			this.Tables[i] = this.Tables[table.TableName] = table;
		}
		return true;
	}
	this.xml = (xml && xml.xml ? xml.xml : xml);
	this.Tables = new Array();
	if (this.xml)
		this.load();
}

String.prototype.pad = function(char, length)
{
	var i = length - this.length;
	var ret = "";
	for (j=0; j<i; j++)
		ret += char;
	return ret + this;
}

Number.prototype.toGroupedString = function()
{
	var T = "", S = String(this), L=S.length-1, C, j, P = S.indexOf('.')-1;
	if (P<0) P=L;
	for (j=0; j<=L; j++)
	{
		T += C=S.charAt(j);
		if ((j < P) && ((P-j) % 3 == 0) && (C != "-"))
			T += ",";
	}
	return T;
}

Number.prototype.toElapsedTime = function()
{
	var s = this;
	var h = Math.floor(s / 3600);
	s -= h * 3600;
	var m = Math.floor(s / 60);
	s -= m * 60;
	return h.toString() + ":" + m.toString().pad("0", 2) + ":" + s.toString().pad("0", 2);
}

Date.prototype.toShortString = function()
{
	return this.getDate().toString().pad("0", 2) + "/" + (this.getMonth()+1).toString().pad("0", 2) + "/" + this.getFullYear();
}

Date.prototype.toLongString = function()
{
	return this.getDate().toString().pad("0", 2) + "/" + (this.getMonth()+1).toString().pad("0", 2) + "/" + this.getFullYear() + " " + this.getHours().toString().pad("0", 2) + ":" + this.getMinutes().toString().pad("0", 2) + ":" + this.getSeconds().toString().pad("0", 2);
}

Date.prototype.toShortStringUTC = function()
{
	return this.getUTCDate().toString().pad("0", 2) + "/" + (this.getUTCMonth()+1).toString().pad("0", 2) + "/" + this.getUTCFullYear();
}

Date.prototype.toLongStringUTC = function()
{
	return this.getUTCDate().toString().pad("0", 2) + "/" + (this.getUTCMonth()+1).toString().pad("0", 2) + "/" + this.getUTCFullYear() + " " + this.getUTCHours().toString().pad("0", 2) + ":" + this.getUTCMinutes().toString().pad("0", 2) + ":" + this.getUTCSeconds().toString().pad("0", 2);
}

function ArraySearch(a, v)
{
	for (var i=0; i<a.length; i++)
	{
		if (a[i] == v)
			return i;
	}
	return -1;
}

function chng_pic(pic_location,pic)
{
	document[pic_location].src=pic
}



//Cookies Functions////////////////
function setCookie(name, value, years) { 

	if (!years) years = 10; // default to 1 day if empty 

	var expdate = new Date(); 
	expdate.setTime(expdate.getTime() + years*365*24*60*60*1000); 

	document.cookie = name + "=" + value + "; expires=" + expdate.toGMTString(); 
} 

function getCookie(name)
{//alert(document.cookie);
	var cname = name + "=";
	var startOfCookie = document.cookie.indexOf(cname)
	var endOfCookie;
	if (startOfCookie != -1){
		startOfCookie += cname.length; // skip past cookie name
		endOfCookie = document.cookie.indexOf(";", startOfCookie);
		if(endOfCookie != -1)
			return document.cookie.substring(startOfCookie, endOfCookie);
		else
			return document.cookie.substring(startOfCookie, document.cookie.length);
	}
    return null;
	
}


function eraseCookie(name)
{
	setCookie(name,"",-1);
}
function ChangeSize()
		{
		    if(PositionFlag==0)
		    {
		       document.getElementById("CompanyNameDiv").style.position="absolute";
		       document.getElementById("CompanyNameDiv").style.posTop="13";
		       document.getElementById("CompanyNameDiv").style.height="150";
		       document.getElementById("selectCompanyName").style.height="150";
		       document.getElementById("PlayImage").src="../Images/iconUp.gif";
		       PositionFlag=1;
		    }
		    else
		    {
		       document.getElementById("CompanyNameDiv").style.position="relative";
		       document.getElementById("CompanyNameDiv").style.height="40";
		       document.getElementById("selectCompanyName").style.height="40";
		       document.getElementById("CompanyNameDiv").style.posTop="1";
		       document.getElementById("PlayImage").src="../Images/iconDown.gif";
		       PositionFlag=0;
		    }
		}

