/// <reference name="MicrosoftAjax.debug.js" />
//Light Classes  -------- Start --------- 
function LightUser()
{
    this.ID = 0;
    this.UserName = "";
    this.Power = 0;
    this.FirstName = "";
    this.LastName = "";
    this.Email = "";
    
    this.Sex = 0;  //NotSpecified =0,Male=1,Female=2
    this.BirthDate = new Date();//new DateTime(1901, 1, 1);
    this.Nationality = new Location(0,"");
    this.selfDescription = "";
    this.Addresses = new Array();
}


function LightUserAddress()
{
    this.ID = 0;
    this.Line1 = "";
    this.Zip = "";
    this.City = new Location(0,"");
    this.Country = new Location(0,"");
    //this.State = "";
    this.PhoneNo = "";
    this.FaxNo = "";
}
function Location(id,name)
{
    this.Id = id;
    this.Name = name;
}

//Light Classes  -------- End ---------


//--mhassan 4-2-2008 ------------------------------------------------------
// User Profile Functions
//-------------------------------------------------------------------------


var LabelClass = "FieldLabel";
var TextClass = "InputText";
var CurrentProfileInfo;
function changeFieldAppearance(control,write)
{
    if(AllowEdit)
    {
        if(write)
            {
                replaceStyle(control.id,TextClass);
                control.focus();
            }
        else
            {
                if(control.value != "")
                {
                    replaceStyle(control.id,LabelClass);
                    if(txtAbout)
                        replaceStyle("txtAbout",'')
                }
            }
    }
}

function selectGender(control)
{
    replaceStyle("rdNotSpecified","");
    replaceStyle("rdMale","");
    replaceStyle("rdFemale","");
    
    replaceStyle(control.id,"Selected");
}

//Set Gender
function setGender(gender)
{
    if(gender == 'Male')
    {
        replaceStyle("rdNotSpecified","");
        replaceStyle("rdMale","Selected");
    }
    else if (gender== 'Female')
    {
        replaceStyle("rdNotSpecified","");
        replaceStyle("rdFemale","Selected");
    }
}

function adjustProfileView()
{

    if(txtSpotName.value.length == 0 )
        replaceStyle(txtSpotName.id,TextClass);

    if(txtFirstName.value.length == 0 )
        replaceStyle(txtFirstName.id,TextClass);

    if(txtLastName.value.length == 0 )
        replaceStyle(txtLastName.id,TextClass);

    if(txtDD.value.length == 0 )
        replaceStyle(txtDD.id,TextClass);

    if(txtMM.value.length == 0 )
        replaceStyle(txtMM.id,TextClass);

    if(txtYY.value.length == 0 )
        replaceStyle(txtYY.id,TextClass);

    if(txtAbout.value.length == 0 )
        replaceStyle(txtAbout.id,TextClass);

    if(txtAddress.value.length == 0 )
        replaceStyle(txtAddress.id,TextClass);

    if(txtZip.value.length == 0 )
        replaceStyle(txtZip.id,TextClass);

    if(txtPhone.value.length == 0 )
        replaceStyle(txtPhone.id,TextClass);

    if(txtFax.value.length == 0 )
        replaceStyle(txtFax.id,TextClass);
    
    if(txtFrom.value.length == 0 )
        replaceStyle(txtFrom.id,TextClass);
        
    if(txtCountry.value.length == 0 )
        replaceStyle(txtCountry.id,TextClass);
        
    if(txtCity.value.length == 0 )
        replaceStyle(txtCity.id,TextClass);

}


function validatePassword()
{
    if(txtPassword.value.length == 0 && txtConfirmPassword.value.length > 0 )
        {
            getItem("lblPasswordMessage").style.display = 'block';
            getItem("lblPasswordMessage").innerHTML = 'Please enter valid password to compare.';
            return;
        }
    
    if(txtConfirmPassword.value.length == 0 && txtPassword.value.length > 0 )
        {
            getItem("lblPasswordMessage").style.display = 'block';
            getItem("lblPasswordMessage").innerHTML = 'Please confirm your password.';
            return;
        }
        
    if(!validateCompare(txtPassword.id,txtConfirmPassword.id))
    {
        getItem("lblPasswordMessage").style.display = 'block';
        getItem("lblPasswordMessage").innerHTML = 'Password not matched';
        return;
    }
    
    getItem("lblPasswordMessage").style.display = 'none';
    getItem("lblPasswordMessage").innerHTML = '';
}

function emailExist()
{
    if(txtEmail.value != userEmail)
    {
        if(validateEmail(txtEmail.id))
          {
             getItem("EmailLoader").style.display = 'block';
             Auth.checkMailExistence(txtEmail.value, emailExistComplete);
          } 
        else
          {
            getItem("lblEmailMessage").style.display = 'block';
            getItem("lblEmailMessage").innerHTML = 'Invalid Email';
          }
    }
    else
    {
         getItem("lblEmailMessage").style.display = 'none';
         getItem("lblEmailMessage").innerHTML = '';
    } 
}

function emailExistComplete(result)
{
//alert(result);
getItem("EmailLoader").style.display = 'none';
getItem("lblEmailMessage").style.display = 'block';
    if (result=="true"){
		//alert("Exist");
		replaceStyle("lblEmailMessage","ErrorMsg");
		getItem("lblEmailMessage").innerHTML = txtEmail.value + ' is already in use';
		txtEmail.value = userEmail;
	}
	else
	{
	    replaceStyle("lblEmailMessage","MailAva");
	    getItem("lblEmailMessage").innerHTML = 'Congratulations!, this mail is available';  
	}
}


var addressID = 0;
var userInfo;
// Save user profile
function saveUserProfile()
{
    userInfo = new LightUser();
    var newPassword = "";
    
    //Get Gender
    if(getItem("rdMale").className == "Selected")
        userInfo.Sex = 1;
    else if(getItem("rdFemale").className == "Selected")
        userInfo.Sex = 2;
        
    //
    userInfo.UserName = txtSpotName.value;
    //userInfo.Power = 0;
    userInfo.FirstName = txtFirstName.value;
    userInfo.LastName = txtLastName.value;
    userInfo.Email = txtEmail.value;
    //userInfo.password = "";
    
    if(!EmptyField(txtPassword.id,"") && getItem("lblPasswordMessage").style.display == 'none' )
        newPassword = txtPassword.value;
    else if(getItem("lblPasswordMessage").style.display == 'block')
       {
            showMessage("please confirm your password", 1);
            return;
       }
        
    
    try{
       var bDate = new Date(txtYY.value ,parseInt(txtMM.value) -1 , txtDD.value );
       userInfo.BirthDate = bDate;
        //alert(bDate);
    }
    catch(ex)
    {
        alert(ex);
    }
    
    //userInfo.Nationality;
    if(fromID > 0 )
        {
            userInfo.Nationality = new Location(fromID,fromName);
        }
     
     userInfo.selfDescription = txtAbout.value;   
        
  var address = new LightUserAddress();
  
//Address -------------------------
     if(addressID > 0)
        address.ID = addressID;
     address.Line1 =  txtAddress.value;  
     address.PhoneNo =  txtPhone.value;
     address.FaxNo =  txtFax.value;
     address.Zip =  txtZip.value;
     //Country / City;
     if(countryID > 0 )
        {
            address.Country = new Location(countryID, countryName)
            
            if(cityID  > 0 )
            {
                address.City = new Location(cityID, cityName)
            }
        }
    
    userInfo.Addresses[0] = address;
        
    Auth.saveUserProfile(userInfo,ID,newPassword, SaveUserProfileComplete);

    //userInfo.Addresses = new Array();
}

function SaveUserProfileComplete(result)
{
    //alert(result);
    //updated by mhassan to fix username bug (if user check remember me in access card) 
    //Change user name in interface and cookie
    lblUsetWelcome.innerHTML = "Welcome, " + userInfo.UserName;
    getItem('AccessCardLink').innerHTML = userInfo.UserName;
    USERNAME = userInfo.UserName;
    var userInCookie=readCookie(IDENTIFIER);
    var newCookie = userInfo.UserName;
    if(userInCookie != null && userInCookie != "")
    {
        newCookie += userInCookie.substr(userInCookie.indexOf("|"))
        createCookie(IDENTIFIER,newCookie);
    }


    showMessage("Your profile updates have been saved successfully!", 2);
    // Redirect if result = true
}

function ViewProfile()
{
    location = "/userprofile.aspx?ID=" + ID;
}

/*function ShowSomeOneElseProfile()
{
    location = "/userprofilepreview.aspx?ID=" + SomeOneElseOpenAccessCard;
}*/

function goBack()
{
    history.back();
}


function openTermsPopUp(url)
{
    mywindow = window.open(url,""); 
}










//Added by mhassan
var autoSuggestEnabled = true;
var lastPrefixEntered = "";
var serviceHandler;
var autoSuggestControl;
var prefixText;
var minimumPrefixLength = 1 ;
var resultCount = 10;
var runtimeResultCount = 10;
var completionlistControl;
var completionlistContainer;
var completionlist;
var selectedSearchItem ;
var selectedSearchText = "";
var currentControl ;
var currentList ;


//specific for locations 
var fromID = 0 ;
var fromName = "";
var countryID = 0;
var countryName = "";
var cityID = 0;
var cityName = "";


function autoSuggestSearch(e,ControlName,ListName)
{
currentControl = ControlName;
currentList = ListName;

 if (selectSuggest(e))
 {
    //cancel pervious requests 
    if (serviceHandler!=null)
        serviceHandler.get_executor().abort();

    if(autoSuggestEnabled)
    {
	    autoSuggestControl = getItem(ControlName);
	    prefixText = autoSuggestControl.value ;
	    //reset values
	    selectedSearchText = prefixText;
	    selectedSearchItem = -1;
	    runtimeResultCount = 0;
    	
	    if (trimAll(prefixText) != "" && prefixText.length >= minimumPrefixLength )
	    {
	       // if(prefixText!=lastPrefixEntered)
	        {
	            lastPrefixEntered = prefixText;
    	            
	            if(currentControl.toLowerCase().indexOf("city") > -1 )
	               { 
	                    if(countryID > 0)
	                        serviceHandler = new Auth().getLocationsByKeyword(2,countryID,prefixText,resultCount,  fillSuggestedList ); 
	               }
	            else
	                serviceHandler = new Auth().getLocationsByKeyword(1,0,prefixText,resultCount,  fillSuggestedList ); 
    	        
		    }
	    }
	    else
	    {
	        lastPrefixEntered = "";
	        getItem(currentList).innerHTML = "";
	        getItem(currentList).style.display = "none";
    	    
	    }
    }
   }
}

function fillSuggestedList(result,eventargs)
{

var ListHeader = "<ul id=\"AutoComplete_" + currentList + "\" class=\"completionListElement\" >";
var ListFooter = "</ul>";
var ListItem = "<li class=\"listItem\" onmouseover=\"highlightItem(this.id)\" id=##Id## onmouseout=\"highlightItem(this.id)\" onclick=\"submitText(this)\" >##ItemText##</li>";
var tempListItem;
completionlistContainer = getItem(currentList);
runtimeResultCount = result.length;
for(var i=0;i<result.length;i++)
{
	tempListItem = ListItem.replace("##ItemText##",result[i].Name);
	tempListItem = tempListItem.replace("##Id##",result[i].Id);
	
    ListHeader += tempListItem;
}
if(result.length > 0)
{			
	completionlistContainer.style.display = "block";
	completionlistContainer.innerHTML = ListHeader + ListFooter;
	//highlightItem(0);
}
else
{
    completionlistContainer.innerHTML = "";
	completionlistContainer.style.display = "none";
}

}



function selectSuggest(key)
{
    var completionlist = getItem("AutoComplete_" + currentList);
    try{
	if(key.keyCode == 38) //up key
	{
		if(selectedSearchItem >= 0)
		{
			highlightItem(completionlist.childNodes[selectedSearchItem-1].id);
		}
		
		return false;
					
	}
	else if (key.keyCode == 40)//down key
	{
		if(selectedSearchItem < runtimeResultCount-1)
		{
			highlightItem(completionlist.childNodes[selectedSearchItem+1].id);
	    }
	    
	    return false;
	}
	else if (key.keyCode==13) 
	{
		if(trimAll(selectedSearchText) != "" && selectedSearchItem >=0 )
		   {
		      submitText(completionlist.childNodes[selectedSearchItem]);
		   }
  		return false;
	}
	return true;
	}
	catch(ex){return false;}
}

function submitText(selectedItem)
{
	//autoSuggestEnabled = false;
	
	if(currentControl.toLowerCase().indexOf("from") > -1 )
	    {fromID = selectedItem.id;fromName = selectedItem.innerHTML;}
	else if (currentControl.toLowerCase().indexOf("country") > -1 )
	    {countryID = selectedItem.id;countryName=selectedItem.innerHTML;}
	else if (currentControl.toLowerCase().indexOf("city") > -1 )
	    {cityID = selectedItem.id;cityName= selectedItem.innerHTML;}
	    
    getItem(currentControl).value = selectedItem.innerHTML;
	completionlistContainer.style.display = "none";
}

function highlightItem(itemId)
{
    try{
	        this.className='highlightedListItem'
	        this.className='listItem'
	        completionlist = getItem("AutoComplete_" + currentList);
	        for(var i=0;completionlist.childNodes.length;i++)
	        {
		        if(itemId == completionlist.childNodes[i].id)
		        {
			        completionlist.childNodes[i].className = 'highlightedListItem';
			        selectedSearchItem = i;
			        selectedSearchText = completionlist.childNodes[i].innerHTML;
		        }
		        else
			        completionlist.childNodes[i].className = 'listItem'; 
	        }
	    }
	catch(ex) {}
}

function clearBox(control)
{
    control.value = "";
    
    if(control.id.toLowerCase().indexOf("from") > -1 )
	    {fromID = 0;fromName="";}
	else if (control.id.toLowerCase().indexOf("country") > -1 )
	{
	    countryID = 0;
	    countryName ="";
	    clearBox(txtCity);
	}
	else if (control.id.toLowerCase().indexOf("city") > -1 )
	    {cityID = 0;cityName="";}
}

function HideSuggestedList(id)
{
    if(id.toLowerCase().indexOf("from") > -1 )
	    {
	        if( txtFrom.value != fromName)
	            txtFrom.value = "";
	    }
	else if (id.toLowerCase().indexOf("country") > -1 )
	    {
            if( txtCountry.value != countryName)
	            txtCountry.value = "";
	    }
	else if (id.toLowerCase().indexOf("city") > -1 ) 
	    {
            if( txtCity.value != cityName)
	            txtCity.value = "";
	    }
	    
	    
    setTimeout("HideList('"+id+"')",500);
}

function HideList(id)
{
    getItem(id).innerHTML = '';
}



//Added By Amr ElGarhy 26 Jun 2008
function openProfileTab(tabId)
{
    $get('EditProfile').style.display='none';
    $get('AddClassified').style.display='none';
    $get('MyClassifieds').style.display='none';
    $get('MyFriends').style.display = 'none';
    $get('MyDirectories').style.display = 'none';
    $get('AddDirectory').style.display = 'none';
    
    
    replaceStyle('liMyClassifieds','');
    replaceStyle('liEditProfile','');
    replaceStyle('liMyFriends', '');
    replaceStyle('liMyDirectories', '');
    
    switch(tabId)
    {
    	case 1:
    		$get('EditProfile').style.display = 'block';
    		replaceStyle('liEditProfile', 'Selected');
    		break;
    	case 2:
    		$get('MyClassifieds').style.display = 'block';
    		replaceStyle('liMyClassifieds', 'Selected');
    		break;
    	case 3:
    		$get('MyFriends').style.display = 'block';
    		replaceStyle('liMyFriends', 'Selected');
    		break;
    	case 4:
    		$get('MyDirectories').style.display = 'block';
    		replaceStyle('liMyDirectories', 'Selected');
    		break;
    }
}

function OpenForEditClassified()
{
    $get('MyClassifieds').style.display='none';
    $get('AddClassified').style.display='';
}

function OpenForEditDirectory()
{
	$get('MyDirectories').style.display = 'none';
	$get('AddDirectory').style.display = '';
}

function AddClassified()
{
    PrepareForAddNew(); // this method exist in classified.js
    $get('MyClassifieds').style.display='none';
    $get('AddClassified').style.display='';
}

function AddDirectory()
{
	PrepareForAddNew_Directory();
	$get('MyDirectories').style.display = 'none';
	$get('AddDirectory').style.display = '';	
}

function showOwnerAccesscard(ownerId)
{
    SomeOneElseOpenAccessCard = ownerId;
    showSomeoneElsesAccessCard(); // exist in main.js
}
 
