// JavaScript Document

var mServerUrl = mHost; // don't delete this line, required for the ajax code to work

var mSubmitString = "";



var mServerFile = mServerUrl+"/site_controler.php";

var mDataString ="";

var setCookie = true;

var mIsLogedIn = false;

var mTimerId;

var http;

var mVarCount = 0;

var mUploadTimerStart = false;

var mStatusContent; //this is the status content



//------------------------ site specific global variables ------------------------//

var mSingleEditValue = new Array();

mSingleEditValue[0]="";

mSingleEditValue[1]="";

mSingleEditValue[2]="";

mSingleEditValue[3]="";



var mCurrentGridId;

var mPrayPalRequestList="";

var mOwnerRequestList = "";

var mMouseX;
var mMouseY;

//---------------------------------------- END OF CORE VARIABLES ----------------------------------------//



//-------------------------------------- AJAX SECTION --------------------------------------------------//

var isIE = document.all?true:false;
// If NS -- that is, !IE -- then set up for mouse capture
if (!isIE) document.captureEvents(Event.MOUSEMOVE)

// Set-up to use getMouseXY function onMouseMove
document.onmousemove = getMousePosition;

	function getMousePosition(e) {
	  if (isIE) { // grab the x-y pos.s if browser is IE
		tempX = event.clientX + document.body.scrollLeft
		tempY = event.clientY + document.body.scrollTop
	  } else {  // grab the x-y pos.s if browser is NS
		tempX = e.pageX
		tempY = e.pageY
	  }  
	  // catch possible negative values in NS4
	  if (tempX < 0){tempX = 0}
	  if (tempY < 0){tempY = 0}  
	  // show the position values in the form named Show
	  // in the text fields named MouseX and MouseY
	  mMouseX = tempX;
	  mMouseY = tempY;
	  
	  //document.getElementById("popupBox").innerHTML = "X = "+tempX+", Y= "+tempY;
	  return true
	}


function createRequestObject()

{

	var mRequestObject; //variable to hold the request ofbject

	var mBrowser = navigator.appName; //get the browser name

	

	if(mBrowser == "Microsoft Internet Explorer")

	{

		mRequestObject = new ActiveXObject("Microsoft.XMLHTTP");

	}

	else

	{

		mRequestObject = new XMLHttpRequest();

	}

	return mRequestObject;

}



function submitForm()

{

	http = createRequestObject(); 

	

	http.open('post',mServerFile,true);

	http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

	http.onreadystatechange = handleResponse; 

	showBusyBox();

	http.send(mSubmitString);

	

}

function showBusyBox()

{

	document.getElementById("busy_box").style.display = "block";

}



function hideBusyBox()

{

	document.getElementById("busy_box").style.display = "none";

}



function getObject( obj ) {



  // step 1

  if ( document.getElementById ) {

    obj = document.getElementById( obj );



  // step 2

  } else if ( document.all ) {

    obj = document.all.item( obj );



  //step 3

  } else {

    obj = null;

  }



  //step 4

  return obj;

  }

 function moveObject( obj, e ) {



  

  }

  

function popupOpen(objId) 
{

  var offset = 0;
  obj = document.getElementById(objId);
  
  obj.style.top = "";
  obj.style.top  = (mMouseY + offset) + 'px';

  obj.style.left = (mMouseX + offset) + 'px';
  
  //alert(obj.style.left+","+obj.style.top);
  obj.style.display = "block";

}

  

function popupClose(objId)

{

	document.getElementById(objId).style.display = "block";

}



function handleResponse(){

	

	if(http.readyState == 4|| http.readyState=="complete")

	{ 

		hideBusyBox();

		var response = http.responseXML;

		var mTypeArray = response.getElementsByTagName("type");

		var mPaneArray = response.getElementsByTagName("pane"); // this will hold the return data content pane ids

		var mDataArray = response.getElementsByTagName("data"); //this will hold the data it self that should go to the panes

		for(var i=0;i<mTypeArray.length;i++)

		{

			var mType = mTypeArray[i].firstChild.nodeValue;

			switch(mType)

			{

				case "content":

					var mPane = mPaneArray[i].firstChild.nodeValue;

					var mData = mDataArray[i].firstChild.nodeValue;

					document.getElementById(mPane).innerHTML = mData;

				break;

				case "error":

					var mPane = mPaneArray[i].firstChild.nodeValue;

					var mData = mDataArray[i].firstChild.nodeValue;

					printError( mData,"null",mPane);

				break;

				case "url":

					var mData = mDataArray[i].firstChild.nodeValue;

					location.href = mData;

				break;

				case "reload":

					window.location.href = document.URL;

				break;

				case "alert":

					var mData = mDataArray[i].firstChild.nodeValue;

					alert(mData);

				break;

				case "popup":

				break;

				case "new_window":

					var mData = mDataArray[i].firstChild.nodeValue;

					var mNewWindow = window.open(null,null,"height=400,width=500,status=no,toolbar=no,menubar=no,location=no");

					mNewWindow.document.write(mData);

				break;

				case "jscript":

					var mData = mDataArray[i].firstChild.nodeValue;

					eval(mData);

				break;

				default:

					alert(responseText);

					

				break;

			}

		}

	}

}



//------------------------------------- END OF AJAX CORE -----------------------------------------------//



//--------------------------------- INTERNAL FUNCTIONS TO WORK WITH SYSTEM ----------------//

function isEmpty(mString)

{

	//this is a simple javascript function that returens wether the string is empty and will display the error

	return ((mString=="")?true:false);

}

function freeError(mContainer,mDivId)

{

	document.getElementById(mDivId).style.display = "none";

	document.getElementById(mDivId).innerHTML="";

	if(mContainer!="null")

		document.getElementById(mContainer).className="mFormField";

}

function printError(mMessage,mContainer,mDivId)

{

	

	document.getElementById(mDivId).style.display = "block";

	document.getElementById(mDivId).innerHTML = "<span class='error'>"+mMessage+"</span>";

	if(mContainer!="null")

		document.getElementById(mContainer).className="error_class";

}

function isDate(mDate) //yyyy-mm-dd

{

	var mReg = /^\d{4}-?\d\d-?\d\d$/;

	if(mReg.test(mDate)==false)

		return false

	else

	{

		mDateArray = mDate.split("-");

			

		if((mDateArray[1]<=12 ) && (mDateArray[2]<=31))

			return true;

		else

			return false;

			

	}

}

function isRange(mNumber,mMinVal,mMaxVal)

{

	if(mNumber>=mMinVal && mNumber<=mMaxVal)

		return true;

	else

		return false;

}

function isCurency(mNumber)

{

	var mReg = /^\d+(\.\d\d)?$/;

	if(mReg.test(mNumber)==false)

		return false

	else

		return true;

}

function isFloat(mNumber)

{

	var mReg = /^(\d)+(\.\d\d)?$/;

	if(mReg.test(mNumber)==false)

		return false

	else

		return true;

}

function isNumber(mNumber)

{

	var mReg = /^\d+$/;

	if(mReg.test(mNumber)==false)

		return false

	else

		return true;

}

function isQty(mNumber)

{

	var mReg = /^\d+$/;

	if(mReg.test(mNumber)==false)

		return false

	else

	{

		if(mNumber != 0)

		{

			return true;

		}

		else

			return false;

	}

}

function isEmail(mEmail)

{

	var mReg = /^(([\-\w]+)\.?)+@(([\-\w]+)\.?)+\.[a-zA-Z]{2,4}$/;

	if(mReg.test(mEmail)==false)

		return false

	else

		return true;

}

function isString(mString)

{

	var mReg = /^[a-zA-Z]+$/;

	if(mReg.test(mString)==false)

		return false

	else

		return true;

}



function getErrorCount(mArray)

{

	var mErrorCount = 0;

	for(i=0;i<mArray.length;i++)

		if(mArray[i]==true)

			mErrorCount++;

	

	return mErrorCount;

}

function isPassword(mPassword,mPasswordRe)

{

	if(isEmpty(mPassword))

		return "mPassword";

	

	if(isEmpty(mPasswordRe))

		return "mRePassword";

	else if(mPassword != mPasswordRe)

		return "mMissmatch";

	else

		return "true";

}



function validateForm(mFormData)

{

	mErrorCount = 0; // place outside the main for loop

	//for loop gose here

	mReturnString = "";

	

	for(i=0;i<mFormData.length;i++)

	{

		mError = false;

		mTestString = mFormData[i];//"mTxtFirstName|isEmpty~Please Enter Frist Name";

		//break the string in to data arrays

		mItemArray = mTestString.split("#");

		mDataArray = mItemArray[1].split("~");

		var mFormObjectValue = document.getElementById(mItemArray[0]).value;

		//switch the functinos and call it accordingly with the error messages

		

		switch(mDataArray[0])

		{

			

			case "null":

				mError = false;

			break;

			case "isEmpty":

				if(isEmpty(mFormObjectValue))

				{

					mError = true;

					printError(mDataArray[1],mItemArray[0],mItemArray[0]+"Error");

				}

				else

				{

					mError = false;

					freeError(mItemArray[0],mItemArray[0]+"Error");

				}

			break;

			case "isCurency":

				if(!isCurency(mFormObjectValue))

				{

					mError = true;

					

					printError(mDataArray[1],mItemArray[0],mItemArray[0]+"Error");

				}

				else

				{

					mError = false;

					freeError(mItemArray[0],mItemArray[0]+"Error");

				}

			break;

			case "isFloat":

				if(!isFloat(mFormObjectValue))

				{

					mError = true;

					printError(mDataArray[1],mItemArray[0],mItemArray[0]+"Error");

				}

				else

				{

					mError = false;

					freeError(mItemArray[0],mItemArray[0]+"Error");

				}

			break;

			case "isNumber":

				if(!isNumber(mFormObjectValue))

				{

					mError = true;

					printError(mDataArray[1],mItemArray[0],mItemArray[0]+"Error");

				}

				else

				{

					mError = false;

					freeError(mItemArray[0],mItemArray[0]+"Error");

				}

			break;

			case "isDate":

				if(!isDate(mFormObjectValue))

				{

					mError = true;

					printError(mDataArray[1],mItemArray[0],mItemArray[0]+"Error");

				}

				else

				{

					mError = false;

					freeError(mItemArray[0],mItemArray[0]+"Error");

				}

			break;

			case "optpwd":

				if(mFormObjectValue=="")

				{

					mError=false;

					break;

				}

			case "isPassword":

				

				//alert(mFormObjectValue,document.getElementById("mTxtPassword").value);

				switch(isPassword(mFormObjectValue,document.getElementById("mTxtRePassword").value))

				{

					case "mPassword":

						mError = true;

						printError("Please enter password.","mTxtPassword","mTxtPasswordError");

					break;

					case "mRePassword":

						mError = true;

						freeError("mTxtPassword","mTxtPasswordError");

						printError("Re-enter the password.","mTxtRePassword","mTxtRePasswordError");

					break;

					case "mMissmatch":

						mError = true;

						freeError("mTxtPassword","mTxtPasswordError");

						printError("Password Missmatch.","mTxtRePassword","mTxtRePasswordError");

					break;

					case "true":

						mError = false;

						freeError("mTxtPassword","mTxtPasswordError");

						freeError("mTxtRePassword","mTxtRePasswordError");

					break;

				}

				

			break;

			case "isEmail":

				if(!isEmail(mFormObjectValue))

				{

					mError = true;

					printError(mDataArray[1],mItemArray[0],mItemArray[0]+"Error");

				}

				else

				{

					mError = false;

					freeError(mItemArray[0],mItemArray[0]+"Error");

				}

			break;

			case "fckContentCheck":

				var mContent = getFckContent(mItemArray[0],true);

				//alert("Content "+mContent);

				if(mContent=="")

				{

					mError = true;

					printError(mDataArray[1],"null",mItemArray[0]+"Error");

				}

				else

				{

					mError = false;

					freeError("null",mItemArray[0]+"Error");

					mFormObjectValue = mContent;

				}

			break;

			case "fckContentnull":

				var mContent = getFckContent(mItemArray[0],true);

				mError = false;

				freeError("null",mItemArray[0]+"Error");

				mFormObjectValue = mContent;

			break;

		}

		

		if(mError == true)

			mErrorCount++;

		else

			mReturnString = mReturnString+mItemArray[0]+"="+mFormObjectValue+"&";

	}

	

	// place outside the for loop

	if(mErrorCount == 0)

		return mReturnString;

	else

		return "null";

}



function stristr( haystack, needle, bool ) {

    // Case-insensitive strstr()

    // 

    // +    discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_stristr/

    // +       version: 804.1712

    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

    // *     example 1: stristr('Kevin van Zonneveld', 'Van');

    // *     returns 1: 'van Zonneveld'

    // *     example 2: stristr('Kevin van Zonneveld', 'VAN', true);

    // *     returns 2: 'Kevin '



    var pos = 0;



    pos = haystack.toLowerCase().indexOf( needle.toLowerCase() );

    if( pos == -1 ){

        return false;

    } else{

        if( bool ){

            return haystack.substr( 0, pos );

        } else{

            return haystack.slice( pos );

        }

    }

}



function getFckContent(mObj,mEncode)

{

	var oEditor = FCKeditorAPI.GetInstance(mObj) ; // create the editor object

	// Get the Editor Area DOM (Document object).

	

	//-------------------- use this code if you want the source code of the content--------//

	//-------- that is the real xhtml--------------------------------------------------------//

	//var oDOM = oEditor.EditorDocument ; 

	//mContent = escape(oDOM.body.innerHTML);

	//--------------------------------------------------------------------------------------//

	

	//--------------- USE BELOW IF YOU ONLY NEED THE FORMATED XHTML CONTENT---------------//

	

	if(mEncode==true)

		mContent = escape(oEditor.GetXHTML(true));

	else

		mContent = oEditor.GetXHTML(true);

	

	var mBrContent = escape('<br type="_moz" />');

	if(mContent==mBrContent)

		mContent="";

	

	

	return mContent;

}







function addListElement(mListVar,mNewVal) // this method adds an element to a given list list is separated by '|' character

{

	if(mListVar=="")

	{

		mListVar = mNewVal;

	}

	else

	{

		

		var mArrayVar = mListVar.split(",");

		var mValueExists = false;

		for(i=0;i<mArrayVar.length;i++)

		{

			if(mArrayVar[i]==mNewVal)

			{

				mValueExists = true;

				break;

			}

		}

		

		if(mValueExists==false)

			mListVar += ","+mNewVal;

		

	}

	return mListVar;

}



function removeListElement(mListVar,mValue)

{

		var mArrayVar = mListVar.split(",");

		var mNewList = "";

		for(i=0;i<mArrayVar.length;i++)

		{

			if(mArrayVar[i]!=mValue)

			{

				if(mNewList=="")

					mNewList = mArrayVar[i];

				else

					mNewList += ","+mArrayVar[i];

			}

		}

		return mNewList;

}



function updateSingleValue(mInputObject,mAction,mValidateType)

{

	

	var mFormData;

	switch(mValidateType)

	{

		case "isEmpty":

			mFormData = new Array(

							  mInputObject+"#isEmpty~Please enter valid value."

							 );

		break;

	}

	

	mReturnValue = validateForm(mFormData);

	

	if(mReturnValue !="null")

	{

		//closeit();

		mHiddenData = document.getElementById(mInputObject+"Hidden").value;

		mReturnValue += "mAction="+mAction+"&hidden_data="+mHiddenData;

		mSubmitString = mReturnValue;

		//alert(mSubmitString);

		submitForm();

	}

}



function cancellSingleUpdate()

{

		if(mSingleEditValue[0] != "")

		{

			document.getElementById(mSingleEditValue[0]).innerHTML = mSingleEditValue[1];

			document.getElementById(mSingleEditValue[2]).innerHTML = mSingleEditValue[3];

		}

		mSingleEditValue[0]="";

		mSingleEditValue[1]="";

		mSingleEditValue[2]="";

		mSingleEditValue[3]="";

		

}





function editText(mTargetContainer,mInputObject,mUpdateContainer,mServerData)

{

	cancellSingleUpdate();

	mContainerText = document.getElementById(mTargetContainer).innerHTML;

	mSingleEditValue[0] = mTargetContainer;

	mSingleEditValue[1] = mContainerText;

	mSingleEditValue[2] = mUpdateContainer;

	var mInputId = "mTxt"+mTargetContainer;

	var mInputErrorId = mInputId+"Error";

	var mInputHiddenId = mInputId+"Hidden";

	var mInputString = "";

	switch(mInputObject)

	{

		case "text":

			mInputString = "<input type='text' id='"+mInputId+"' name='"+mInputId+"' class='mFormField' value='"+mContainerText+"' /><div class='mErrorHidden' id='"+mInputErrorId+"'></div><input type='hidden' id='"+mInputHiddenId+"' name='"+mInputHiddenId+"' value='"+mServerData+"' />";

		break;

		case "textarea":

			mInputString = "<textarea id='"+mInputId+"' name='"+mInputId+"' style='width:70%;' rows='3' class='p_class'>"+mContainerText+"</textarea><div class='mErrorHidden' id='"+mInputErrorId+"'></div><input type='hidden' id='"+mInputHiddenId+"' name='"+mInputHiddenId+"' value='"+mServerData+"' />";			

		break;

	}

	document.getElementById(mTargetContainer).innerHTML = mInputString;

	mSingleEditValue[3] = document.getElementById(mUpdateContainer).innerHTML;

	document.getElementById(mUpdateContainer).innerHTML = "[<a href=\"javascript:updateSingleValue('"+mInputId+"','update_"+mInputId+"','isEmpty');\" class=\"gen_link\">Update</a>&nbsp;&nbsp;<a href=\"javascript:cancellSingleUpdate();\" class=\"gen_link\">Cancel</a>]";

}



function updateGridId(mId)

{

	mCurrentGridId = mId;

}



var mElementText; //this will hold the static text from the clearData Function



function clearData(mStaticText,mElementId)

{

	var mData = document.getElementById(mElementId).value;

	if(mData==mStaticText)

	{

		document.getElementById(mElementId).value = "";

	}

}



function restoreData(mStaticText,mElementId)

{

	var mData = document.getElementById(mElementId).value;

	if(isEmpty(mData))

		document.getElementById(mElementId).value = mStaticText;

}



/*------------------------------------------ end of common functions --------------------------------*/



function loadPage(mPageCat,mPage)

{

	

	mSubmitString = "mAction=load_page&cat="+mPageCat+"&page="+mPage;

	submitForm();	

}