Jaboowaki Posted September 14, 2011 Share Posted September 14, 2011 $aEntryID = _OL_ItemFind( $oOutlook, $aFolder[1], $olContact, "[CompanyName]='Name of the Company' And [FullName]='Fullname you search for'", "", "", "EntryID" ) Does this support a wildcard character? I'm trying to search for contacts that CustomerID = 1 ( which most are in my case, it's used to tell my software that it should be visible, CustomerID = 2 means disabled) and CompanyName begins with whatever string is typed into search input. $aEntryID = _OL_ItemFind( $oOutlook, $aFolder[1], $olContact, "[CompanyName]='"&$search&"' And [CustomerID]='1', "", "", "EntryID" ) Thing is I need a partial search for CompanyName with CustomerID to be 1. Is that possible without doing loops to string search? This is how I am doing this now but it it slow. I loop every contact to compare the begining string by length. Any advice? $aEntryID = _OL_ItemFind( $oOutlook, $aFolder[1], $olContact, "[CustomerID]='1'","", "", "EntryID" ) $prog = 100 / $aEntryID[0][0] If IsArray( $aEntryID ) Then $slen = StringLen( $search ) $i = 0 Do $uprog = $uprog + $prog GUICtrlSetData( $PBAR, $uprog ) $i = $i + 1 $aResult = _OL_ItemGet( $oOutlook, $aEntryID[$i][0], "", "FullName,JobTitle,CompanyName,BusinessTelephoneNumber,BusinessAddressStreet,BusinessAddressCity,BusinessAddressState,BusinessAddressPostalCode,BusinessAddressCountry,BusinessFaxNumber,MobileTelephoneNumber,Email1Address,WebPage,Body,CustomerID" ) If $aResult[10][1] <> 2 Then $aTel = StringLeft( $aResult[8][1], 2 ) If $aTel = "+1" Then $Tel = StringTrimLeft( $aResult[8][1], 3 ) Else $Tel = $aResult[8][1] EndIf $str_OL = StringLeft( $aResult[9][1], $slen ) $compar = StringCompare( $str_OL, $search ) If $compar = 0 Then GUICtrlCreateListViewItem( $aResult[9][1] & "|" & $aResult[12][1] & "|" & $Tel & "|" & $aResult[2][1] & "|" & $aResult[5][1] & "|" & $aResult[4][1] & "| ", $hListView ) EndIf EndIf Until $i = $aEntryID[0][0] Link to comment Share on other sites More sharing options...
water Posted September 14, 2011 Author Share Posted September 14, 2011 Haven't tried it but I think it should work: $aEntryID = _OL_ItemFind( $oOutlook, $aFolder[1], $olContact, "[CustomerID]='1', "CompanyName", $search, "EntryID" ) My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
Jaboowaki Posted September 14, 2011 Share Posted September 14, 2011 That works kinda.... example: $search = T, it will find all contacts with "T" in it. I want just the ones that begin with "T". Link to comment Share on other sites More sharing options...
water Posted September 14, 2011 Author Share Posted September 14, 2011 A quick solution would be to change lineIf $sOL_SearchName <> "" And StringInStr($oOL_Item.ItemProperties.Item($sOL_SearchName).value, $sOL_SearchValue) = 0 Then ContinueLoopin function _OL_ItemFind toIf $sOL_SearchName <> "" And StringLeft($oOL_Item.ItemProperties.Item($sOL_SearchName).value, Stringlen($sOL_SearchValue)) <> $sOL_SearchValue Then ContinueLoop My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
water Posted September 18, 2011 Author Share Posted September 18, 2011 Version 0.5.0 has been released. Please test before using in production! For download please see my signature. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
Jaboowaki Posted September 21, 2011 Share Posted September 21, 2011 $oOutlook = _OL_Open() $aFolder = _OL_FolderAccess( $oOutlook, "", $olFolderContacts ) $aEntryID = _OL_ItemFind( $oOutlook, $aFolder[1], $olContact, "[CompanyName]='"&$company&"' AND [FullName]='"&$con&"'", "", "", "EntryID" ) If $aEntryID[0][0] = 0 Then _OL_ItemCreate( $oOutlook, $olContactItem, $aFolder[1], "", "FullName="&$con, "CompanyName="&$company, "BusinessTelephoneNumber="&$BusinessPhone, "BusinessAddressStreet="&$address, "BusinessAddressCity="&$city, "BusinessAddressState="&$state, "BusinessAddressPostalCode="&$zip) $bEntryID = _OL_ItemFind( $oOutlook, $aFolder[1], $olContact, "[CompanyName]='"&$company&"' AND [FullName]='"&$con&"'", "", "", "EntryID" ) _OL_ItemModify( $oOutlook, $bEntryID[1][0], "", "BusinessAddressCountry="&$country, "BusinessFaxNumber="&$fax, "MobileTelephoneNumber="&$cell, "Email1Address="&$email, "Body="&$comment, "CustomerID=1" ) If not @error Then MsgBox( 0, "SUCCESS", "CONTACT CREATED" ) Else $aResult = _OL_ItemGet( $oOutlook, $aEntryID[1][0], "", "CompanyName,FullName,Body" ) $body = $aResult[1][1] & "|" & $comment _OL_ItemModify( $oOutlook, $aEntryID[1][0], "", "FullName="&$con, "CompanyName="&$company, "BusinessTelephoneNumber="&$BusinessPhone, "BusinessAddressStreet="&$address, "BusinessAddressCity="&$city, "BusinessAddressState="&$state, "BusinessAddressPostalCode="&$zip) _OL_ItemModify( $oOutlook, $aEntryID[1][0], "", "BusinessAddressCountry="&$country, "BusinessFaxNumber="&$fax, "MobileTelephoneNumber="&$cell, "Email1Address="&$email, "Body="&$body, "CustomerID=1" ) If not @error Then MsgBox( 0, "SUCCESS", "CONTACT UPDATED" ) EndIfI have a bug in _OL_ItemFind. A pc on my network runs the same XP and MSOffice 2007, this particular pc errors out on that function when _OL_ItemCreate is run and because it has more properties I call: _OL_ItemFind( $oOutlook, $aFolder[1], $olContact, "[CompanyName]='"&$company&"' and [FullName]='"&$contact&"'", "", "", "EntryID,CompanyName,FullName" )to set up the _OL_ItemModify, finding nothing... just on that pc... my pc it works great and my MS7 pc runs great.. I guess I want to know if any bugs like that have been noted? Is there any suggestions to troubleshoot? Link to comment Share on other sites More sharing options...
water Posted September 21, 2011 Author Share Posted September 21, 2011 (edited) You know that you can pass more than 10 properties to a function? Just put all your properties in an array and pass it as $sOL_P1. Example: $oOutlook = _OL_Open() $aFolder = _OL_FolderAccess( $oOutlook, "", $olFolderContacts ) Global $aProperties[15] = ["FullName=" & $con, "CompanyName=" & $company, "BusinessTelephoneNumber=" & $BusinessPhone, _ "BusinessAddressStreet=" & $address, "BusinessAddressCity=" & $city, "BusinessAddressState=" & $state, "BusinessAddressPostalCode=" & $zip, _ "BusinessAddressCountry=" & $country, "BusinessFaxNumber=" & $fax, "MobileTelephoneNumber=" & $cell, "Email1Address=" & $email, "Body=" & $body, "CustomerID=1"] _OL_ItemCreate( $oOutlook, $olContactItem, $aFolder[1], "", $aProperties) Empty elements in the array are ignored. So you can define an array with 100 elements and only use 20. Edited September 21, 2011 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
Jaboowaki Posted September 21, 2011 Share Posted September 21, 2011 As always, I am very impressed with the UDF and the fast response... I learned something new.. It works great. Link to comment Share on other sites More sharing options...
water Posted September 21, 2011 Author Share Posted September 21, 2011 The problem with too many properties to pass to a function when creating/modifying an item was one of the reasons why the Outlook UDF has been extended to the OutlookEX UDF. I hope to surprise you many more times My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
stamandster Posted September 28, 2011 Share Posted September 28, 2011 Is there any way to get the traverse all folders and get each folders size? Like the properties function within outlook. I see the _OL_FolderGet but don't see a size property available. Link to comment Share on other sites More sharing options...
water Posted September 28, 2011 Author Share Posted September 28, 2011 I haven't found a way to access the size via COM. I will investigate the subject and come back with the results My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
water Posted September 30, 2011 Author Share Posted September 30, 2011 (As far as I know) Outlook doesn't seem to offer a way to programmatically access the size properties of a folder. What you can do is use _OL_ItemFind to search a folder and all of its subfolders for e.g. mail items and return the size property of each mailitem. Then add up to the total size of the folder(s). I don't know how accurate this approach will be. But that's how everyone else seems to calculate the size. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
stewy417 Posted October 11, 2011 Share Posted October 11, 2011 Hi, Excellent script! Question...I see where you can get a list of PST files, but is it possible to get a list of currently shared calendars...like the People's Calendars? I also see that there is a $olCalendarSharing in OutlookEX.au3 which says 'Represents a CalendarSharing object', but I don't know how to use it. Any help would be appreciated! Thanks! Link to comment Share on other sites More sharing options...
water Posted October 11, 2011 Author Share Posted October 11, 2011 Hi, I will have a look how to enumerate shared calendars. It will take a few days before I can come up with a solution. The $olCalendarSharing enumeration isn't used in the UDFat the moment. I just include the whole enumeration if I need a single value so a lot of them might be unused. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
water Posted October 14, 2011 Author Share Posted October 14, 2011 I have come to the conclusion that I need to write a new function (_OL_FolderFind). I'm off next week so it will take at least 10 days before I can come up with a solution. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
water Posted October 24, 2011 Author Share Posted October 24, 2011 (edited) Here is an example of the _OL_FolderFind function. Does this function offer what you need? To get a list of all calendars in a folder structure you would call it like this: $oOL = _OL_Open() $aOL_Folders = _OL_FolderFind($oOL, "*", 99, "", 1, $olAppointmentItem) _ArrayDisplay($aOL_Folders) _OL_Close() Edited October 24, 2011 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
Attckdog Posted October 28, 2011 Share Posted October 28, 2011 Hello Water, First off awesome work on OutlookEX! Been trying to get my script to send Thank you for your order Emails for my company. So far I can get the mail to send and everything is great there. My problem lies with the Warnings that pop up. I have compiled the warnings script and placed it in the same dir.(desktop) No errors, Simply doesn't do anything. Let me know if you need any more info. I've tried to include everything. Running outlook 2002 SP3 OutlookEX 2011-09-18 - Version 0.5.0 Here's the code I'm using. expandcollapse popup#include <Excel.au3> #include <OutlookEX.au3> Global $Paused HotKeySet("{PAUSE}", "TogglePause") HotKeySet("{ESC}", "Terminate") ;_ExcelBookOpen(@DesktopDir & "\test.xls") If WinExists("Microsoft Excel") Then $oExcel = _ExcelBookAttach(@DesktopDir & "\test.xls") Else _ExcelBookOpen(@DesktopDir & "\test.xls") $oExcel = _ExcelBookAttach(@DesktopDir & "\test.xls") EndIf$oOL = _OL_Open(True) $sTo = "" $sSubject = "TEST EMAIL: Thank you for your recent Poster Art House Order" $sBody = "" For $i = 2 To 10000 ;Loop$sTo = _ExcelReadCell($oExcel, $i, 7) $CustName = _ExcelReadCell($oExcel, $i, 8) If $sTo = "" Then ConsoleWrite("Cell " & $i & " is Empty Assume Finished, Terminate Script" & @CR) Terminate() EndIf $sBody = "Dear " & $CustName & "," & @CRLF & @CRLF & "This is a test email for thanking customers for their Puchase" & @CRLF & "There will be a set format that uses their amazon contact info" & @CRLF & " " & @CRLF & @CRLF & "Love," & @CRLF & "David" ;************************************** _OL_Wrapper_SendMail($oOL, $sTo, "", "", $sSubject, $sBody)If @error <> 0 Then MsgBox(16, "OutlookEX UDF: _OutlookSendMail Wrapper Script", "Error sending mail. @error = " & @error & ", @extended: " & @extended) Exit EndIf MsgBox(64, "OutlookEX UDF: _OutlookSendMail Wrapper Script", "Mail successfully sent to user '" & $sTo & "'!") Next _OL_Close($oOL) Func TogglePause() $Paused = Not $Paused While $Paused Sleep(100) ToolTip('Script is "Paused"', 0, 0) WEnd ToolTip("") EndFunc ;==>TogglePauseFunc Terminate() MsgBox(0, "Done", "Cell Empty Assuming Done, Press OK to Exit") _OL_Close($oOL) Exit 0 EndFunc ;==>Terminate MsgBox(0, "Exiting", "Press OK to Exit") A true renaissance man Link to comment Share on other sites More sharing options...
water Posted October 28, 2011 Author Share Posted October 28, 2011 When the MsgBox "Mail successfully sent to user" pops up can you please check the task manager if there is a _OL_Warnings.exe running? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
Attckdog Posted October 28, 2011 Share Posted October 28, 2011 Yeah, it's showing on the task manager. Thanks for the extremely fast reply! A true renaissance man Link to comment Share on other sites More sharing options...
water Posted October 28, 2011 Author Share Posted October 28, 2011 (edited) Next question: Is the title of the warning window "Microsoft Office Outlook"? Edit:Screenshots of the security warnings can be found here. Edited October 28, 2011 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
Recommended Posts