// main.js



// trim function will remove left and right empty string
function trim(str)
{
    while(str.charAt(str.length-1) == " ")
    {
        str = str.substring(0, str.length-1);
    }
    while(str.charAt(0)==" ")
    {
        str = str.substring(1);
    }

    return str;
}

var ms= "";
///////////////////////////////////
function clickIE() {
if (document.all) {(message);return false;}
}
function clickNS(e) {
if(document.layers||(document.getElementById&&!document.all)) 
{
 if (e.which==2||e.which==3) {(ms);return false;}
}

}
if (document.layers) 
{ document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;
} else { 
 document.onmouseup=clickNS;document.oncontextmenu=clickIE;
 }

document.oncontextmenu=new Function("return false")
/////////////////////////////////////////////////////

// Search and Replace the String

////////////////////
function replaceStr(str)
{
  // special Strings
    var specialStr = new Array("<",
                               ">",
                               "sex"
                               );
   // replace Strings
   var replaceStr = new Array("&lt;",
                               "&gt;",
                               ""
                               );
    // Search and replace
    for(var i=0; i < specialStr.length; i++) {
          while( str.indexOf(specialStr[i])>0 ) {
                  str = str.replace (specialStr[i], replaceStr[i]);
          }
        }

return str;
}
//////////////////////////////

// show topic list
function B() {
document.topic.action="topiclist.php";

}

// add post
function A(input){
return chkaddTopic(input);
}

/////////////// for Registration.shtml

function checkRegistration (input) {



 // list of required fields
 var requiredFields = new Array("email",
                                   "password",
                                  "lastname",
                                   "firstname",
                                   "phone");

    // text to display
    var fieldNames = new Array("Username",
                               "Password",
                               "Last Name",
                               "First Name",
                               "Phone");
    var fieldCheck   = true;

    var fieldsNeeded = "\nPlease provide the following required information:\n\n\t";


    for(var fieldNum=0; fieldNum < requiredFields.length; fieldNum++) {
        if ((trim(input.elements[requiredFields[fieldNum]].value) == "")) {
            fieldsNeeded += fieldNames[fieldNum] + "\n\t";
            fieldCheck = false;
        }
    }
    


// all required fields are entered
    if (fieldCheck == true)
    {

      if ( input.elements[requiredFields[1]].value.length <6) {
        alert ("Password should be at least six characters long");
        input.elements[requiredFields[1]].focus();
        return false;
        }

     if ( input.elements[requiredFields[2]].value.indexOf("http://") >=0 || input.elements[requiredFields[3]].value.indexOf("http://") >=0 ) {
        alert ("Invalid First Name or Last Name");
        input.elements[requiredFields[2]].focus();
        return false;
        }

        if (echeck(input.elements[requiredFields[0]].value) && checkInternationalPhone(input.elements[requiredFields[4]].value )) {
        return true;
        }  else {
        return false;
        }
    }
    // alert if some of fields are missing
    else
    {
        alert(fieldsNeeded);
        return false;
    }

}


////////////////// for add Post
function chkaddPost(input) {

// list of required fields
 var requiredFields = new Array("post_owner",
                                   "post_text"
                                   );

    // text to display
    var fieldNames = new Array("Email Address",
                               "Post Text");
    var fieldCheck   = true;

    var fieldsNeeded = "\nPlease provide the following required information:\n\n\t";

  // Replace Special String in Post Text
    input.elements[requiredFields[1]].value = replaceStr(input.elements[requiredFields[1]].value)

   // check for required fileds
    for(var fieldNum=0; fieldNum < requiredFields.length; fieldNum++) {
        if ((trim(input.elements[requiredFields[fieldNum]].value) == "")) {
            fieldsNeeded += fieldNames[fieldNum] + "\n\t";
            fieldCheck = false;
        }
    }

// all required fields are entered
    if (fieldCheck == true)
    {
        if (echeck(input.elements[requiredFields[0]].value) == true) {
       
        return true;
        }  else {
    
        return false;
        
        }
    }
    // alert if some of fields are missing
    else
    {
        alert(fieldsNeeded);
        return false;
    }


}


/////////////////////

// for add Topic
function chkaddTopic(input) {

 // list of required fields
 var requiredFields = new Array("topic_owner",
                                   "topic_title",
                                   "post_text"
                                   );

    // text to display
    var fieldNames = new Array("Email Address",
                               "Topic Title",
                               "Post Text");
    var fieldCheck   = true;

    var fieldsNeeded = "\nPlease provide the following required information:\n\n\t";

  // Replace Special String in Post Text
    input.elements[requiredFields[1]].value = replaceStr(input.elements[requiredFields[1]].value)
    input.elements[requiredFields[2]].value = replaceStr(input.elements[requiredFields[2]].value)

   // check for required fileds
    for(var fieldNum=0; fieldNum < requiredFields.length; fieldNum++) {
        if ((trim(input.elements[requiredFields[fieldNum]].value) == "")) {
            fieldsNeeded += fieldNames[fieldNum] + "\n\t";
            fieldCheck = false;
        }
    }

// all required fields are entered
    if (fieldCheck == true)
    {
        if (echeck(input.elements[requiredFields[0]].value) == true) {
       
        return true;
        }  else {
    
        return false;
        
        }
    }
    // alert if some of fields are missing
    else
    {
        alert(fieldsNeeded);
        return false;
    }

}

//////////////////////////
// check the required fields are provided

function checkRequiredFields(input)
{


 // list of required fields
 var requiredFields = new Array("firstname",
                                   "lastname",
                                   "email"
                                   ,"phone",
                                   "comments");

    // text to display
    var fieldNames = new Array("First Name",
                               "Last Name",
                               "Email Address",
                               "Phone Number",
                               "Comments");

    var fieldCheck   = true;

    var fieldsNeeded = "\nPlease provide the following required information:\n\n\t";

    input.elements[requiredFields[4]].value = replaceStr(input.elements[requiredFields[4]].value)

   // check for required fileds

    for(var fieldNum=0; fieldNum < requiredFields.length; fieldNum++) {
        if ((trim(input.elements[requiredFields[fieldNum]].value) == "")) {
            fieldsNeeded += fieldNames[fieldNum] + "\n\t";
            fieldCheck = false;
        }
    }

// all required fields are entered
    if (fieldCheck == true)
    {
        if (echeck(input.elements[requiredFields[2]].value) && checkInternationalPhone(input.elements[requiredFields[3]].value )) {
        return true;
        }  else {
        return false;
        }
    }
    // alert if some of fields are missing
    else
    {
        alert(fieldsNeeded);
        return false;
    }

}

// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

// check for integer
function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

// remove ()+- character from the string
function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

// validate phone number
function checkInternationalPhone(strPhone){

if (strPhone == "0123456789" || strPhone =="111111111" || strPhone =="000000000" || strPhone =="1231231234" || strPhone.indexOf("12345")>=0) {
  alert ("Invalid Phone Number");
  return false;

}


s=stripCharsInBag(strPhone,validWorldPhoneChars);

if (  (isInteger(s) && s.length == minDigitsInIPhoneNumber) == false) {
  alert ("Invalid Phone Number");
  return false;
 }
return true;
}

// email address validation
function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1 || str.indexOf(".ru")> 0){
		   alert("Invalid E-mail ID")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail ID")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail ID")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail ID")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail ID")
		    return false
		 }

 		 return true					
	}
